ここではVagrantの比較的新しい人で、新しいUbuntu VMを起動するたびに手動でインストールプロセスを実行することを排除しようとしています。
インストールが完了した後の私の通常のプロセスは、マシンのすべてのソフトウェアをapt-get update
およびapt-get dist-upgrade -y
、次に再起動してすべてのアップグレードを有効にします。そのために、私はVagrantfileを次のように作成しました:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
end
config.vm.provision "Shell", inline: <<-Shell
apt-get update
apt-get dist-upgrade -y
shutdown -r now
Shell
end
これは主に仕事をします-VMパッケージの更新としての出力を見ることができます-しかし、再起動してvagrant ssh
その中に、私のファイルは/vagrant
。共有フォルダーが何らかの理由で再マウントされていないことを想定しています。
私の最初の質問は次のとおりだと思います:シェルプロビジョニングの一部としてこのようにシステムを更新することは理にかなっていますか?もしそうなら、どうすればゲストを再起動してもまだ/vagrant
共有をマウントしましたか?
これがまさに vagrant-reload プラグインの目的です。インストールしたら、再読み込みするプロビジョニングのポイントにconfig.vm.provision :reload
を追加するだけです。
プロビジョニングが完了した後でのみ(プロビジョニングのステップ間ではなく)再起動する場合は、トリガーを使用してこれを実現できます。
config.trigger.after [:provision] do |t|
t.name = "Reboot after provisioning"
t.run = { :inline => "vagrant reload" }
end
これには、プラグインをインストールする必要がないという利点があります。
トリガーに関する詳細情報 ここ 。