Ansible — Использовать значения в цикле с hosts файла на другом хосте

 

Есть "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"
}
0 0 vote
Article Rating

Метки: Метки

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments