Управление инфраструктурой через Terraform

C помощью Terraform можно управлять инфраструктурой в облаке как кодом (IaС). Это позволяет затрачивать меньше времени на рутинные операции и снижает риск возникновения ошибок за счет использования скриптов.

На момент написания статьи актуальная версия Terraform - 0.12.17.

Установка Terraform

Загрузите по ссылке для Windows или Linux, распакуйте. Для запуска утилиты требуется только файл terraform, другие файлы их архива могут быть удалены. 

Для macOS введите в терминале:

$ brew install terraform

Быстрый старт 

Для начала загрузите Openstack RC-файл версии 3 в панели Horizon, нажав в правом верхнем углу на кнопку с Вашим адресом электронной почты.

Далее в этом файле нужно закомментировать следующие строки:

#export OS_USER_DOMAIN_ID="users"
#if [ -z "$OS_USER_DOMAIN_ID" ]; then unset OS_USER_DOMAIN_ID; fi
#unset OS_TENANT_ID
#unset OS_TENAN_NAME

После считайте переменные из файла с помощью команды source:

source /test.sh

Выполните команду для инициализации Terraform:

terraform init

Создание конфигурации

Создайте отдельную директорию для хранения файлов Terraform, разместите в ней новый файл terraform.tf.

В файле не требуется настраивать провайдера, можно перейти сразу к созданию плана инфраструктуры. 

Для примера добавим в файл terraform.tf следующие строки:

resource "openstack_networking_network_v2" "terraform-net" {
name = "terraform-web-net"
admin_state_up = "true"
}

Это код для создания виртуальной сети с именем "Terraform-web-net".

Когда описание конфигурации будет готово, выполните команду:

terraform plan

На этом этапе никаких изменений в инфраструктуру не вносится

Результатом выполнения будет описание изменения ресурсов или сообщение об ошибке, если в описании конфигурации есть проблемы.

Применение конфигурации

Для осуществления изменений нужно выполнить:

terraform apply

Здесь потребуется подтверждение: введите "yes", если все проверено и вы подтверждаете создание/изменение инфраструктуры в облаке.

Удаление изменений

Для удаления всех ресурсов, созданных с помощью Terraform, выполните команду:

terraform destroy

Команда также требует подтверждения.