我有一些Playbook,我在主控主机上启动,并在远程主机上运行特定操作。这是一个推动" mode - 活动由主控主机启动。
我的几个主机在给定时间内关闭,显然在这种状态下无法运行剧本。这导致主机是最新的,而其他主机则不是。
要解决此问题,我可以定期在主控主机上运行剧本(例如通过cron
),但这不是特别有效。
Ansible中是否存在内置方式来反转流,是从远程主机启动主服务器上可用的手册,以便在该远程主机上运行它?
我可以想象远程主机可以ssh到master(例如在启动时),然后以主机作为参数触发playbook(或者围绕这个想法的东西)但是我肯定更喜欢使用Ansible功能而不是重新发明它。
答案 0 :(得分:5)
有一个名为ansible-pull的脚本,它反转了Ansible的默认推送架构。 Ansible开发人员还提供了example playbook。
答案 1 :(得分:3)
使用ansible-pull -d /root/playbooks -i 'localhost,' -U git@bitbucket.org:arbabnazar/pull-test.git --accept-host-key
模式非常简单直接,这个例子可能对您有所帮助:
1. --accept-host-key: adds the hostkey for the repo url if not already added
2. -U: URL of the playbook repository
3. -d: directory to checkout repository to
4. –i localhost,: This option indicates the inventory that needs to be considered.
Since we're only concerned about one host, we use -i localhost,.
选项详情:
sapply
有关详细信息,请参阅此tutorial