我有一个库存文件,其中包含两个主机,如下所示
[testservers]
xx.xx.xx.106 ansible_ssh_user=johndoe
xx.xx.xx.138 ansible_ssh_user=johndoe
xx.xx.xx.141 ansible_ssh_user=johndoe
我想在任务中使用已定义主机的序列号。
就像xx.xx.xx.106
一样,我应该得到序列1,对于xx.xx.xx.141
我应该从第三个条目开始将序列值设为3。
如何在不定义其他变量的情况下获取清单文件中定义的主机条目序列号?
答案 0 :(得分:0)
您可以使用标准Python的index方法。
用下面的变量替换字符串:
debug:
msg: "{{ groups['testservers'].index('xx.xx.xx.141') + 1 }}"
(+1
,因为您明确要求的序列从1到3,但index
以0
开头)
答案 1 :(得分:0)
请支持@techraf 的回答,但这里有一个使用@techraf 回答的 yaml 清单示例:
对我有用的库存使用示例:)
fpm:
vars:
Offset: 31
hosts:
fpm[01:10]-dc1:
HostUnit: "{{groups['fpm'].index(inventory_hostname) + Offset}}"
targethost: "prox0{{HostUnit|int % 2 + 1}}-dc1"
ansible_ssh_host: "10.123.12.{{HostUnit}}"