Terraform — это популярный инструмент компании Hashicorp, который появился в 2014 году.
Утилита позволяет управлять облачной инфраструктурой в парадигме Infrastructure as Code на очень дружественном, легко читаемом, декларативном языке.
При запуске Terraform считывает находящиеся в рабочей папке манифесты и, используя представленные провайдерами облачного сервиса плагины, приводит вашу инфраструктуру к описанному в файлах состоянию, совершая необходимые вызовы к API.
Terraform управляет двумя классами сущностей — data source и resource.
Data source — источник данных, из которого Terraform получает параметры объекта, необходимые для управления и создания других связанных с этим объектом сущностей. Запрашивается в блоке data в манифесте.
Пример использования: Для создания сервера необходимо знать в какую сеть его нужно подключить, какие шаблоны брандмауэра доступны для применения, какого типа диск может быть присоединён. С помощью блоков data запрашивается информация о сети, шаблонах брандмауэра, типе диска и т.д.
Resource — ресурсы, доступные для создания. После создания ресурсов Terraform может ими управлять, а также из них можно получить параметры, которые могут быть использованы для создания других связанных ресурсов. Запрашивается в блоке resource в манифесте.
Пример использования: создать новый сервер и подключенный к нему диск.
Для каждого data source и resource необходимо указать его "тип" и "имя", например:
data "rustack_project" "my_project"
,
resource "rustack_project" "my_project"
Тип: "rustack_project"
Имя: "my_project"
(можно задать любое и далее обращаться по нему, оно отобразится только в коде)
Список data и resource можно найти в документации по Terraform-провайдеру РУСТЭК:
Создание новой сложной облачной инфраструктуры с возможностью её быстрого масштабирования.
Если необходимо создать большую облачную инфраструктуру с несколькими сетями, роутерами и серверами, а также обеспечивать её масштабируемость. Вы сможете описать свою инфраструктуру на читаемом утилитой языке в манифесте, а затем применить его. Terraform совершит все необходимые вызовы к API и инфраструктура будет готова к использованию.
Затем, если необходимо масштабировать созданную инфраструктуру, например создать новую сеть или увеличить конфигурацию уже созданных серверов или дисков, необходимо внести изменения в манифест и снова применить его. Terraform проанализирует изменения и перед применением опишет план действий, которые будут выполнены с инфраструктурой. После подтверждения изменений Terraform снова обратится к API и приведёт уже созданную инфраструктуру к необходимому и описанному состоянию.
Для взаимодействия Terraform и РУСТЭК-ЕСУ используется Terraform-провайдер РУСТЭК.