Песочница · автоматизация инфраструктуры
Объяви — и оно само станет таким
Лучший способ понять Terraform и Ansible — потрогать. Слева ты объявляешь желаемое состояние(сколько серверов и что на них должно быть), а движок сам считает разницу с реальностью и приводит её к описанию. Запусти заново — ничего лишнего не произойдёт (идемпотентность). Сломай сервер вручную — и повторный прогон сам всё починит. Это и есть принцип автоматизации.
Обзор всего процесса CI/CD и инструментов → конструктор CI/CD. Незнакомые слова (дрейф, идемпотентность, IaC…) → словарь внизу.
Задай слева: сколько серверов и что на них должно стоять. Это «желаемое состояние».
terraform apply создаёт серверы, ansible-playbook настраивает их. Смотри план-диф до изменений.
Внеси дрейф (упала служба, снесли пакет) → запусти снова: движок сам вернёт к описанному.
- + создать server-1
- + создать server-2
- + создать server-3
- ~ server-1: установить nginx
- ~ server-1: установить app
- ~ server-2: установить nginx
- ~ server-2: установить app
- ~ server-3: установить nginx
- ~ server-3: установить app
Инфраструктуры нет.
Нажми «terraform apply» — движок создаст серверы по описанию слева.
📖 Словарь: простыми словами
Встретил незнакомое слово выше — найди его здесь. Коротко — суть; разверни — подробное объяснение с аналогией.
Желаемое состояние (desired state)описываешь итог, а не шаги
Ты декларируешь, КАК должно быть («3 сервера, на каждом nginx и app 2.0»), а инструмент сам считает разницу с реальностью и делает только нужное. Это противоположность скрипту из команд («сделай шаг 1, 2, 3»).
План (plan / dry-run)движок показывает, что СОБИРАЕТСЯ сделать, до изменений
terraform plan / ansible --check сравнивают желаемое с фактом и печатают список действий: + создать, ~ изменить, - удалить. Ты видишь последствия ДО применения — это защита от сюрпризов в проде.
Идемпотентностьповторный прогон ничего лишнего не делает
Применил один раз — состояние достигнуто. Применил ещё раз — «0 to add, 0 to change»: всё уже как надо. Поэтому apply/playbook можно гонять сколько угодно без страха сломать или задублировать.
Дрейф (drift)реальность разошлась с описанием
Кто-то руками поменял сервер, упала служба, удалился ресурс. Состояние «уплыло» от желаемого. Следующий plan это покажет, а apply — вернёт к описанному (самовосстановление).
IaC vs управление конфигурациейTerraform создаёт серверы, Ansible их настраивает
Terraform (IaC) поднимает/сносит саму инфраструктуру (серверы, сети). Ansible (config mgmt) настраивает уже существующие серверы (пакеты, службы, версии). Классика: terraform создал 3 пустых сервера → ansible поставил на них nginx и app.
Декларативно vs императивно«что» vs «как»
Императивно — список команд (apt install nginx; systemctl start). Декларативно — «nginx установлен и запущен»; движок сам решит, нужно ли что-то делать. Все современные инструменты автоматизации декларативны.
Дальше по теме
Эти инструменты связаны с текущим — так задачи стыкуются на практике.
Все инструменты — в каталоге.