IT Academy
Справочник курса

Infrastructure as Code

Все объяснения, задачи и лабораторная в одном месте.

Можно сохранить страницу в PDF через печать браузера. Для печати разборы ответов раскрываются автоматически.

1. Desired state, idempotency и drift

Объяснение

Декларативная конфигурация описывает желаемое состояние. Идемпотентность означает, что повторное применение не создаёт новых эффектов при уже достигнутом состоянии. Drift — расхождение реального ресурса и декларации.

Задача для самостоятельного решения

Почему повторный скрипт add user может быть неидемпотентным?

Показать разбор ответа

Он может создать дубликат или завершиться ошибкой. Нужно проверять наличие и приводить существующий объект к требуемым свойствам.

2. Terraform language, state и modules

Объяснение

Terraform/OpenTofu строит граф зависимостей ресурсов и хранит связь с удалёнными объектами в state. Plan показывает предполагаемые изменения, но зависит от текущего состояния и входов.

Задача для самостоятельного решения

Почему нельзя оценивать plan только по числу изменений?

Показать разбор ответа

Одно destroy базы опаснее десяти обновлений tags. Проверяйте адрес ресурса, замену, данные и последствия зависимости.

3. Remote state, locking и environments

Объяснение

Remote state требует контроля доступа, backup и механизма блокировки при поддержке backend. Секретные значения могут попасть в state даже при скрытом CLI-выводе. Рабочие окружения должны иметь изоляцию.

Задача для самостоятельного решения

Делает ли sensitive=true state безопасным для публикации?

Показать разбор ответа

Нет: оно скрывает отображение, а не гарантирует отсутствие значения в state. Храните state как чувствительные данные.

4. Configuration management и images

Объяснение

Configuration management приводит ОС к нужному состоянию, image baking создаёт заранее подготовленный образ. Смешивание ручных изменений с автоматикой затрудняет повторение. Версии пакетов влияют на воспроизводимость.

Задача для самостоятельного решения

Почему ручная установка пакета исчезла после пересоздания VM?

Показать разбор ответа

Изменение не было частью образа или конфигурации. Внесите его в источник истины и проверьте чистое создание.

5. Policy as code и security scanning

Объяснение

Policy as code проверяет ограничения до применения: публичный доступ, шифрование, разрешённые регионы. Статическая проверка не видит все динамические свойства. Исключение должно иметь владельца и срок.

Задача для самостоятельного решения

Что проверять для storage bucket?

Показать разбор ответа

Публичность, доступ ролей, шифрование, retention и журналирование по требованиям. Наличие одного флага не доказывает корректность всей политики.

6. Testing, promotion и disaster recovery

Объяснение

Тест инфраструктуры проверяет созданное поведение, а не только синтаксис. Откат state без отката реальных ресурсов опасен. Disaster recovery должен восстанавливать и данные, и доступы.

Задача для самостоятельного решения

Можно ли лечить неудачный apply старым state наугад?

Показать разбор ответа

Нет: state перестанет соответствовать ресурсам. Сначала выполните диагностику и refresh/plan, затем управляемое исправление с backup.

Практика

Лабораторная работа

Подготовка

Фрагмент декларативных данных: для выполнения нужен выбранный IaC-инструмент и учебная среда.

Учебный пример

environment: training
service:
  replicas: 2
  public: false
  version: release-001
policy:
  allow_destroy_database: false
  require_backup: true

Как работает пример и что ожидать

Желаемое состояние и policy отделены: два экземпляра не должны исчезать или удваиваться при повторном применении. Этот YAML — спецификация намерения, не готовый Terraform resource. Отображение в provider resources должно быть явным.

Итоговая работа

Реализуйте модуль, план, remote state с доступами и проверку повторного apply без изменений. Сымитируйте drift, проверьте recovery state и запрет неожиданного destroy. Храните state и его копии как чувствительные данные.

Проверка результата

1. Опишите исходные данные и условия запуска, чтобы другой человек мог повторить работу.
2. Приложите результат обычного сценария и сравните его с ожидаемым.
3. Проверьте неверный вход, граничный случай и отказ зависимости, если она есть.
4. Объясните выбранное решение и известное ограничение.
5. Сохраните исправления после самопроверки вместе с примером, который раньше не работал.

Как оценить работу

По каждому пункту поставьте 0 (не выполнено), 1 (выполнено с пробелами) или 2 (результат воспроизводим и объяснён). Если обязательный сценарий не работает, вернитесь к нему независимо от общей суммы. Это рубрика самопроверки: сайт не исполняет присланный код и не выдаёт автоматическую оценку проекта.