Начало работы
Управление объектами в облачной структуре среда 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 подробно сообщит о том, какие именно проблемы обнаружены в файле конфигурации, с указанием номеров строк.