> 文章列表 > ansible管理事实

ansible管理事实

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: 清单中配置的当前受管主机的名称