-
- Необязательно. Изучите, что такое ClickHouse и Vector.
- Создайте свой публичный репозиторий на GitHub с произвольным именем или используйте старый.
- Скачайте Playbook из репозитория с домашним заданием и перенесите его в свой репозиторий.
- Подготовьте хосты в соответствии с группами из предподготовленного playbook.
- Подготовьте свой inventory-файл
prod.yml
.
Для подготовки окружения использовал terraform с модулями, в результате динамически формируется inventory prod.yml по шаблону inventory.tftpl.
Clickhouse будет ставиться на отдельную ВМ, Vector на две другие ВМ. Также решил сразу настроить отправку логов из vector в Clickhouse, что прописал в security rules.
- Допишите playbook: нужно сделать ещё один play, который устанавливает и настраивает vector. Конфигурация vector должна деплоиться через template файл jinja2. От вас не требуется использовать все возможности шаблонизатора, просто вставьте стандартный конфиг в template файл. Информация по шаблонам по ссылке.
- При создании tasks рекомендую использовать модули:
get_url
,template
,unarchive
,file
. - Tasks должны: скачать дистрибутив нужной версии, выполнить распаковку в выбранную директорию, установить vector.
Добавил play "Install Vector" в плейбук. Сразу предусмотрел идемпотентность и старался следовать основным правилам линтера.
- Запустите
ansible-lint site.yml
и исправьте ошибки, если они есть.
Первый прогон линтера показал следующие ошибки:
- playbook.yml:11 Task/Handler: block/always/rescue - добавил
name
для блока, таски назвал более понятными именами- playbook.yml:12 Task/Handler: Get clickhouse distrib - добавил
mode
- playbook.yml:18 Task/Handler: Get clickhouse distrib - добавил
mode
- playbook.yml:30 -
meta
заменил на `ansible.builtin.- playbook.yml:32 - добавил пробел, rewrite recommendation:
create_db.rc != 0 and create_db.rc != 82
.Также добавил таск на редактирование конфига, чтобы установить параметр
listen_host
.
- Попробуйте запустить playbook на этом окружении с флагом
--check
.
Запуск
check
ожидаемо сломался на стадии "Install clickhouse packages", т.к. таски здесь изменений не выполняют, а значит и .rpm-пакетов для инсталляции на таргет-хосте не существует.
- Запустите playbook на
prod.yml
окружении с флагом--diff
. Убедитесь, что изменения на системе произведены.
Запустил плейбук, выполнился успешно: Сервисы запущены, Vector законнектился к Clickhouse
- Повторно запустите playbook с флагом
--diff
и убедитесь, что playbook идемпотентен.
Recap повторного запуска показал, что изменений не было, а значит, идемпотентность соблюдена:
- Подготовьте README.md-файл по своему playbook. В нём должно быть описано: что делает playbook, какие у него есть параметры и теги. Пример качественной документации ansible playbook по ссылке.
Ссылка на README.md
- Готовый playbook выложите в свой репозиторий, поставьте тег
08-ansible-02-playbook
на фиксирующий коммит, в ответ предоставьте ссылку на него.