Сократите вывод ansible-playbook

Вопрос или проблема

Есть ли способ уменьшить вывод команды ansible-playbook? Я не смог найти способ сократить громкоговорительность команды.

Мой конфигурационный файл:

[defaults]
verbosity=0
log_path = /var/log/ansible.log
nocows=true
stdout_callback=ansible.builtin.oneline
host_key_checking = false
inventory = /root/ansible/hosts.txt
interpreter_python=auto_silent

Плейбук:

---
- name: Установить веб-сервер Apache по умолчанию
  hosts: all
  become: yes

  tasks:
  - name: Установить веб-сервер Apache
    apt: name=apache2 state=latest

  - name: Запустить Apache и включить его при запуске
    service: name=apache2 state=started enabled=yes

Ansible собирает вывод в файл логов.
Вывод всех команд выглядит прекрасно, но вывод ansible-playbook огромен. В нем много избыточных или пустых полей JSON (loopX или device:"/dev/loopX"). Я привел пример строки журнала здесь.

Ответ или решение

Чтобы уменьшить объем вывода команды ansible-playbook, можно воспользоваться различными методами настройки Ansible. В этом ответе представлены наиболее эффективные способы, которые помогут сократить количество выводимых данных без потери важной информации.

1. Настройка конфигурационного файла

Вы уже указали некоторые важные параметры в вашем конфигурационном файле. Давайте рассмотрим их более подробно:

  • verbosity=0: Данный параметр позволяет установить уровень подробности вывода на минимальный. Это хороший старт, чтобы сократить объем информации.
  • stdout_callback=ansible.builtin.oneline: Использование данного обработчика для вывода позволяет получить сообщения в одной строке, что значительно упрощает итоговый вывод. Однако, если хочется еще больше упростить вывод, можно попробовать другие обработчики, такие как yaml или json, чтобы выводить данные в более компактном формате.

    Пример:

    stdout_callback=ansible.builtin.yaml

2. Использование параметров командной строки

Когда вы запускаете ansible-playbook, вы можете указать параметры командной строки, чтобы дополнительно управлять уровнем выводимой информации:

  • Установление уровня детализации:

    ansible-playbook my_playbook.yml -vvv

    Здесь -vvv обозначает высокий уровень подробности. Для минимизации используйте -v или даже уберите этот флаг полностью.

  • Игнорирование некоторых сообщений:
    Вы можете игнорировать сообщения об изменениях с помощью параметра --quiet. Это уменьшит вывод за счет скрытия информации о том, что было изменено.

3. Оптимизация самого плейбука

В вашем плейбуке вы можете минимизировать количество выводимой информации, избегая избыточных задач и аргументов. Например, если ваши задачи не требуют дополнительных сообщений, их можно конфигурировать так, чтобы они не выводили лишнюю информацию:

- name: Install Apache WebServer
  apt:
    name: apache2
    state: latest
  register: install_result
  changed_when: install_result.changed

4. Настройка логирования

Вы также можете оптимизировать логирование. Если вывод в лог-файл является важной частью вашего процесса, убедитесь, что вы используете достаточно фильтров, чтобы избегать записи избыточной информации. Вы можете использовать инструменты анализа логов для фильтрации или визуализации ваших данных по необходимости.

5. Работа с выводом групповых операций

Если вы используете группы хостов, вывод может быть слишком громоздким из-за повторений одних и тех же сообщений. Рассмотрите возможность добавления переменной run_once: true для удобных операций, чтобы избежать повторного выполнения:

- name: Check status of Apache
  service:
    name: apache2
    state: started
  run_once: true

Заключение

Используя перечисленные подходы, вы сможете значительно сократить объем вывода команды ansible-playbook, делая его более целенаправленным и компактным. Это поможет вам эффективно получать только нужную информацию, а также упростит работу с выводом, особенно в больших проектах. Убедитесь, что ваши настройки соответствуют требованиям проекта и позволяют вам сохранять условия и детали для отладки.

Оцените материал
Добавить комментарий

Капча загружается...