admin 管理员组

文章数量: 887007

本地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 }}

 

 

参考资料:

 

本文标签: 本地Facts