Керування об'єктами в хмарній інфраструктурі середовища 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 докладно повідомить про те, які проблеми виявлені у файлі конфігурації, із зазначенням номерів рядків.