LF
August 15

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 работает совсем не так, как я пытался его заставить. Работает по ПЕРВОМУ совпадению.

Не прекращается борьба с правильной передачей переменных. Кавычки и все такое. Набивая шишки, запоминаю какие-то вещи