redhat(14)-ansible(3)-事实变量
程序员文章站
2022-05-29 09:42:37
...
主机名,网络设备名,IP地址,CPU,可用磁盘等是主机的事实变量。
获取事实变量把其放在playbook中是经常要做的事情。
1.系统自带 ansible_facts[]
2.自定义事实变量
3.示例
1.系统自带 ansible_facts[]
查看所有事实变量:
现在 过去
ansible_facts['hostname'] ansible_hostname
以下用命令行的方式查看了一些基本信息:
ansible -m setup localhost
# setup模块 主机名 参数
ansible -m setup serverb -a 'filter=ansible_default_ipv4'
ansible -m setup serverb -a 'filter=ansible_eth0'
ansible -m setup serverb -a 'filter=ansible_facts['hostname']'
ansible -m setup serverb -a 'filter=ansible_facts['fqdn']'
ansible -m setup serverb -a 'filter=ansible_facts['default_ipv4']['address']'
ansible -m setup serverb -a 'filter=ansible_facts['interface']'
ansible -m setup serverb -a 'filter=ansible_facts['devices']['vda']['partitions']['vda1']'
ansible -m setup serverb -a 'filter=ansible_facts['dns']['nameservers']'
ansible -m setup serverb -a 'filter=ansible_facts['kernel']'
ansible-playbook --syntax-check facts.xml #语法检查
ansible-playbook facts.yml #运行
2.自定义事实变量
完成一项任务,通常还需要一些其它的变量。
2.1 文件夹:/etc/ansible/facts.d
2.2 文件以 .fact结尾
3.示例
1.创建 vim /etc/ansible/facts.d/myfacts.fact
[packages]
web_package = httpd
db_package = mariadb-server
[users]
user1 = joe
user2 = jane
2.调用变量 编写 myfacts.yml
---
- name: fact dump
hosts: serverb
tasks:
- name: print ansible_facts.ansible_local['myfacts']['users']['user1']
debug:
var: ansible_facts.ansible_local['myfacts']['users']['user1']
3.运行ansible-playbook
ansible all --list-hosts
ansible-playbook --syntax-check myfacts.yml #语法检查
ansible-playbook myfacts.yml #运行