有一个多计算机的Vagrant设置(在这里被截断为两台计算机),如下所示:
Vagrant.configure(2) do |config|
config.vm.define "xfcevm" do |xfcevm|
xfcevm.vm.box = "generic/ubuntu1904"
xfcevm.vm.hostname = "xfcevm"
end
config.vm.define "gnomevm" do |gnomevm|
gnomevm.vm.box = "generic/fedora30"
gnomevm.vm.hostname = "gnomevm"
end
config.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.memory = "2048"
vb.cpus = 1
vb.customize ["modifyvm", :id, "--vram", "32"]
end
config.vm.provision "ansible" do |ansible|
ansible.verbose = "v"
ansible.compatibility_mode = "2.0"
ansible.playbook = "setup.yml"
end
config.vm.provision "ansible", run: 'always' do |ansible|
ansible.verbose = "v"
ansible.compatibility_mode = "2.0"
ansible.playbook = "tests.yml"
end
# halt here
end
如果测试剧本顺利通过,那么我想在tests.yml
剧本结束后立即停止该机器。如何从Vagrantfile或创建另一个Ansible任务来做到这一点?
您可以在测试手册的末尾发出shutdown
命令。仅在其余任务成功后才播放。
- name: shutdown machine
become: true
command: shutdown -h now
请参见shutdown --help
使命令适应您的特定需求(例如,使用halt
代替poweroff
)