Write by lyc at 2019-10-29
参考博文:
ansible笔记(16):变量(三)

Ansible facts

facts 组件是用来收集主机信息的,收集的信息是json格式的,任何一项都可以被当作变量在playbook,jinja2模板中引用。

1.获取主机信息

1
2
3
4
$ ansible test -m setup

# filter筛选指定的facts信息
$ ansible localhost -m setup -a "filter=*ipv4"

2.引用 ansible_facts

  • facts数据的顶级key为ansible_facts,每次playbook会自动注册成变量。
  • 所以facts数据可以直接通过变量引用,甚至顶级key_name ansible_facts都要省略
1
2
3
4
---
- hosts: webserver
tasks:
- debug: var=ansible_eth0.ipv4.address

3.gather_facts: no 不采集主机信息

忽略采集操作系统信息,提高执行效率。

1
2
3
--- # copy test
- hosts: webserver
gather_facts: no # 默认yes

4.local facts

  • 目标主机默认的local facts目录是 /etc/ansible/facts.d
  • 该目录下支持.fact文件后缀,内容是json
  • task执行[Gathering Facts]任务时,会把远程主机local facts下定义的变量引用进来