Вопрос или проблема
Я развертываю виртуальную машину Ubuntu в Kubernetes. Для ее настройки я использую Ansible.
Как я могу увидеть журналы ansible-pull, выполняемого в cloud-init?
Я бы хотел контролировать процесс и проверить, когда он завершится.
Вот пример того, что я использую:
- cloudInitNoCloud:
userData: |-
#cloud-config
packages:
- ansible
runcmd:
- ansible-pull -U https://...
Я пытался искать журналы в /var/log, но ничего подходящего не нашел.
Я нашел обходной путь: использовать tee, чтобы перенаправить журнал в файл:
ansible-pull -U https://... | tee -a /var/log/ansible-pull.log
Ответ или решение
Чтобы отслеживать прогресс выполнения команды ansible-pull
, запущенной через cloud-init
на вашем Ubuntu VM в Kubernetes, вы можете использовать несколько различных подходов. Нижеприведенные методы помогут вам собрать логи и иметь возможность контролировать процесс установки.
1. Логирование с использованием tee
Как вы уже упомянули, один из простых способов – использовать команду tee
, которая позволит вам выводить логи в файл, параллельно отображая их в стандартном выходном потоке. Просто измените вашу команду ansible-pull
, добавив tee
следующим образом:
- cloudInitNoCloud:
userData: |-
#cloud-config
packages:
- ansible
runcmd:
- ansible-pull -U https://... | tee -a /var/log/ansible-pull.log
Это обеспечит запись всех выходных данных команды ansible-pull
в файл /var/log/ansible-pull.log
, который вы затем сможете проверить для мониторинга процесса работы.
2. Использование cloud-init
для записи логов
Вы также можете изменить конфигурацию cloud-init
для записи логов непосредственно в стандартные логи cloud-init
. Это делается с помощью команды cloud-init-output
:
- cloudInitNoCloud:
userData: |-
#cloud-config
packages:
- ansible
runcmd:
- cloud-init-output -w
- ansible-pull -U https://... >> /var/log/cloud-init-output.log 2>&1
3. Проверка статуса выполнения через cloud-init
Логи cloud-init
обычно находятся в /var/log/cloud-init.log
и /var/log/cloud-init-output.log
. Вы можете их проверить, чтобы найти информацию о выполнении команды. Используйте следующие команды для просмотра логов:
sudo tail -f /var/log/cloud-init-output.log
или
sudo tail -f /var/log/cloud-init.log
Эти команды помогут отслеживать статус выполнения ansible-pull
в реальном времени.
4. Мониторинг с помощью системы
Для дополнительного контроля, вы можете использовать инструменты мониторинга и алертинга, такие как Prometheus или Elasticsearch, в сочетании с Grafana для визуализации, что даст вам возможность иметь более широкий обзор за процессом развертывания.
Заключение
Все вышеперечисленные методы помогут вам увидеть логи выполнения команды ansible-pull
, а также следить за ходом установки. Выбор метода зависит от ваших предпочтений и требований к мониторингу.