Ansible
Шпаргалка по Ansible
Ansible
Ansible — это инструмент с открытым исходным кодом для управления конфигурацией, развертывания приложений и автоматизации IT-задач. Он использует простой язык YAML, позволяющий описывать инфраструктуру как код (Infrastructure as Code, IaC).
Установка Ansible
На Ubuntu/Debian
На CentOS/RHEL
Проверка версии
Инвентарь (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
Was this helpful?