Jav*_*ano 13 vagrant ansible vagrantfile
有没有办法从失败的地方重试剧本?
我正在开始
vagrant provision
Run Code Online (Sandbox Code Playgroud)
yda*_*coR 18
我不太清楚你为什么要这样做,因为Ansible剧本应该是幂等的,因此从一开始就重新运行整个事情应该是完全没问题的.
也就是说,如果你确实需要这个,Ansible在失败的playbook结尾处公开了一个重试机制,如下所示:
PLAY RECAP ********************************************************************
to retry, use: --limit @/home/user/playbook.retry
Run Code Online (Sandbox Code Playgroud)
如果你直接在盒子上,你可以运行以下内容:
ansible-playbook playbook.yml --limit @/home/user/playbook.retry
Run Code Online (Sandbox Code Playgroud)
要使其作为Vagrant的配置程序可用,您需要添加另一个命名配置器,以便您的Vagrantfile可能如下所示:
Vagrant.configure("2") do |config|
# ... other configuration
# Does the normal playbook run
config.vm.provision "bootstrap", type: "ansible" do |bootstrap|
bootstrap.playbook = "playbook.yml"
end
# Picks up from any failed runs
# Run this with: "vagrant provision --provision-with resume"
config.vm.provision "resume", type: "ansible" do |resume|
resume.playbook = "playbook.yml"
resume.limit = "--limit @/home/user/playbook.retry"
end
end
Run Code Online (Sandbox Code Playgroud)
正如Vagrantfile的评论中所指出的那样,这将尝试运行playbook.ymlplaybook和playbook.retry在第一次失败的运行中创建的重试游戏vagrant up.如果playbook.yml失败则会自动尝试并恢复(并且可能会失败,因为您尚未解决失败的原因)然后退出.
然后,您可以修复您的剧本或库存中需要修复的内容,然后运行vagrant provision --provision-with resume以运行调用的调配块resume,以便playbook.yml在最初调配实例时从失败的地方获取.
但是要注意limit,playbook 上的选项将意味着在上一个剧本失败之前收集的任何事实/变量将无法用于重试尝试.我不确定在运行重试之前是否有一种好方法可以重新收集这些事实,并且正如所提到的那样,无论如何我绝对倾向于重新运行整个剧本.
| 归档时间: |
|
| 查看次数: |
12399 次 |
| 最近记录: |