可能缺少一些明显的东西,但 ansible playbook(非常适合 ssh 连接的机器网络)没有一种机制来跟踪哪些 playbook 已针对哪些服务器运行,然后在那时重新运行节点弹出/ checkin ?该剧本工作正常,但如果在某些机器停机/离线时执行它,那么这些主机就会错过这些更改......我确信解决方案不能是一次又一次地运行所有剧本。
也许是关于谷歌搜索正确的术语…如果有人理解这个问题,请帮助搜索什么,因为这一定是一个常见的要求…这是否称为自动配置(只是猜测)?
正在寻找一种具体的方式,因为我喜欢它的两点(基于Python和SSH......不需要额外的客户端部署)
最佳答案
有一种内置的方法可以做到这一点。通过使用重试概念,我们可以在失败的主机上完成重试。
第1步:检查您的ansible.cfg文件是否包含
重试文件
retry_files_enabled = True
retry_files_save_path = ~
第 2 步:当您使用所有必需的主机运行 ansible-playbook 时,它将创建一个带有 playbook 名称的 .retry 文件。
假设您执行以下命令
ansible-playbook update_network.yml -e group=rollout1
它将在您的主目录中创建一个重试文件,其中包含失败的主机。
第三步:第一次运行后,只需以如下循环格式运行 ansible-playbook,并使用 while 循环或 crontab
while true
do
ansible-playbook update_network.yml -i ~/update_network.retry
done
这会自动运行,直到 ~/update_network.retry 文件中的主机耗尽为止。
关于ansible - 针对不可用的主机运行 ansible playbook(停机/离线),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19449114/