如果之前有人问过这个问题,我深表歉意,但我可能没有在搜索中使用正确的术语......
在业余时间,我使用 Ansible 管理有限数量的主机(运行 Debian Stretch 的台式机和笔记本电脑)。我的“安装程序手册”在所有具有不同硬件的主机上创建单一配置,以使管理更加容易。我现在不时手动运行更新程序角色,并且每隔一段时间我会发现一个有用的调整,然后我将其部署到那些在线的主机上。但是:他们中的一些人很少来办公室,如果他们可以进行更新,那么确定我仍然需要在该机器上部署哪些调整总是很麻烦......
我当然可以:
- 将纪元时间戳 (
{{ ansible_date_time.epoch }}
) 写入每个主机上可以检索并设置为事实的文件 - 为每个新调整创建一个新任务,添加一个带有时代时间戳的标签和一个条件来检查时代事实 > 时代标签
- 成功运行剧本后更新主机上的纪元时间戳
这是应该怎么做的吗?
这不是使用 Ansible 的方式。您的剧本的编写方式应该与您之前是否应用过配置集无关(“幂等性”)。如果是这样,您只需应用最新版本的剧本,您的系统最终应该处于正确状态。
这可能是ansible-pull的一个很好的用例。非永久在线的主机可以配置为在连接到办公室网络时运行 ansible-pull。
然而,这并没有改变创建幂等剧本和角色的需要。如果剧本的运行时间是一个问题,则可以选择使用
stat
模块来设置条件以跳过更长的运行任务。选择器是这里的一个选项,但需要手动管理。因此,加快剧本本身的执行时间可能会更好。