Você pode construir a lista de modelos com base na associação do grupo de hosts e executar zabbix_host
apenas uma vez.
inventário:
[mygr1]
srv1
srv2
srv3
[mygr2]
srv2
Playbook :
---
- hosts: mygr1:mygr2
gather_facts: no
vars:
template_map:
mygr1: [template_a, template_b]
mygr2: [template_c]
tasks:
- name: Generate template list
set_fact:
template_list: >
{{ group_names
| intersect(template_map.keys())
| map('extract',template_map)
| list
| sum(start=[]) }}
- debug:
msg: "{{ template_list }}"
resultado:
ok: [srv1] => {
"msg": [
"template_a",
"template_b"
]
}
ok: [srv2] => {
"msg": [
"template_a",
"template_b",
"template_c"
]
}
ok: [srv3] => {
"msg": [
"template_a",
"template_b"
]
}
template_list
é formado nesta sequência: obtenha nomes de grupos dos quais o host atual é membro, cruze-o com nomes conhecidos de template_map
, extraia lista de modelos para cada nome restante, converta o resultado em lista (do gerador de mapas ) e achatar lista resultante de listas em lista única.