Проверка логов
Иногда при диагностике неисправностей или других проблем необходимо проверить логи. Любая операция над файлом логов (например, tail, cat, grep и т. д.) работает через команду ansible
с некоторыми оговорками:
- Операции, которые постоянно отслеживают файл, например,
tail -f
, не работают через Ansible, поскольку в Ansible, отображаются только выходные данные после завершения операции, и вы не сможете отправить команду Ctrl-C, чтобы перестать отслеживать файл. - Не рекомендуется запускать команду, возвращающую большой объем данных через stdout. Если вы собираетесь открыть файл более чем несколько КБ, следует войти на сервер(ы) по отдельности.
- При перенаправлении и фильтрации выходных данных из команды, выполняемой через Ansible, необходимо использовать модуль shell вместо стандартного модуля command (добавьте
-m shell
в команду).
В качестве простого примера рассмотрим последние несколько строк файла журнала сообщений на каждом из наших серверов:
ansible multi -s -a "tail /var/log/messages"
Как сказано выше, если требуется фильтровать журнал сообщений таким образом, как grep, нельзя использовать модуль command по умолчанию, вместо него мы используем shell:
ansible multi -s -m shell -a "tail /var/log/messages | grep ansible-command | wc -l"
Эта команда показывает, сколько ansible команд было запущено на каждом сервере (числа могут отличаться).