DevOps
Ansible
Ansible це інструмент автоматизації без агентів: плейбуки на YAML налаштовують сервери та розгортають ПЗ через SSH.
Що це
Ansible створив Майкл ДеХаан у 2012 році, а згодом проєкт купила Red Hat. Він налаштовує сервери, ставить пакунки, копіює файли, запускає сервіси та оркеструє розгортання. Агентів на цільових машинах не потрібно: достатньо SSH і Python.
Робота описується в плейбуках на YAML: список задач, кожна викликає модуль (apt, copy, service, template). Задачі ідемпотентні: повторний запуск не ламає вже налаштований сервер. Список машин задається в inventory.
Ansible добре доповнює Terraform: Terraform створює сервери, Ansible налаштовує їх усередині.
Коли брати
- Треба налаштувати багато серверів однаково й повторювано.
- Не хочете ставити агентів на цільові машини.
- Потрібне розгортання застосунку на VM чи bare metal.
- Автоматизуєте мережеве обладнання чи адміністративні задачі.
Коли не варто
- Потрібно створювати ресурси хмари із state та plan: Terraform чи OpenTofu краще.
- Усе вже працює в контейнерах і Kubernetes, де конфігурація керується образами.
Ключові поняття
- Playbook
- YAML-файл із переліком задач і цільових хостів.
- Module
- Готова одиниця дії: встановити пакунок, скопіювати файл, запустити сервіс.
- Inventory
- Список хостів і груп, до яких застосовуються плейбуки.
- Idempotence
- Повторне виконання дає той самий результат і не робить зайвих змін.
- Role
- Структурований пакет задач, файлів і шаблонів для повторного використання.
Приклад
Питання на співбесіді
1. Що означає agentless?
На керованих серверах не потрібен постійно працюючий агент. Ansible підключається по SSH, виконує модулі й завершується. Це спрощує розгортання та знижує навантаження.
2. Що таке ідемпотентність у Ansible?
Модуль описує бажаний стан (пакунок встановлено), а не дію. Якщо стан уже такий, нічого не змінюється. Тому плейбук можна запускати багато разів безпечно.
3. Чим Ansible відрізняється від Terraform?
Terraform створює інфраструктуру декларативно й тримає state. Ansible налаштовує ПЗ на наявних серверах без state. Часто їх використовують разом.
Порівняння з цією технологією
Схожі технології
- TerraformTerraform це інструмент інфраструктури як коду: ви описуєте ресурси хмари в конфігурації, а він створює та змінює їх.
- OpenTofuOpenTofu це відкритий форк Terraform під ліцензією MPL-2.0, що розвивається під егідою Linux Foundation.
- DockerDocker пакує застосунок разом із залежностями в контейнер, який однаково запускається на ноутбуці, сервері та в хмарі.
- nginxnginx це швидкий вебсервер і зворотний проксі, який також працює як балансувальник навантаження та HTTP-кеш.
Логотипи належать їхнім власникам і використані лише для ідентифікації. Іконки: Simple Icons (CC0), Devicon (MIT).