Начало работы

Управление объектами в облачной структуре среда OpenStack возможно двумя основными способами:

  • через веб-интерфейс (дашборд)
  • через API, к которому мы предоставляем публичный доступ.

В данном FAQ рассматривается управление по API с использованием ПО HashiCorp Terraform (далее в тексте — просто Terraform). В будущем может быть добавлена информация по использованию альтернативного ПО для этих задач.

Наша документация не может заменить собой официальную документацию по Terraform, и не ставит такой цели. В ней описываются особенности работы с нашей конфигурацией OpenStack и предоставляемые ею возможности. При этом для справки везде приводятся ссылки на соответствующие страницы официальной документации, и при создании/редактировании конфигурации для вашей инфраструктуры следует сверяться именно с ней. Наша документация создана именно в расчёте на это, приводимые далее примеры максимально соответствуют примерам из официальной документации, с разъяснением возможных неочевидных моментов.

Настройка провайдера и доступа

Мы будем исходить из того, что в вашем распоряжении уже есть проинсталлированный Terraform. Информация по установке ПО доступна на официальном сайте и выходит за рамки данного FAQ:
https://www.terraform.io/downloads

Для начала работы с инфраструктурой необходимо создать минимальную конфигурацию Terraform.
Страница официальной документации:
https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs

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

1) Настройка провайдера. В терминологии Terraform провайдером называется набор средств для работы с определённой облачной средой. Terraform может работать с разными облачными средами, и OpenStack — только одна из них, поэтому необходимо сконфигурировать Terraform именно для работы с OpenStack.

2) Параметры доступа. Для настройки доступа к облачной инфраструктуре необходимы следующие параметры:

  • логин
  • пароль
  • URL доступа к API OpenStack

Эти параметры мы присылаем на контактные адреса при заведении услуги; эти же параметры (логин и пароль) используются для входа в веб-интерфейс (дашборд).

Пример минимальной конфигурации:

# Define required providers
terraform {
required_version = ">= 0.14.0"
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "~> 1.35.0"
    }
  }
}
 
# Configure the OpenStack Provider
provider "openstack" {
  user_name   = "ident"
  password    = "p@55W0rd"
  auth_url    = "https://os2.colocall.net:5000/v3"
}

Аргумент region, присутствующий в примере, который приводится в официальной документации, в нашем облаке указывать не требуется (при необходимости он будет унаследован автоматически).

Когда файл с минимальной конфигурацией создан (напоминаем, Terraform обрабатывает файлы с расширением .tf в текущей директории), необходимо выполнить команду инициализации:

terraform init

При этом Terraform создаст в текущей директориии поддиректорию .terraform, в которую загрузит указанную версию провайдера (в нашем случае — OpenStack).

Вывод успешной команды инициализации будет содержать следующую строку:

Terraform has been successfully initialized!

Также в Terraform есть команда валидации конфигурации:

terraform validate

В случае успешной валидации вывод команды будет следующим:

Success! The configuration is valid.

В случае неуспешной валидации Terraform подробно сообщит о том, какие именно проблемы обнаружены в файле конфигурации, с указанием номеров строк.