Я пытаюсь использовать ansible для управления тем, как шаблоны добавляются к настроенным хостам на моем Zabbix сервере. Я ищу способ добавить шаблоны без переопределения уже существующих.
Например, у меня 5 серверов. Мне нужно, чтобы они были настроены с помощью следующих шаблонов:
У меня есть файл инвентаризации, организованный по шаблонам, поскольку в моей системе гораздо меньше шаблонов, чем серверов. В примере это будет выглядеть так:
[template_a_b_c]
server0
server1
server2
server3
[template_d]
server0
server2
server4
и т.п.
С такой конфигурацией у моей доступной роли "zabbix" есть задачи для каждого шаблона. Но для серверов, таких как server2, когда template_d.yml
задача выполняется, она перезапишет шаблоны, которые tempalte_a_b_c.yml
связаны. Этого поведения я стараюсь избегать.
Я понимаю, что могу перенастроить свою доступную роль, чтобы она была организована хостом и имела задачу для каждого, но у меня сотни хостов и они растут, так что это не масштабируется. Анзибл просто еще не существует или есть флаг в анзиблеzabbix_host
что я мог бы использовать?
Спасибо.
Вы можете создать список шаблонов на основе членства в группе хостов и выполнить zabbix_host
только один раз.
инвентарь:
[mygr1]
srv1
srv2
srv3
[mygr2]
srv2
учебник:
---
- 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 }}"
результат:
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
формируется в такой последовательности: взять имена групп, в которые входит текущий хост, пересечь его с известными именами из template_map
, извлечь список шаблонов для каждого оставшегося имени, преобразовать результат в список (из генератора карт) и сгладить результирующий список списков в единый список.