{% for xx in xxxs %}
loop.index --代表索引从1开始
loop.index0--代表索引从0开始
loop.last --值为 布尔 true代表是最后一个元素
loop.first --值为 布尔 true代表是最后一个原始
{% endfor %}
groups是个对象,包括主机组的信息(hosts文件的信息),里面包括all[],ungrouped[] 这两个数组是默认有的, 其他组为自己定义的主机组的名称
ansible_default_ipv4.address
用法: {{ ansible_default_ipv4.address }}
- name: "设置vip"
set_fact:
current_vip: "{{ virtual_ipaddress[my_idx] }}"
loop: "{{ groups | list | difference('[ungrouped,all]') }}"
loop_control:
index_var: my_idx
when: item == ansible_default_ipv4.address
group_names 主机组的名称的数组
group_names[0] 代表当前的主机组名称
主机名变量:ansible_fqdn
cpu变量:ansible_processor_vcpus
版本号变量:ansible_distribution_major_version
hostvars变量
groups变量
group_names变量
inventory_hostname变量
inventory_hostname_short变量
inventory_dir变量
inventory_file变量
groups | list | difference(’[ungrouped,all]’) --此方法将groups 对象转换为list列表; 并从列表中用 difference 去除 ungrouped,all 两个元素,剩下的就是自己定义的主机组的名称
product
:为list的每个元素生成一个字符串:默认是空格分隔
map
: 的参数是键值对,key是 某个方法的名称,值是方法的参数 map('join', ':')
表示的意思是 调用join
方法,join
方法的参数是:
把前面的元素用分隔符:
连接
join
:是连接的意思,发传过来的list或者数组中的元素进行连接,返回一个字符串
举例说明:
groups['all'] | product(['2181'])| map('join', ':') | join(',')
表达式说明:
groups
是系统变量,代表所有hosts的主机对象,
groups['all']
groups中的all对象,表示 hosts中的说有主机ip信息的一个数组。其值为类似:[192.168.200.11,192.168.200.12]
product(['2181'])
为每个元素产生一个2181字符串
假如 groups['all']
值为[192.168.200.11,192.168.200.12]
groups['all'] | product(['2181'])| map('join', ':') | join(',')
的结果为: 192.168.200.11:2181,192.168.200.12:2181