Как стать автором
Обновить

Комментарии 14

Закопайте, пожалуйста. У меня глаза вытекают.


- hosts: all
  - task
    run_once: true
    local_action:
    loop: '{{ groups.all }}'

нафига вы делаете loop, а потом ещё и делегацию на localhost, а потом ещё и run_once? Если вы хотите loop, сделайте плей на localhost. Если вы хотите делегацию, зачем взаимоотменяющие друг друга hosts: all и run_once?


В целом — код не читаемый, логика не понятна. Инвентори в ini, структура групп хаотичная, используется all для гигантского пласта полиси (100500 переменных). Группы заббикса надо задавать отдельно (вместо переиспользования групп ансибла).

частично согласен с первым утверждением, не придумал как решить чтобы и роль установить и прогнать списком добавление хостов
со вторым — группа all для каждого инвентаря, переменные all:vars используются как переменные по умолчанию, можно задать для каждого хоста индивидуально

В тот момент, когда вы в инвентори полагаетесь на group_vars:all или all, вы теряете гибкость. Например, завтра вам делать decommission сервера, и вы его помещаете в группу decommissioned. Но ему всё равно настраивают мониторинг. Ой.

так плейбук заточен только на установку агентов и регистрацию, нужно удалять будет отдельный плейбук и соответственно файл, я сразу указал что можно было сделать всё в одном файле и рулить группами, но для удобства группы разнёс по разным файлам
Также, если не указать hosts: all а делать host: localhost, плейбук не сможет собрать данные (Gathering Facts) а соберёт только для localhost

setup можно делегировать ровно так же (delegate facts). Если вы хотите закладываться на факты для настройки мониторинга, это означает, что вы не можете настроить его если хотя бы один сервер в down или ребутится. Чем больше серверов, тем выше шансы на это.


В целом, настройка мониторинга на фактах — не очень хорошая затея.

поправил
частично согласен с первым утверждением, не придумал как решить чтобы и роль установить и прогнать списком добавление хостов

piccadil, а в чем проблема разнести на два разных шага? Примерно так:


- hosts: all 
  tasks:
    - name: Install agent
      include_role:
        name:  community.zabbix.zabbix_agent # устанавливает готовую роль на хостах
      tags:
        - install # для удобства можно использовать тэги

- hosts: localhost
  tasks:
    - name: Create a new host or update an existing host's info
      local_action:
         ...
      loop: "{{ hostvars['localhost']['all'] }}"
поправил

[all:vars] в инвентори зло однозначно.
Сделайте group_vars/all/common.yml и будет вам счастье.

Задача этой статьи не показать правила написания ansible-playbook — задача показать какие есть роли и модули для zabbix, все равно каждый будет переделывать роли под себя
задача показать какие есть роли и модули для zabbix

сугубо ИМХО, но тогда можно было бы ограничиться одной строкой: Zabbix поддерживает Ansible роль для установки и настройки агентов.


А если статья как выше, то лучше уж делать правильно. Опять же, сугубо ИМХО.

поправил
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории