ansible - 针对不可用的主机运行 ansible playbook(停机/离线)

标签 ansible

可能缺少一些明显的东西,但 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/

相关文章:

python - Ansible 使用解析字符串和循环更新 Dict Var

ssh - Ansible:权限被拒绝

python - 抑制 Ansible Ad Hoc 警告

ansible - 任务内部对 `item` 的 Ansible 字典引用的别名?

ansible - 请解释此算法以获取字符串的所有排列

loops - 在 Ansible playbook 的 with_items 循环中注册变量

continuous-integration - Ansible : Using regular expression in the module "copy"

python - 分子在运行基本测试时提示 "[703] Should change default metadata: description"

ansible - 如何使用ansible的listen_ports_facts模块

php - 为什么 mysql CLI 可以连接,而 WordPress 却不能?