本地Facts

    我们可以通过Facts来获取目标主机的系统信息,当这些信息还不能满足我们的功能需要时,可以通过编写自定义的Facts模块来实现。当然,还有一个更简单的实现方法,就是通过本地Facts来实现。只需在目标设备 /etc/ansible/facts.d 目录自定义JSON、INI或可执行文件的JSON输出,文件扩展名要求使用 ".fact" ,这些文件都可以作为Ansible的本地Facts。

例如,在目标设备192.168.1.21定义三个变量,供以后playbook进行引用。

【 /etc/ansible/facts.d/preferences.fact 】

[general]

max_memory_size=32

max_user_processes=3730

open_files=65535

然后在主控端运行 ansible 192.168.1.21 -m setup -a "filter=ansible_local"   filter作用是从setup输出的信息中摘出该 ansible_local 项。

可看到定义的结果,返回结果如下:

。。。

注意返回JSON的层次结构,preferences(facts文件名前缀)-->general(INI的节名)-->key:value(INI的键与值),最后就可以在我们的模板或playbook中通过以下方式进行调用:

{{ ansible_local.preferences.general.open_file }}

参考资料:http://ju.outofmemory.cn/entry/104885

原文地址:https://www.cnblogs.com/wjoyxt/p/5020064.html