Вопрос или проблема
Есть ли способ уменьшить вывод команды 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
, делая его более целенаправленным и компактным. Это поможет вам эффективно получать только нужную информацию, а также упростит работу с выводом, особенно в больших проектах. Убедитесь, что ваши настройки соответствуют требованиям проекта и позволяют вам сохранять условия и детали для отладки.