2016-09-27 6 views
0

Vagrantfileとそれに付随するシェルスクリプトを書いて、スクリプトが実行/実行されるようにしますユーザーがそのVMに対してvagrant upを実行するのは初めてです。これは、このシェルスクリプトが一度だけ発生する必要のあるあらゆる種類のシステムサービスをインストールするためです。ドキュメントから、バグのシェルプロビジョニングスクリプトは冪等であるかOTOですか?

Vagrant.configure("2") do |config| 
    config.vm.provision "shell", path: "init-services.sh" 
end 

しかし、私が言うことができないがinit-services.shが毎回実行される場合:私はのような何かを行うことができるかもしれないよう

shell provisioner docsによれば、に見えますユーザーはvagrant up(この場合、冪等であるように注意深く書く必要があります)、またはボックスが最初にプロビジョニングされているときにスクリプトを1回だけ実行するかどうかを指定します。

の場合はスクリプトを1回だけ実行します(システムに新しいサービスを追加したい場合は、どのようにスクリプトを更新しますか)。

答えて

2

しかし、ドキュメントから私はinit-services.shが実行されるかどうかはわかりませんが、ユーザーが迷惑なことをするたびに(念入りに書かなければなりません)またはボックスが最初にプロビジョニングされているときにスクリプトを1回だけ実行するかどうかを指定します。

はいスクリプトは、vagrant upの間に初めてスピンアップされたときにのみ実行されます。あなたは

Vagrant.configure("2") do |config| 
    config.vm.provision "shell", path: "init-services.sh", :run => 'always' 
end 

(も、あなたがこのような場合には必要のない何かが)毎回それを実行すると、それだけでスクリプトを一度実行しない場合、どのようにベイグラントが更新を扱うんたくされたオプションがあります(もし私たちがマシンに新しいサービスを追加したいと思ったら)スクリプトに? vagrant provisionに固有の呼び出しがまだマシンがすでに初期化かされた天気を実行するスクリプトを強制します

は、あなたがこのために使用できる2つのコマンドがあります。

  • 放浪チェックスクリプト内の更新はどのようなものではないでしょうが、既存のVMをspiningすると、この時点でプロビジョニングスクリプト
  • を実行する際に、それだけで、再び全体のスクリプトを実行しますvagrant up --provisionを呼び出します。特定のアップデートを実行する必要がある場合は、スクリプトファイルでこれを自分で管理する必要があります。

    あなたはdoc

    でどのようにプロビジョニング作業について少し詳細を読むことができます
    関連する問題