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

时间:2013-10-18 11:58:16

标签: ansible

可能会遗漏一些显而易见的东西但是安全的游戏书(对于ssh连接的机器网络非常有效)没有机制来跟踪哪些游戏书针对哪些服务器运行然后重新运行节点弹出/签入?该剧本工作正常,但如果在某些机器关闭/离线时执行,那么这些主机会错过这些更改......我确信解决方案不能一次又一次地运行所有的剧本。

也许是关于谷歌搜索正确的条款...如果有人理解这个问题,请帮助搜索应该搜索的内容,因为这必须是一个常见的要求......这叫做自动配置(只是猜测)?

寻找一种安全的特定方式,因为我喜欢它的两件事(基于Python和SSH ......不需要额外的客户端部署)

2 个答案:

答案 0 :(得分:1)

通常解决方案确实是再次运行剧本 - 有很多方法可以编写剧本,确保您可以一次又一次地运行剧本而不会产生有害影响。对于像这样的持续配置修复,有些人选择使用cron来运行playbooks。

AnsibleWorks AWX有一种方法可以执行on-boot或on-provision checkin,自动触发playbook运行。这可能是你在这里要求的更多:

http://www.ansibleworks.com/ansibleworks-awx

答案 1 :(得分:1)

有一种内置方式可以做到这一点。通过使用重试概念,我们可以在失败的主机上完成重试。

步骤1:检查您的ansible.cfg文件是否包含

重试文件

retry_files_enabled = True
retry_files_save_path = ~

步骤2:当您运行带有所有必需主机的ansible-playbook时,它将创建一个带有playbook名称的.retry文件。

假设您执行以下命令

ansible-playbook update_network.yml -e group=rollout1

它将在主目录中创建一个重试文件,其中包含失败的主机。

Step3:第一次运行后,只需使用while循环或crontab以循环格式运行ansible-playbook

while true
do
ansible-playbook update_network.yml -i ~/update_network.retry
done

这会自动运行,直到〜/ update_network.retry文件中的主机耗尽为止。