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
Недостатки
● Нестабильность (частые релизы, смена
синтаксиса и т. д.)
● Качество сторонних модулей
● Сложный синтаксис при работе со
структурами данных (списки, словари)
● Производительность на большом
количестве хостов