Ansible - 如何获取库存文件中定义的主机条目的序列号

时间:2017-11-01 11:03:42

标签: ansible ansible-inventory

我有一个库存文件,其中包含两个主机,如下所示

[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。

如何在不定义其他变量的情况下获取清单文件中定义的主机条目序列号?

2 个答案:

答案 0 :(得分:0)

您可以使用标准Python的index方法。

用下面的变量替换字符串:

debug:
  msg: "{{ groups['testservers'].index('xx.xx.xx.141') + 1 }}"

+1,因为您明确要求的序列从1到3,但index0开头)

答案 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}}"