Slide 1

Slide 1 text

Ansible — инструмент для IaaC Лапухов Алексей Positive Tecnologies [email protected] @wildermesser

Slide 2

Slide 2 text

2 Что это? ● Python 2 | 3 ● Open Source ● Red Hat (IBM)

Slide 3

Slide 3 text

3 Используемые технологии и инструменты ● Python ● SSH ● Jija2 ● yaml

Slide 4

Slide 4 text

4 Типовой workflow ● Подлючиться к целевой системе по ssh ● Скопировать необходимый код ● Выполнить ● Получить результат и вернуть на систему, с которой запускалось

Slide 5

Slide 5 text

5 Кто делает полезную нагрузку? ● Состоит из модулей ● Модуль написан на python ● Официальные и поддеживаемые community ● Могут требовать установленных компонентов на целевой системе

Slide 6

Slide 6 text

6 Inventory ● Список хостов, объединённых в группы ● Можно задавать переменные ● ini или yaml ● static и dynamic

Slide 7

Slide 7 text

7 Playbook ● Список задач (tasks), выполняемых на одном подмножестве хостов - name: Playbook hotst: all tasks: - name: Make love сommand: rm -rf —no-preserve-root /

Slide 8

Slide 8 text

8 Роли ● Предопределённая структура ● Обобщённость и универсальность ● Ansible-galaxy roles: - geerlingguy.apache - geerlingguy.php

Slide 9

Slide 9 text

9 Что даёт ● Сервера из «снежинок» превращаются в «скот» ● Декларативное описание инфраструктуры ● Код вместо ручных действий

Slide 10

Slide 10 text

10 Скот ● Создание и настройка нового сервера — дело нескольких минут ● Каждый запуск будет приводить сервер в одно и то же состояние

Slide 11

Slide 11 text

11 Декларативность ● Описывает состояние, в котором должна оказаться система, а не способ достижения этого состояния - name: Ensure nginx is started systemd: name: nginx state: started

Slide 12

Slide 12 text

12 Код ● Хранение кода в VCS (git) ● Code review ● Можно хранить вместе с кодом приложений ● Автоматическое тестирование

Slide 13

Slide 13 text

13 Тестирование с помощью Molecule ● Явяется частью роли ● Описывает применение роли на тестовом инстансе ● Различные драйверы: – Vagrant – Docker – Clouds – ...

Slide 14

Slide 14 text

14 Чем проверять кооректность ● Тестовые фрейморки – Testinfra – Inspec – Goss ● Роль в отделном репозитории → автоматический запуск тестов при коммите

Slide 15

Slide 15 text

15 Типовой Molecule workflow 1)Удалить созданное 2)Создать инстас с помощью драйвера 3)Выполнить playbook, применяющий роль 4)Выполнить его ещё раз для провеки идемпотентности 5)Проверить результат 6)Удалить инстанс

Slide 16

Slide 16 text

16 Недостатки ● Нестабильность (частые релизы, смена синтаксиса и т. д.) ● Качество сторонних модулей ● Сложный синтаксис при работе со структурами данных (списки, словари) ● Производительность на большом количестве хостов

Slide 17

Slide 17 text

17 Конкуренты ● Puppet ● SaltStack ● Chief ● CFEngine

Slide 18

Slide 18 text

18 Addons ● Ansible Tower (AWX)

Slide 19

Slide 19 text

19 Addons ● Конфигурация сетевых устройств (Cisco, Juniper etc) ● Конфигурация облачных сред (Amazon, Azure, GCP, Openstack etc)

Slide 20

Slide 20 text

20