Чем Ansible отличается от Terraform и когда что применять?
- Что такое идемпотентность в управлении конфигурацией?
Terraform — создание инфраструктуры (provisioning): декларативно, со state, хорош для облачных ресурсов — сетей, ВМ, баз, DNS. Ansible — настройка существующих машин (configuration management): по SSH без агента выполняет задачи плейбука — пакеты, файлы, сервисы, пользователи. Их часто сочетают: Terraform создаёт ВМ, Ansible их настраивает.
- Идемпотентность: повторный запуск не меняет то, что уже в нужном состоянии
- Модули Ansible идемпотентны, команды shell — нет: нужны creates или changed_when
- Ansible не хранит state — удалённый из плейбука ресурс останется на сервере
А ещё С контейнерами и неизменяемыми образами роль Ansible смещается к сборке образов и обслуживанию хостов
Подробно
Сравнение:
| Terraform | Ansible | |
|---|---|---|
| задача | создать ресурсы | настроить машины |
| стиль | декларативный | процедурный с декларативными модулями |
| state | есть | нет |
| доступ | API облака | SSH, без агента |
| удаление | убрали из кода — удалит | нужно явно описать удаление |
Пример задачи Ansible:
- name: nginx установлен и запущен
hosts: web
become: true
tasks:
- ansible.builtin.apt: { name: nginx, state: present }
- ansible.builtin.template: { src: site.conf.j2, dest: /etc/nginx/conf.d/site.conf }
notify: reload nginx
handlers:
- name: reload nginx
ansible.builtin.service: { name: nginx, state: reloaded }
Другие инструменты: Packer — сборка образов ВМ, Pulumi — инфраструктура на обычных языках программирования, Helm — пакеты для Kubernetes.
Что хотят услышать
- Provisioning против configuration management.
- State и идемпотентность.
- Совместное использование.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Terraform создаёт инфраструктуру декларативно со state, Ansible настраивает существующие машины по SSH; их часто сочетают
- ✗Ansible хранит state облачных ресурсов и создаёт инфраструктуру декларативно, а Terraform по SSH настраивает пакеты и сервисы на машинах
- ✗Terraform и Ansible взаимозаменяемы во всех задачах
- ✗Ansible требует агента на каждой машине
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.