文章目录
fact简介
ansible有一个模块叫setup,用于获取远程主机的相关信息,并可以将这些信息作为变量在playbook里进行调用。而
setup模块获取这些信息的方法就是依赖于fact。
# ansible test -m setup
10.1.61.187 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"10.1.61.187"
],
"ansible_all_ipv6_addresses": [
"fe80::f816:3eff:fe4f:6611"
],
"ansible_apparmor": {
"status": "disabled"
},
"ansible_architecture": "x86_64",
"ansible_bios_date": "04/01/2014",
"ansible_bios_version": "Ubuntu-1.8.2-1ubuntu1~cloud0",
...output omitted...
}
setup获取的这些信息,都是可用于该主机的变量。
setup模块其他用法示例:
# 查看主机内存信息
ansible 10.212.52.252 -m setup -a 'filter=ansible_*_mb'
# 查看地接口为eth0-2的网卡信息
ansible 10.212.52.252 -m setup -a 'filter=ansible_eth[0-2]'
# 将所有主机的信息输入到/tmp/facts目录下,每台主机的信息输入到主机名文件中(/etc/ansible/hosts里的
ansible all -m setup --tree /tmp/facts
自定义fact
1.手动设置fact
ansible除了能获取到预定义的fact的内容,还支持手动为某个主机定制fact。称之为本地fact。本地fact默认存放于被控
端的 /etc/ansible/facts.d 目录下,如果文件为 ini 格式或者 json 格式,ansible会自动识别。以这种形式加载的fact是key为 ansible_local 的特殊变量。
下面是一个简单的示例,在ansibler主控端定义一个 ini 格式的custom.fact文件内容如下:
[general]
package = httpd
service = httpd
state =