Linux高级运维-事实、变量、循环
1.事实指的是受控主机自动检测到的变量
[root@afei weixin
]# ansible webservers
-i inventory
-m setup
|less
192.168.240.134 | SUCCESS
=> {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"192.168.240.134",
"192.168.122.1"
],
"ansible_all_ipv6_addresses": [
"fe80::7c16:db91:85ec:a36c"
],
"ansible_apparmor": {
"status": "disabled"
},
"ansible_architecture": "x86_64",
"ansible_bios_date": "07/29/2019",
"ansible_bios_version": "6.00",
2.用变量取出所有事实facts
[root@afei weixin
]# vim playbook
.yml
---
- hosts
: all
tasks
:
- name
: make facts
debug
:
var
: ansible_facts
[root@afei weixin
]# ansible
-playbook
-C playbook
.yml
},
"hw_timestamp_filters": [],
"macaddress": "52:54:00:d5:ed:f8",
"mtu": 1500,
"promisc": true
,
"timestamping": [
"tx_software",
"rx_software",
"software"
],
"type": "ether"
},
"virtualization_role": "guest",
"virtualization_type": "VMware"
}
}
PLAY RECAP
****************************************************************************
192.168.240.134 : ok
=2 changed
=0 unreachable
=0 failed
=0 skipped
=0 rescued
=0 ignored
=0
3.用变量取出事实facts中的ip部分
[root@afei weixin
]# vim playbook
.yml
---
- hosts
: all
tasks
:
- name
: make facts
debug
:
var
: ansible_facts
['default_ipv4']['address']
~
[root@afei weixin
]# ansible
-playbook
-C playbook
.yml
PLAY
[all
] ****************************************************************************
TASK
[Gathering Facts
] ****************************************************************
ok
: [192.168.240.134]
TASK
[make facts
] *********************************************************************
ok
: [192.168.240.134] => {
"ansible_facts['default_ipv4']['address']": "192.168.240.134"
}
PLAY RECAP
****************************************************************************
192.168.240.134 : ok
=2 changed
=0 unreachable
=0 failed
=0 skipped
=0 rescued
=0 ignored
=0
4.关闭事实收集
[root@afei weixin
]# vim playbook
.yml
---
- hosts
: all
gather_facts
: no
tasks
:
- name
: make facts
debug
:
var
: ansible_facts
['default_ipv4']['address']
[root@afei weixin
]# ansible
-playbook playbook
.yml
PLAY
[all
] ****************************************************************************
TASK
[make facts
] *********************************************************************
ok
: [192.168.240.134] => {
"ansible_facts['default_ipv4']['address']": "VARIABLE IS NOT DEFINED!"
}
PLAY RECAP
****************************************************************************
192.168.240.134 : ok
=1 changed
=0 unreachable
=0 failed
=0 skipped
=0 rescued
=0 ignored
=0
5.即使关闭了,也可以用setup临时收集事实
[root@afei weixin
]# vim playbook
.yml
---
- hosts
: all
gather_facts
: no
tasks
:
- name
: feige
setup
:
- name
: make facts
debug
:
var
: ansible_facts
['default_ipv4']['address']
[root@afei weixin
]# ansible
-playbook
-C playbook
.yml
PLAY
[all
] ****************************************************************************
TASK
[feige
] **************************************************************************
ok
: [192.168.240.134]
TASK
[make facts
] *********************************************************************
ok
: [192.168.240.134] => {
"ansible_facts['default_ipv4']['address']": "192.168.240.134"
}
PLAY RECAP
****************************************************************************
192.168.240.134 : ok
=2 changed
=0 unreachable
=0 failed
=0 skipped
=0 rescued
=0 ignored
=0
6.创建自定义事实
[root@localhost
~]# mkdir
-p
/etc
/ansible
/facts
.d
[root@localhost
~]# cd
/etc
/ansible
/facts
.d
/
[root@localhost facts
.d
]# vim feige
.facts
.d
[packages
]
web_package
= httpd
db_package
= mariadb
-server
[users
]
user1
= joe
user2
= jane
[root@localhost
~]# ansible all
-m setup
|less
转载请注明原文地址:https://tech.qufami.com/read-24759.html