Установите Terraform
Процесс подробно описан в статье “Локальная установка Terraform”.
Инициализируйте провайдер
Данное действие описано в 2 вариантах:
- Если у вас есть доступ к репозиторию “Инициализация Terraform provider из репозитория Inferit Cloud”.
- Если нет доступа и есть бинарные файлы провайдера “Инициализация провайдера без доступа к репозиторию”.
Создайте файл с переменными
В данном файле опишите нужные вам переменные. Файл содержит критичные данные для управления вашими ресурсами. Обеспечьте его надежное хранение. Также рекомендуется при версионировании кода, добавлять его в .gitignore. Возможно хранить переменные в вашей системе CI, или как переменные среды.
terraform.tfvars
user_name = "OS_user_name" tenant_name = "OS_tenant_name" password = "OS_password" auth_url = "https://portal.inferit.cloud:5000/v3"
Создайте основной файл проекта
main.tf
В предыдущих пунктах провели инициализацию провайдера. С блоком логирования имеет вид:
terraform {
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "1.54.1"
}
}
}
variable "user_name" {}
variable "tenant_name" {}
variable "password" {}
variable "auth_url" {}
provider "openstack" {
user_name = var.user_name
tenant_name = var.tenant_name
password = var.password
auth_url = var.auth_url
}
Основные команды – CLI
terraform init– команда инициализирует terraform. Создает дополнительные файлы в рабочей директории, а также скачивает провайдеры, объявленные в required_providers;terraform plan– тестовый запуск terraform, который позволяет отследить, какие действия будут выполняться. Исходя из файла состояния terraform.tfstate;terraform validate– проверка синтаксиса файлов *.tf;terraform fmt– приведение к единому форматированию файлов основной конфигурации и файлов переменных;terraform apply– начало развертывания, создает все описанные ресурсы и делает файл состояния terraform.tfstate. Поведение может меняться исходя из файла состояния terraform.tfstate. Если в файле состояния есть ресурс, а в коде его уже нет. Может также удалить лишние ресурсы;terraform destroy– удаляет все созданные ресурсы, записанные в файле состояния, после чего очищает содержимое файла состояний.
Файлы состояний
Работа с Terraform и поведение кода во многом зависит от файла состояния. Сам файл является JSON, в котором записаны все сущности, созданные ранее. Хранится он в директории проекта и имеет название – terraform.tfstate.
Крайне важно обеспечить надежное хранение файла состояния. Файл будет модифицироваться при каждом запуске развертывания terraform. В случае, если файл был поврежден или удален, возможность работы и управления инфраструктурой средствами IaC, будет утрачена.
Есть разные способы решения проблемы. К примеру, при использовании Gitlab CI, разработан специальный модуль для сохранения файлов состояний terraform.