Infrastructure-as-a-code (IaC) — управление инфраструктурой при помощи кода 

Модуль 1

Инфраструктура как сервис

Тема 3

Шаблонизация и инфраструктура-как-код

В предыдущих темах мы разобрались с настройкой виртуальных машин и сетей. Теперь поговорим о том, как развернуть в облачном пространстве свой образ виртуальной машины.

Шаблон для развертывания

В первую очередь для развертывания образа ВМ нужно подготовить шаблон — специальный слепок операционной системы. В нем удалена вся информация и настройки, которые могут помешать одновременному развертыванию нескольких ВМ. Предварительная подготовка образа позволяет избежать ситуаций, когда уже добавленная в домен виртуальная машина пытается подключиться к другому, несуществующему.

Подробнее о том, что учесть при создании и заливке образа, смотрите в обучающем видео.

Автоматизация развертывания

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

Эту проблему призван решить подход инфраструктуры как кода (Infrastructure as a code, IaC) — описание конфигурации инфраструктуры в виде программного кода. Он обрабатывается специализированными инструментами, которые самостоятельно приводят инфраструктуру в нужное состояние.

Преимущества подхода:

Полная воспроизводимость. Описанная с помощью кода инфраструктура разворачивается, дублируется и переносится неограниченное количество раз целиком, так как вся конфигурация описана в файле или последовательности файлов.
Удобное масштабирование. Можно создавать множество одинаковых серверов путем простого редактирования и выполнения конфигурационного файла.
Простые откаты. С IaC проще возвращаться на предыдущую версию инфраструктуры, особенно если она хранится в какой-либо системе контроля версий.

Подход IaC постепенно становится отраслевым стандартом обеспечения отказоустойчивости и скорости восстановления инфраструктуры в облаке.

IaC бывает двух видов:

Декларативный. Администратор описывает в виде кода конечное состояние системы. Остальное делает автоматика: интерпретирует конфигурационные файлы, определяет текущее состояние системы, сравнивает его с желаемым и приводит к нему инфраструктуру.
Императивный. Предполагает написание алгоритма — последовательности конкретных действий по настройке системы. Объем работы больше, но взамен вы получаете максимальный контроль над процессом развертывания.

Говоря об IaC, мы обычно имеем в виду один из самых популярных декларативных инструментов Terraform. С помощью Terraform можно описывать инфраструктуру и управлять ею.

Terraform часто используют облачные провайдеры. У платформы VK Cloud есть собственный, предназначенный для работы с PaaS, то есть с базами данных и Managed Kubernetes. В следующих темах мы разберем, как использовать Terraform для Kubernetes.

Много машин в облаке — это не больно: IaC для управления масштабной инфраструктурой / Хабр

Как использовать IaC-подход в облаке VK Cloud

Использование Terraform и Packer