2

可能会遗漏一些明显但可靠的剧本(这对于通过 ssh 连接的机器网络非常有用)没有一种机制来跟踪哪些剧本已针对哪些服务器运行,然后在节点弹出时重新运行/签到?该剧本工作正常,但如果在某些机器关闭/离线时执行它,那么这些主机会错过这些更改……我确信解决方案不能是一次又一次地运行所有剧本。

也许它是关于搜索正确的术语......如果有人理解这个问题,请帮助应该搜索什么,因为这必须是一个常见的要求......这是否称为自动配置(只是猜测)?

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

4

2 回答 2

3

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

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

重试文件

retry_files_enabled = True
retry_files_save_path = ~

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

假设如果您执行以下命令

ansible-playbook update_network.yml -e group=rollout1

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

步骤 3:第一次运行后,只需使用 while 循环或 crontab 以如下循环格式运行 ansible-playbook

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

这会自动运行,直到您在 ~/update_network.retry 文件中耗尽主机。

于 2015-05-27T04:40:02.757 回答
1

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

AnsibleWorks AWX 有一种方法可以在启动时或在配置时签入,从而自动触发剧本运行。这可能是您在这里要求的更多:

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

于 2013-10-19T03:52:16.490 回答