gpt4 book ai didi

vagrant - 有没有办法从失败的地方重试剧本?

转载 作者:行者123 更新时间:2023-12-03 23:33:42 25 4
gpt4 key购买 nike

有没有办法从失败的地方重试剧本?

我开始

vagrant provision

最佳答案

我不太确定你为什么要这样做,因为 Ansible 剧本应该是幂等的,所以从一开始就重新运行整个事情应该完全没问题。

也就是说,如果您确实需要这样做,Ansible 会在失败的剧本结束时公开一个重试机制,如下所示:

PLAY RECAP ******************************************************************** 
to retry, use: --limit @/home/user/playbook.retry

如果您直接在盒子上,则可以按照以下方式运行:
ansible-playbook playbook.yml --limit @/home/user/playbook.retry

要使其作为 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

正如 Vagrantfile 的评论中所指出的,这将尝试同时运行 playbook.yml剧本和 playbook.retry重试在第一次运行失败时创建的播放 vagrant up .如果 playbook.yml失败然后它会自动尝试并恢复(并且可能会失败,因为您还没有解决它失败的原因)然后退出。

然后,您可以修复您的剧本或库存中需要修复的内容,然后运行 ​​ vagrant provision --provision-with resume运行名为 resume 的配置块从哪里取 playbook.yml最初配置实例时失败。

请注意, limit playbook 上的选项意味着在上一个 playbook 失败之前收集的任何事实/变量将无法用于重试尝试。我不确定在运行重试之前是否有一种很好的方法来重新收集这些事实,并且如上所述,无论如何我肯定倾向于在失败时重新运行整个剧本。

关于vagrant - 有没有办法从失败的地方重试剧本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com