Skip to content

Latest commit

 

History

History

02-playbook

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Домашнее задание к занятию "Работа с Playbook"

Студент: Александр Недорезов

Подготовка к выполнению

    • Необязательно. Изучите, что такое ClickHouse и Vector.
  1. Создайте свой публичный репозиторий на GitHub с произвольным именем или используйте старый.
  2. Скачайте Playbook из репозитория с домашним заданием и перенесите его в свой репозиторий.
  3. Подготовьте хосты в соответствии с группами из предподготовленного playbook.

Задание 1 (основная часть)

  1. Подготовьте свой inventory-файл prod.yml.

Ответ:

Для подготовки окружения использовал terraform с модулями, в результате динамически формируется inventory prod.yml по шаблону inventory.tftpl.
Clickhouse будет ставиться на отдельную ВМ, Vector на две другие ВМ. Также решил сразу настроить отправку логов из vector в Clickhouse, что прописал в security rules.

  1. Допишите playbook: нужно сделать ещё один play, который устанавливает и настраивает vector. Конфигурация vector должна деплоиться через template файл jinja2. От вас не требуется использовать все возможности шаблонизатора, просто вставьте стандартный конфиг в template файл. Информация по шаблонам по ссылке.
  2. При создании tasks рекомендую использовать модули: get_url, template, unarchive, file.
  3. Tasks должны: скачать дистрибутив нужной версии, выполнить распаковку в выбранную директорию, установить vector.

Ответ:

Добавил play "Install Vector" в плейбук. Сразу предусмотрел идемпотентность и старался следовать основным правилам линтера.

  1. Запустите ansible-lint site.yml и исправьте ошибки, если они есть.

Ответ:

Первый прогон линтера показал следующие ошибки: lint-1

  • 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.

Повторный прогон линтера без ошибок: lint-2

  1. Попробуйте запустить playbook на этом окружении с флагом --check.

Ответ:

Запуск check ожидаемо сломался на стадии "Install clickhouse packages", т.к. таски здесь изменений не выполняют, а значит и .rpm-пакетов для инсталляции на таргет-хосте не существует. check

  1. Запустите playbook на prod.yml окружении с флагом --diff. Убедитесь, что изменения на системе произведены.

Ответ:

Запустил плейбук, выполнился успешно: run Сервисы запущены, Vector законнектился к Clickhouse

  1. Повторно запустите playbook с флагом --diff и убедитесь, что playbook идемпотентен.

Ответ:

Recap повторного запуска показал, что изменений не было, а значит, идемпотентность соблюдена: idempotency

  1. Подготовьте README.md-файл по своему playbook. В нём должно быть описано: что делает playbook, какие у него есть параметры и теги. Пример качественной документации ansible playbook по ссылке.

Ответ:

Ссылка на README.md

  1. Готовый playbook выложите в свой репозиторий, поставьте тег 08-ansible-02-playbook на фиксирующий коммит, в ответ предоставьте ссылку на него.