- (Необязательно) Познакомтесь с lighthouse
- Создайте два пустых публичных репозитория в любом своём проекте: vector-role и lighthouse-role.
- Добавьте публичную часть своего ключа к своему профилю в github.
Наша основная цель - разбить наш playbook на отдельные roles. Задача: сделать roles для clickhouse, vector и lighthouse и написать playbook для использования этих ролей. Ожидаемый результат: существуют три ваших репозитория: два с roles и один с playbook.
-
Создать в старой версии playbook файл
requirements.yml
и заполнить его следующим содержимым:--- - src: git@github.com:AlexeySetevoi/ansible-clickhouse.git scm: git version: "1.11.0" name: clickhouse
-
При помощи
ansible-galaxy
скачать себе эту роль.
Загрузка ролей выполняется командой: ansible-galaxy install -r <файл>
, где <файл>
- YAML файл с информацией о требуемых компонентах (ролях), включая информацию о способе их получения.
Если используемая роль уже загружена или её нужно обновить, то необходимо добавить ключ --force
┌──(kali㉿kali)-[~/devops-netology8.4]
└─$ ansible-galaxy install -r requirements.yml
Starting galaxy role install process
- extracting clickhouse to /home/kali/.ansible/roles/clickhouse
- clickhouse (1.11.0) was installed successfully
┌──(kali㉿kali)-[~/devops-netology8.4]
└─$
- Создать новый каталог с ролью при помощи
ansible-galaxy role init vector-role
.
Для упрощения подготовки роли можно воспользоваться командой ansible-galaxy role init <роль>
, где <роль>
- имя инициализируемой роли.
Данная команда создаст шаблон новой роли, а именно - набор каталогов и предзаполненных файлов внутри директории <роль>
.
Пример вывода команды:
┌──(kali㉿kali)-[~/devops-netology8.4]
└─$ ansible-galaxy role init vector-role
- Role vector-role was created successfully
┌──(kali㉿kali)-[~/devops-netology8.4]
└─$ ansible-galaxy role init lighthouse-role
- Role lighthouse-role was created successfully
- На основе tasks из старого playbook заполните новую role. Разнесите переменные между
vars
иdefault
.
В структуре каталогов роли переменные делятся на две группы: defaults
и vars
.
В defaults хранятся переменные и их значения по умолчанию, которые пользователь может переопределить на любом уровне (group vars, host vars и т.п.)
В vars хранятся переменные и их значения, которые обычно не предназначены для переопределения пользователем, а используются для упрощения дальнейшей разработки роли.
Исключение --extra-vars, которые при передаче в командной строке ansible-playbook
могут их переопределить.
Репозиторий файлов clickhouse
Репозиторий роли для Vector
Репозиторий роли для Lighthouse
========= Роль устанавливает ПО Vector.
Предполагается что роль будет выполняться на deb-based дистрибутивах Linux (Debian, Ubuntu).
В переменных по умолчанию указана версию ПО Vector 0.25.0, в случае необходимости её нужно изменить.
Нет зависимостей
=========
Роль устанавливает ПО Nginx и Lighthouse.
Предполагается что роль будет выполняться на deb-based дистрибутивах Linux (Debian, Ubuntu).
Предполагается что на машине уже будет установлена утилита unzip.
В переменных по умолчанию указана версия ПО Nginx 1.18.0, в случае необходимости её нужно изменить.
В изменяемых переменных указан порт по которому будет слушать ПО Lighthouse. По умолчанию это порт 80, в случае необходимости его можно изменить.
Нет зависимостей
Пример для использования на машинах на которых уже установлена утилита Unzip:
- name: Install Lighthouse
hosts: lighthouse
roles:
- lighthouse-role
Пример с установкой утилиты Unzip в рамках pre_tasks в плее использующем данную роль:
- name: Install Lighthouse
hosts: lighthouse
pre_tasks:
- name: install unzip
become: true
ansible.builtin.apt:
name: unzip
state: present
update_cache: yes
roles:
- lighthouse-role
1 плей: Запускает роль по установке сlickhouse на всех хостах указанных в группе clickhouse в inventory файле.
2 плей: Запускает роль по установке vector на всех хостах указанных в группе vector в inventory файле.
3 плей: Запускает роль по установке nginx и lighthouse на всех хостах указанных в группе lighthouse в inventory файле.
Перед выполнением плейбука необходимо указать хосты в соответствующие группы в inventory файле. Inventory файл содержит 3 группы хостов:
- clickhouse
- vector
- lighthouse
На хостах, указанных в группе будет выполнена роль соответствующая имени группы.
Выполненное домашнее задание пришлите ссылкой на .md-файл в вашем репозитории.