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