Початок роботи

Керування об'єктами в хмарній інфраструктурі середовища OpenStack можливе двома основними способами:

У цьому 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) Параметри доступу. Для налаштування доступу до хмарної інфраструктури потрібні такі параметри:

Ці параметри ми надсилаємо на контактні адреси під час закладу послуги; ці ж параметри (логін та пароль) використовуються для входу до веб-інтерфейсу (дашборд).

Приклад мінімальної конфігурації:

# 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      = "RegionOne"
}

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

terraform init

При цьому Terraform створить у поточній директорії піддиректорію .terraform, в яку завантажить вказану версію провайдера (у нашому випадку - OpenStack).

Висновок успішної команди ініціалізації міститиме наступний рядок:

Terraform has been successfully initialized!

Також у Terraform є команда валідації конфігурації:

terraform validate

У разі успішної валідації, виведення команди буде наступним:

Success! The configuration is valid.

У разі неуспішної валідації Terraform докладно повідомить про те, які проблеми виявлені у файлі конфігурації, із зазначенням номерів рядків.