魔法变量
Ansible默认会提供一些内置的变量以实现一些特定的功能,称之为魔法变量
1. hostvars
2. inventory_hostname
3. group_names
4. groups
5. play_hosts
6. inventory_dir
7. inventory_file
一、hostvars
用于获取某台受管节点的相关变量,通过hostvars来指定受管节点和需要获取的信息,并将这整个语句作为一个变量
基本格式
"{{ hostvars['受管节点'].ansible_该节点网卡名称.ipv4.address }}"
可以使用debug模块输出hostvars
- debug:
var: hostvars
- debug:
var: hostvars.ansible2.ansible_facts.fqdn
- debug:
var: hostvars['ansible2'].ansible_facts.fqdn
- debug:
var: hostvars['ansible2'].ansible_facts.hostname
- debug:
var: hostvars['ansible2'].ansible_ens33.ipv4.address
注意:
1、 [''] 的用法和 . 的用法一样
2、 ansible2不能使用ip地址来取代,只能使用主机名或别名
二、inventory_hostname
用来识别正在运行的管理节点的主机名,若在inventory中定义过别名那么会识别别名,若是IP就会识别IP,其中若是别名较长,使用inventory_hostname_short可以只获取最前一个域
- debug:
var: inventory_hostname
- debug:
var: inventory_hostname_short
三、group_names
用于标识当前正在执行task的目标主机位于的主机组
- debug:
var: group_names
四、groups
识别inventory文件中所有主机组,并且可以枚举出其中的所有主机
- debug:
var: groups
TASK [debug] *******************************************************************
ok: [ansible2] => {
"groups": {
"all": [
"ansible3",
"ansible2"
],
"ungrouped": [],
"web1": [
"ansible2"
],
"web2": [
"ansible3"
],
"web3": [
"ansible2",
"ansible3"
]
}
}
五、play_hosts
当前的playbook将在哪些节点上运行
- debug:
var: play_hosts
六、inventory_dir
主机清单所在的目录
- debug:
var: inventory_dir
七、inventory_file
哪个是主机清单文件
- debug:
var: inventory_file