Есть "hosts" файл, в котором есть группа "db". Это инстансы с базами данных, которые выполняют разную роль. Цель добавить тип роли в "hosts" файл, чтобы потом это значение мы могли использовать в цикле, который будет выполнятся совершенно на другом хосте, к примеру "management"
Исходный "hosts" файл:
[db] db1 ansible_host=192.168.1.101 db2 ansible_host=192.168.1.102 db3 ansible_host=192.168.1.103
Добавим ключ "role" с нужным значением для каждого хоста в группе "db":
[db] db1 role=development ansible_host=192.168.1.101 db2 role=staging ansible_host=192.168.1.102 db3 role=production ansible_host=192.168.1.103
Пример Playbook'а:
--- - name: management gather_facts: No hosts: management tasks: - name: debug debug: msg: "Instance {{ item.1 }} with IP {{ hostvars[ item.1 ].ansible_host }} is {{ hostvars[ item.1 ].role}}" with_indexed_items: "{{ groups['db'] }}"
Результат:
ok: [management] => (item=[0, u'db1']) => { "msg": "Instance db1 with IP 192.168.1.101 is development" } ok: [management] => (item=[1, u'db2']) => { "msg": "Instance db2 with IP 192.168.1.102 is staging" } ok: [management] => (item=[2, u'db3']) => { "msg": "Instance db3 with IP 192.168.1.103 is production" }