使用ansible set_fact模块来定义持久性事实?

Ben*_*Ben 13 ansible

我想定义一个剧本,它可以建立关于我的主机的事实,可以在其他剧本中使用.set_fact模块声称能够做到这一点... http://docs.ansible.com/set_fact_module.html - 但它不起作用...我定义的事实在运行中调用set_fact之后可用游戏书 - 我希望能够使用ansible all -m setup并查看在为每个主机收集的事实中的某个地方定义的事实......

我试着查看set_fact模块的代码 - 但我找到的只是文档字符串... https://github.com/ansible/ansible-modules-core/blob/19b328c4df2157b6c0191e9144236643ce2be890/utilities/logic/set_fact.py

sen*_*ile 2

首先,set_fact 模块仅设置运行期间可用的事实。对于持久性事实,您需要:

- 静止的 -

  • 将它们定义为以下之一:
    • 变量/
    • 组变量/
    • 主机变量/

- 动态的 -

后者是我通常选择做的,因为它的设置非常简单,并且事实在所有主机上始终可用,即使您正在执行以下操作:

  • 在连接到 nagios 主机时获取所有主机的所有事实,以便生成其配置文件。

  • set_fact 现在可用于缓存变量并在执行之间保留它们。请参阅 http://docs.ansible.com/ansible/latest/playbooks_variables.html#fact-caching 和 http://docs.ansible.com/ansible/latest/set_fact_module.html (2认同)