Ansible

Шпаргалка по Ansible

Ansible

Ansible — это инструмент с открытым исходным кодом для управления конфигурацией, развертывания приложений и автоматизации IT-задач. Он использует простой язык YAML, позволяющий описывать инфраструктуру как код (Infrastructure as Code, IaC).

Установка Ansible

На Ubuntu/Debian

sudo apt update
sudo apt install ansible

На CentOS/RHEL

sudo yum install epel-release
sudo yum install ansible

Проверка версии

ansible --version

Инвентарь (Inventory)

Инвентарь — это список узлов, которыми Ansible будет управлять.

Статический инвентарь

Файл hosts или inventory:

Динамический инвентарь

Можно использовать скрипты или плагины для динамического получения списка узлов из облачных провайдеров (AWS, GCP, Azure и др.).

Ad-Hoc команды

Используются для выполнения одноразовых задач на удаленных узлах.

Общий синтаксис

Примеры

  • Проверка доступности узлов:

  • Выполнение команды на удаленных узлах:

Playbooks

Playbooks — это сценарии, написанные на YAML, описывающие желаемое состояние системы.

Структура Playbook

Пример простого Playbook

Запуск Playbook

Модули

Ansible имеет множество встроенных модулей для управления различными аспектами системы.

Некоторые распространенные модули

  • package/apt/yum/dnf: Управление пакетами.

  • service/systemd: Управление системными сервисами.

  • user: Управление пользователями.

  • copy: Копирование файлов на удаленные узлы.

  • file: Управление правами доступа к файлам и директориям.

  • template: Развертывание файлов-шаблонов с использованием Jinja2.

Пример использования модуля

Переменные

Переменные позволяют параметризовать Playbooks.

Определение переменных

  • Внутри Playbook:

  • В отдельных файлах (group_vars, host_vars).

Использование переменных

В шаблоне nginx.conf.j2:

Факты (Facts)

Ansible собирает системную информацию об узлах, называемую "фактами".

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

Условия (Conditionals)

Позволяют выполнять задачи на основе определенных условий.

Пример использования

Циклы (Loops)

Позволяют выполнять одну и ту же задачу с разными параметрами.

Пример использования

Регистры (Register)

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

Пример использования

Роли (Roles)

Роли помогают структурировать Playbooks и позволяют переиспользовать код.

Структура роли

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

Обработчики (Handlers)

Используются для выполнения действий при возникновении определенных событий, обычно уведомлений notify.

Пример использования

Шаблоны (Templates)

Ansible использует Jinja2 для шаблонизации файлов.

Пример шаблона

nginx.conf.j2:

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

Ansible Vault

Ansible Vault позволяет шифровать секретные данные, такие как пароли или ключи API.

Создание зашифрованного файла

Редактирование зашифрованного файла

Использование зашифрованных переменных

Запуск Playbook с Ansible Vault

Фильтры и Функции

Ansible поддерживает различные фильтры для преобразования данных.

Пример использования фильтров

Практики лучшего использования

  • Организуйте код: Используйте роли и коллекции для структурирования.

  • Используйте версии: Храните Playbooks в системах контроля версий (Git).

  • Документируйте: Добавляйте описания к задачам и ролям.

  • Тестируйте: Проверяйте Playbooks перед применением в продакшене.

  • Следите за обновлениями: Регулярно обновляйте Ansible и модули.

Полезные команды

  • Проверка синтаксиса Playbook

  • Просмотр фактов об узлах

  • Запуск Playbook в режиме проверки (Dry Run)

  • Увеличение уровня подробности вывода

  • Указание пользовательского инвентаря

Ресурсы для дальнейшего изучения


Эта шпаргалка покрывает основные аспекты работы с Ansible. Для углубленного понимания рекомендуется ознакомиться с официальной документацией и практиковаться в написании собственных Playbooks и ролей.

Last updated