获取远程主机系统信息: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 }}