ansible管理事实
概念简介
ansible事实是ansible在受管主机上自动检测到的变量,事实中包含与主机相关的信息,可以像play中的常规变量、条件、循环等的值一样使用。
为受管主机收集的事实
主机名称、内核版本、网络接口、IP地址、操作系统版本、各种环境变量、CPU数量、内存、可用磁盘空间等
每个受管主即都有自己的事实变量,借助事实可用方便的查看主机状态,
通常每个play执行第一个任务前会自动运行setup模块收集事实。
查看受管主机收集事实变量的方式
运行一个收集事实并使用debug模块显示ansible_facts变量值的简短playbook
例:
- name: facthosts: hosttasks:- name: print factsdebug:var: ansible_facts
## debug:
## msg: >
## fact1 {{ ansible_facts.fqdn }}
## fact2 {{ ansible_facts.dns }}
ansible事实示例
事实 | 变量 |
---|---|
短主机名 | ansible_facts['hostname'] |
完全限定域名 | ansible_facts['fqdn'] |
IP地址 | ansible_facts['defaul_ipv4']['address'] |
网络接口名称列表 | ansible_facts['interfaces'] |
DNS服务器列表 | ansible_facts['dns']['nameservers'] |
当前内核版本 | ansible_facts['kernel'] |
/dev/vdb3磁盘分区大小 | ansible_facts['devices']['vdb']['paratitions']['vdb3']['size'] |
引用字典值可以使用两种方式:dname['key'] 或 dname.key
关闭事实收集
将ansible playbook中关键字gather_facts的值设为no
gather_facts: no
创建自定义事实
默认情况下setup模块会从受管主机中/etc/ansible/facts.d目录的文件和脚本中收集自定义事实,文件或脚本必须以.fact后缀名结尾才能被使用。
动态自定义事实脚本必须输出JSON格式的事实,并且必须是可以执行文件。
魔法变量
常用魔法变量:
hostvars: 包含受管主机的变量
group_names: 当前受管主机所属的所有组
groups: 清单中所有组和主机
inventory_hostname: 清单中配置的当前受管主机的名称