我正在使用vagrant和ansible配置虚拟机,并且工作正常。 ansible playbook克隆了一个git repo,安装它并运行一个服务守护进程。
我还想要一个vagrant命令执行一个单独的“更新”手册,该手册从git仓库中提取最新信息,安装并重启守护进程。
像这样的用法会很好。
Vagrant.configure("2") do |config|
# Default
config.vm.provision "ansible" do |ansible|
ansible.playbook = "playbook.yml"
end
# Update
config.vm.provision "ansible", name="update" do |ansible|
ansible.playbook = "update.yml"
end
end
然后我可以用vagrant --provision-with update
运行它。这样的事情可能吗?我想避免在框中输入这样的更新。
答案 0 :(得分:14)
我不确定为什么这个人的答案被删除了,因为它是正确的。至于vagrant 1.7.0,你可以name provisions。
以下工作:
Vagrant.configure("2") do |config|
# Default
config.vm.provision "main", type: "ansible" do |ansible|
ansible.playbook = "playbook.yml"
end
# Update
config.vm.provision "update", type: "ansible" do |ansible|
ansible.playbook = "update.yml"
end
end
您可以使用vagrant provision --provision-with <foo>
执行其中任何一个。
但是,如果您执行vagrant up
,则所有配置程序都将运行,这是不可取的。作为解决方案,我运行vagrant up --no-provision
然后vagrant provision --provision-with main
作为默认值,我将其放入Makefile中。