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

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

Важно

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

C помощью Terraform нельзя создать виртуальную машину с указанием типа диска. Это обусловлено версионированием API OpenStack. Единственная опция — создавать диск заранее и после этого создавать виртуальную машину.

Установка Terraform

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

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

$ brew install terraform

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

Вариант 1: 

Загрузите OpenStack RC-файл версии 3 в панели MCS: выберите в правом верхнем меню пункт "Настройки проекта", далее откройте вкладку "API ключи".

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

#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

Вариант 2: 

В отдельной директории создайте файл с именем provider.tf, в котором опишите провайдер по образцу:

provider "openstack" {
  # Ваша учетная запись.
  user_name = "ivan.ivanov@example.ru"
  
  # Пароль от учетной записи
  password = "test123"
  
  # Тенант токен, можно взять на вкладке Настройки проекта -> API ключи.
  # Project ID и будет наш токен.
  tenant_id = "123afdc456789c28cd9deb1234f412"
  
  # Индикатор расположения пользователей.
  user_domain_id = "users"
  
  # API endpoint 
  # Через данный адрес terraform будет обращаться в api mcs.
  auth_url = "https://infra.mail.ru/identity/v3/"
}

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

terraform init

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

В той же директории, где на прошлом шаге разместили provider.tf, создайте файл terraform.tf.

В файле перейдите к созданию плана инфраструктуры. 

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

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

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

Пример файла terraform.tf создающий объекты по сценарию:

- создаем сеть с именем "terraform-web-net_1"

- создаем подсеть "terraform-subnet_1"

- создаем группу безопасности, разрешающую входящие подключения по ssh/http

- создаем  роутер "terraform-router"

- выделяем внешний IP-адрес из пула "ext-net"

- создаем ВМ Basic1 с OS Debian 10 и конфигурацией Basic-1-1

terraform.tf

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

$ terraform plan

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

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

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

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

$ terraform apply

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

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

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

$ terraform destroy

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


Также рекомендуем эти статьи: