Ansible - как получить порядковый номер записи узла, определенный в файле инвентаризации

У меня есть файл инвентаря с двумя хостами, определенными как ниже

[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 ответа

Вы можете использовать стандартный метод индекса Python.

Замените строки переменными ниже:

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

(+1 потому что вы явно просили последовательность от 1 до 3, но index начинается с 0)

Пожалуйста, проголосуйте за ответ @techraf, но вот пример инвентаризации yaml с использованием ответа @techraf:

Пример использования инвентаря, который мне подходит :)

          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}}"
Другие вопросы по тегам