1 of 29

Атнагулов Артур / Саитгареев Рустем / Гиниятуллин Булат

6.10.2021

2 of 29

Ansible

  • система управления конфигурациями, написанная на Python
  • не требует установки доп. ПО на серверах

Первый релиз – 20 февраля 2012

16 октября 2015 года Red Hat, Inc объявила о поглощении Ansible, Inc.

2

3 of 29

3

4 of 29

Ansible декларативен

Описываем: �настрой на сервере 1 PostgreSQL с пользователем user и паролем password

  • host (inventory) – сервер или группа серверов, на котором нужно выполнить настройку
  • role – инструкция по настройке/установке чего-либо
  • variables – параметры, с которыми нужно выполнить настройку
  • playbook – запускает роль на определенном хосте с определенными параметрами

4

5 of 29

Task

  • Приводят систему к нужному состоянию
  • В тасках используются modules
    • copy, file, apt, systemd, git, pip, docker_container, postgresql_db, postgresql_user...
  • Можно указывать версии устанавливаемых пакетов и другие параметры

5

6 of 29

Role

объединяет несколько тасков для настройки компонента системы

6

7 of 29

Ansible Galaxy

хранилище готовых ролей, разработанных сообществом

7

8 of 29

Inventory (host & groups)

сгруппированный список хостов, на которых будут выполняться настройки

  • host – отдельный сервер
  • group – группа серверов

8

9 of 29

Variables

переменные с настройками. Могут указываться для

  • групп и хостов
  • в ролях (как значения по умолчанию и в тасках)
  • в playbooks

9

10 of 29

Ansible Vault

хранит секретные данные в зашифрованном виде

ansible-vault edit path_to_file.yaml (нужен пароль в .vaultpass)

10

11 of 29

roles�tasks

variables�inventory

playbook

11

12 of 29

Playbook

Несколько plays , которые выполняют конкретные роли и таски на определенных хостах

12

13 of 29

Templates

  • шаблоны для генерации конфигов на базе переменных
  • Работают с помощью модуля template и шаблонизатора jinja2

roles/sentry/templates/docker-compose.yml

roles/sentry/tasks/main.yaml

13

14 of 29

Структура Ansible-проекта

  • group_varsпеременные
    • (host_group_name) – переменные для группы
      • vars.yaml – обычные переменные
      • vault.yaml – зашифрованные переменные
  • roles – роли
    • (role_name)
      • tasks
        • main.yaml
  • ansible.cfg – настройки для Ansible (справа)
  • .vaultpass – пароль для доступа к vault.yaml
  • hosts.yaml – inventory (список групп и хостов)
  • playbook.yaml – playbook
  • requirements.yaml – список ролей из Ansible Galaxy

ansible.cfg:�[defaults]�inventory = hosts.yaml�vault_password_file=.vaultpass

14

Описываем: �настрой на сервере 1 PostgreSQL с пользователем user и паролем password

15 of 29

Запуск playbook: ansible-playbook playbook.yaml

15

16 of 29

ansible ping

16

17 of 29

Запуск команды на нескольких серверах

17

18 of 29

Infrastructure as code (IaC)

  • Сокращение рутинных операций.
  • Минимизация человеческих ошибок.
  • “Самодокументирование” скриптов. Можно не писать отдельную документацию по развертыванию.
  • Видно целевое состояние системы.

18

19 of 29

Код находится в Git

  • Общий доступ
  • Версионирование
  • Подключение CI для автодеплоя

19

20 of 29

Ansible as CMDB

20

21 of 29

Host in inventory

  • Имеет
    • название
    • настройки подключения �(IP/домен, имя пользователя, пароль/ключ/…)
  • Может содержаться в одной или нескольких группах
  • Inventory хранится в yaml или ini файлах
  • ansible-inventory all --list – просмотр информации в JSON c секретными переменными

21

22 of 29

ansible-inventory all --graph

22

23 of 29

Ansible facts

  • собираются при подключении ansible к серверу
  • Содержится
  • параметры подключения
  • сетевые интерфейсы,
  • дата и время
  • ОС, память, ЦП, архитектура ЦП
  • Могут быть экспортированы куда угодно

23

24 of 29

ansible-cmdb

Переводит ansible-facts в разные форматы

  • HTML
  • CSV
  • JSON
  • SQL
  • Markdown
  • PlainText

24

25 of 29

Dynamic inventory

список хостов определяется динамически

  1. Создать сервера в облаках (AWS, GCS, Scaleway, OpenStack…)
  2. Собрать inventory на базе информации из API облака
  3. Выполнить настройку на серверах

25

26 of 29

Ansible Platform Automation Controller

графический интерфейс для управления и мониторинга работы Ansible

ex. Ansible Tower, ex. AWX

26

27 of 29

27

28 of 29

Ansible as CMDB

Источники данных

  • Файлы с Inventory
  • Ansible facts
  • Dynamic inventory

Использование

  • Использование конфигов напрямую (yaml, ini)
  • Собственная обработка вывода от Ansible (JSON)
  • ansible-cmdb (HTML, CSV, Markdown, SQL)
  • Ansible Platform Automation Controller (ex. Tower)

28

29 of 29

Атнагулов Артур / Саитгареев Рустем / Гиниятуллин Булат

6.10.2021