获取远程主机系统信息:Facts
Facts 是一个非常有用的组件,类似于 Saltstack 的 Grains 功能,实现获取远程主机的系统信息,包括主机名、IP 地址、操作系统、分区信息、硬件信息等,可以配合 playbook 实现更加个性化、灵活的功能需求,比如在 httpd.conf 模板中引用 Facts 的主机名信息作为 ServerName 参数的值。通过运行 ansible hostname -m setup 可获取 Facts 信息,例如,获取 192.168.1.21 的 Facts 信息需运行:ansible 192.168.1.21-m setup,结果如下:
192.168.1.21 | success >> {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"192.168.1.21"
],
"ansible_all_ipv6_addresses": [
"fe80::250:56ff:fe28:632d"
],
"ansible_architecture": "x86_64",
"ansible_bios_date": "07/02/2012",
"ansible_bios_version": "6.00",
"ansible_cmdline": {
"KEYBOARDTYPE": "pc",
"KEYTABLE": "us",
"LANG": "en_US.UTF-8",
"SYSFONT": "latarcyrheb-sun16",
"quiet": true,
"rd_NO_DM": true,
"rd_NO_LUKS": true,
"rd_NO_LVM": true,
"rd_NO_MD": true,
"rhgb": true,
"ro": true,
"root": "UUID=b8d29324-57b2-4949-8402-7fd9ad64ac5a"
},
……
在模板文件中这样引用 Facts 信息:
{{ ansible_devices.sda.model }}
{{ ansible_hostname }}