在我配置我的Vagrant之后...我可能会在配置期间遇到错误...如何从错误中重新启动,而不是从头开始做任何事情?
vagrant destroy -f && vagrant up
我可能会收到错误......
PLAY RECAP ********************************************************************
to retry, use: --limit @/path/to/playbook.retry
我想从失败的地方恢复......似乎可以通过消息来完成...使用--limit
....但是当我在流浪的情境中使用它时它不会'工作..
答案 0 :(得分:7)
您可以修改Vagrantfile
并添加ansible.start_at_task变量。
然后,您可以使用$ vagrant reload --provision
Vagrant Reload docs
但是,因为Ansible游戏是幂等的,所以你并不需要start_at_task
。您可以使用上面的reload命令重新运行该配置。
答案 1 :(得分:1)
你可以在你的流浪盒上用ansible-playbook做一个ansible运行。诀窍是使用ansible创建的库存文件。它位于你的.vagrant foler。
ansible-playbook playbook.yml -i vagrant/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory --start-at-task='MY_TASK'
Vagrantfile:将您的角色分配给流浪汉机器。
config.vm.provision "ansible" do |ansible|
ansible.verbose = "v"
ansible.playbook = "../playbook.yml"
ansible.groups = {
"web" => ['vm01app'],
"db" => ['vm01db'],
}
end
答案 2 :(得分:-1)
如果您使用shell作为配置程序而不是Ansible(为此您需要在VM本身中安装Ansible),您可以运行如下命令:
test -f "/path/to/playbook.retry" && (ansible-playbook site.yml --limit @/path/to/playbook.retry; rm -f "/path/to/playbook.retry") || ansible-playbook site.yml
这基本上会检查重试文件是否存在,如果存在,它会运行具有该限制的playbook并删除重试文件,如果不存在则会运行整个playbook。当然,如果您使用的是Vagrant,则需要使用sudo运行这些命令,但这很容易添加。