Перейти к основному контенту
NGPP
Кабинет

Песочница · автоматизация инфраструктуры

Объяви — и оно само станет таким

Лучший способ понять Terraform и Ansible — потрогать. Слева ты объявляешь желаемое состояние(сколько серверов и что на них должно быть), а движок сам считает разницу с реальностью и приводит её к описанию. Запусти заново — ничего лишнего не произойдёт (идемпотентность). Сломай сервер вручную — и повторный прогон сам всё починит. Это и есть принцип автоматизации.

Обзор всего процесса CI/CD и инструментов → конструктор CI/CD. Незнакомые слова (дрейф, идемпотентность, IaC…) → словарь внизу.

1
Объяви

Задай слева: сколько серверов и что на них должно стоять. Это «желаемое состояние».

2
Применяй

terraform apply создаёт серверы, ansible-playbook настраивает их. Смотри план-диф до изменений.

3
Ломай и чини

Внеси дрейф (упала служба, снесли пакет) → запусти снова: движок сам вернёт к описанному.

📝 Желаемое состояние (декларация — «как должно быть»)
Серверов:
3
На каждом сервере должно быть:
Версия app:
$ terraform plan / ansible --check+3 ~6
  1. + создать server-1
  2. + создать server-2
  3. + создать server-3
  4. ~ server-1: установить nginx
  5. ~ server-1: установить app
  6. ~ server-2: установить nginx
  7. ~ server-2: установить app
  8. ~ server-3: установить nginx
  9. ~ 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 установлен и запущен»; движок сам решит, нужно ли что-то делать. Все современные инструменты автоматизации декларативны.

Дальше по теме

Эти инструменты связаны с текущим — так задачи стыкуются на практике.

Все инструменты — в каталоге.