S2E07
https://gitlab.com/littlegreencat/devops/-/blob/master/infra/.gitlab-ci.yml?ref_type=heads
https://gitlab.com/littlegreencat/infra-2
https://gitlab.com/littlegreencat/lf-ansible-roles-2
- Повторил все из урока
- Переделал .gitlab-ci.yml на extra_vars.
- Используется один инвентори файл inventory/all.ini (хотя у меня прописан в конфиге и настроен hosts уже, то есть можно бы просто опустить указание инвентори файла)
- Используется один плейбук servers.yml c переменной и тэгированными ролями.
- Имена файлов инвентори и плейбука оставил храниться в переменных
- Подставляет в $TARGET prod или stage и запускается на нужных серверах.
Тут я продолжил обдумывать тему с комбинированием тэгов на разных уровнях (роли, таски).
Почитал обзорно интересные штуки, например
- name: "Задача, которая выполнится только если переданы ОБА тега"
apt:
name: nginx
state: present
tags: [ web, init ]
# Условие: проверяем, что в команде запуска присутствуют и 'web', и 'init'
when:
- "'web' in ansible_run_tags"
- "'init' in ansible_run_tags"- block:
- name: "Первый таск для веб-инициализации"
ping:
tags: [ init ]
- name: "Второй таск для веб-инициализации"
uri:
url: "http://localhost"
tags: [ init ]
tags: [ web ] # Этот тег применится ко всему блокуНо пока остановился на простом - в ролях, связанных с установкой софта, решил делать таски с проверкой существования сервиса. И ставить им тэг "check"
При выборе в пайпе "check", будут выполняться только таски изо всех ролей, но только с этим тэгом.
В остальных случаях тэги используются более глобально - для ролей
Трудности
Не подтягивались переменные в TARGET из rules. Переделал реализацию.
rules работает совсем не так, как я пытался его заставить. Работает по ПЕРВОМУ совпадению.
Не прекращается борьба с правильной передачей переменных. Кавычки и все такое. Набивая шишки, запоминаю какие-то вещи