3

Мы используем ansible для настройки некоторых хостов, включая настройку IP. Мы не хотим использовать DHCP-сервер. Иногда мы добавляем новые хосты в сеть. Эти новые хосты находятся в одном диапазоне IP-адресов, а существующие рабочие хосты находятся в другом. Мы просто помещаем новые хосты в первую сеть, а затем позволяем ansible настраивать их, тестировать их и менять IP на производственный диапазон. Ansible регулярно запускается через cron.

Однако, когда нет новых хостов, ansible сообщит о недостижимой ошибке. Нет новых хозяев, это обычная ситуация. Как я могу подавить это или сделать его менее заметным?

В основном наш playbook выглядит так:

---
#  configure existing hosts
- hosts: production
  tasks:
    - name: do regular maintenance
      # ...

- hosts: new
  # Does not seem to do anything
  ignore_errors: True 
  tasks: 
    - name: configure freshly discovered host
        # ...
    - name: test freshly discovered host
        # ...
    - name: change ip config to production network
        # ...

Файл /etc /ansible /hosts выглядит следующим образом:

[production]
192.168.2.[11:255]

[new]
# those are firewalled
192.168.2.[1:10]

Когда я запускаю это, я вижу большой красный

PLAY RECAP   ****************************************************
192.168.2.1              : ok=0    changed=0    unreachable=1    failed=0   
[...]

в конце, что сбивает с толку моих коллег.

Я видел этот вопрос, и я подумал, что если я использую ignore_errors, но не устанавливаю флаг, он должен молча пропустить недоступные хосты, но, похоже, это не имеет никакого эффекта.

3 ответа3

0

Вам нужно создать плагин обратного вызова, чтобы изменить способ, которым Ansible выводит свои данные.

Вы можете начать с default.py предоставленного в качестве примера с Ansible. Найдите unreachable строку и измените сценарий в соответствии с вашими потребностями.

Например, чтобы сделать его менее заметным, вы можете, например, переопределить значение переменной COLOR_UNREACHABLE .

Сохраните измененный код в callback_plugins в каталоге вашего проекта, укажите каталог и включите плагин в файле конфигурации ansible.cfg .

0

Один из способов, который я нашел, - сначала запустить этот скрипт для моего файла hosts, а затем соответствующим образом отредактировать список. Затем запустите скрипт Ansible.

Это обходной путь, но все же лучше, чем постоянно следить за Ansible, ожидая, когда он снова остановится.

0

Собираюсь добавить этот ответ: исправление было добавлено в Ansible 2.7: https://github.com/ansible/ansible/blob/stable-2.7/changelogs/CHANGELOG-v2.7.rst#major-changes

Новое ключевое слово ignore_unreachable для игр и блоков. Позволяет игнорировать задачи, которые не выполняются из-за недоступности хостов, и проверять результаты с помощью недоступного теста.

РЕДАКТИРОВАТЬ: Исходя из личного опыта, мне нужно добавить ignore_errors вместе с ним для продолжения игры.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .