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

Метки: Метки

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии