Skip to content

Latest commit

 

History

History
156 lines (113 loc) · 8.32 KB

README.md

File metadata and controls

156 lines (113 loc) · 8.32 KB

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

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

  1. (Необязательно) Познакомтесь с lighthouse
  2. Создайте два пустых публичных репозитория в любом своём проекте: vector-role и lighthouse-role.
  3. Добавьте публичную часть своего ключа к своему профилю в github.

Основная часть

Наша основная цель - разбить наш playbook на отдельные roles. Задача: сделать roles для clickhouse, vector и lighthouse и написать playbook для использования этих ролей. Ожидаемый результат: существуют три ваших репозитория: два с roles и один с playbook.

  1. Создать в старой версии playbook файл requirements.yml и заполнить его следующим содержимым:

    ---
      - src: git@github.com:AlexeySetevoi/ansible-clickhouse.git
        scm: git
        version: "1.11.0"
        name: clickhouse 
  2. При помощи 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]
└─$ 
  1. Создать новый каталог с ролью при помощи 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
  1. На основе tasks из старого playbook заполните новую role. Разнесите переменные между vars и default.

В структуре каталогов роли переменные делятся на две группы: defaults и vars. В defaults хранятся переменные и их значения по умолчанию, которые пользователь может переопределить на любом уровне (group vars, host vars и т.п.) В vars хранятся переменные и их значения, которые обычно не предназначены для переопределения пользователем, а используются для упрощения дальнейшей разработки роли. Исключение --extra-vars, которые при передаче в командной строке ansible-playbook могут их переопределить.

Playbook для установки Clickhouse, Vector и LightHouse

Описание

Репозиторий файлов clickhouse

Репозиторий роли для Vector

Репозиторий роли для Lighthouse

Verctor-role

========= Роль устанавливает ПО Vector.

Предварительные требования

Предполагается что роль будет выполняться на deb-based дистрибутивах Linux (Debian, Ubuntu).

Переменные роли

В переменных по умолчанию указана версию ПО Vector 0.25.0, в случае необходимости её нужно изменить.

Зависимости

Нет зависимостей

Lighthouse-role

=========

Роль устанавливает ПО 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 файле. Inventory файл содержит 3 группы хостов:

  1. clickhouse
  2. vector
  3. lighthouse

На хостах, указанных в группе будет выполнена роль соответствующая имени группы.

Как оформить ДЗ?

Выполненное домашнее задание пришлите ссылкой на .md-файл в вашем репозитории.