LINUX.ORG.RU

ansible Список хостов в шаблоне

 


0

1

Привет.

Есть плейбук

---
- hosts: host[1:3].example.com
  roles:
  - { role: role, tags: tag }

Нужно получить такие конфиги:

host1.example.com

host_id: 1
hosts: PLAINTEX1://host1.example.com:8001, PLAINTEX2://host2.example.com:8002, PLAINTEX3://host3.example.com:8003

host2.example.com

host_id: 2
hosts: PLAINTEX1://host1.example.com:8001, PLAINTEX2://host2.example.com:8002, PLAINTEX3://host3.example.com:8003

host3.example.com

host_id: 3
hosts: PLAINTEX1://host1.example.com:8001, PLAINTEX2://host2.example.com:8002, PLAINTEX3://host3.example.com:8003

Подскажите как это сделать без заполнения host_vars?

Спсибо!



Последнее исправление: huan-karlos (всего исправлений: 1)

Нужно получить такие конфиги

Нужно на хостах создать файлы с таким содержимым или что? Перемення «hosts» (которая с PLAINTEX в значениях) не меняется, пишите в роль (в каком-нибудь lineinfile или где вы хотите это видеть) как есть, host_id - можно из имени хоста вычленить.

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

это конфиг для кластера, в директиве hostsнужно перечислить все хосты и в конфиге для каждого хоста указать уникальный id

huan-karlos
() автор топика

Запихни хосты в группу. Потом в шаблоне

{% for n in groups['my_group'] %}
host_id = {{ loop.index }}
hosts: {% for host in groups['my_group'] %}PLAINTEXT{{ loop.index }}://{{ host }}:800{{ loop.index }}{% if not loop.last %},{% endif %}{% endfor %}
{% endfor %}

Как-то так

Difrex ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.