ファイル「test.box」から「Vagrantfile」を作成した後、ファイル「Vagrantfile」を編集して、たとえば次のように挿入します。
config.vm.provision: shell, path: './test.sh'
これを行った後、変更をファイル test.box に保存するにはどうすればよいですか?
ファイル「test.box」から「Vagrantfile」を作成した後、ファイル「Vagrantfile」を編集して、たとえば次のように挿入します。
config.vm.provision: shell, path: './test.sh'
これを行った後、変更をファイル test.box に保存するにはどうすればよいですか?
私の目標は、コマンド「vagrant up / vagrant provision」を実行するたびにファイル シェルを実行することです。
これを行うために、次のことを行いました。
私は(Packerで)ファイル「test.box」を作成しました
コマンド「init test.box vagrant」で Vagrantfile を作成します。
このステップでは、ファイル Vagrantfile 入力を編集します。次に例を示します。
config.vm.provision: shell, path: './file.sh'
そのため、コマンド「vagrant up / vagrant provision」を実行するたびに、彼は「file.sh」を実行します。
私の問題は、この変更を保存する方法がわからないことです。
私があなたを正しく理解していれば。
vagrantfile を取得し、必要なすべての変更
を行い、packer.json ファイルにセクションを追加します。
"post-processors": [
{
"type": "vagrant",
"keep_input_artifact": false,
"compression_level": 1,
"vagrantfile_template": "MyCustom.vagrantfile",
"output": "box/box_with_custom_vagrantfile.box"
}
]
質問を完全に理解しているかどうかはわかりませんが、説明させてください。
ボックスは Vagrant 環境のパッケージ形式です。ボックスの詳細については、ドキュメント ( https://docs.vagrantup.com/v2/boxes.html )を参照してください。
このボックスから、vagrant は、定義した Vagrantfile を使用して VM を作成します。この Vagrantfile でプロビジョニング手順が定義されている場合、それらは VM を初期化したときに実行されます (初めて実行するときは、VM を起動するたびに実行するプロビジョナーを定義するvagrant up
こともできます)。
VM を起動するたびにプロビジョナーを実行するには、次のものが必要です。
config.vm.provision :shell, :path => "./test.sh", :run => 'always'
VM を停止するために実行するときはvagrant halt
、システムをシャットダウンするだけなので、インストールしたものはすべて VM に残りvagrant up
ます。次に VM で作成したすべてのものを実行すると、利用できるようになります。
vagrant destroy
vmからすべてのファイルを完全に消去するため、後で実行するvagrant up
と、vmは最初から作成されます
したがって、vm に変更を加えて、それを新しいボックスとして使用したい場合は、 を使用してvm をパッケージ化vagrant package
する必要があります。packageについて詳しく読むことができます。これにより、新しい Vagrantfile で使用できる新しいボックスが生成されます。