В этой инструкции мы рассмотрим один из вопросов работы с OpenStack через Terraform – установка ВМ (виртуальной машины).
Предварительные требования:
- Установлен Terraform на ПК или сервер, с которого будет осуществляться управление OpenStack.
- Установлен, развернут и корректно функционирует OpenStack.
Поддержка инфраструктуры любой сложности (сети, сервера, кластеры) выполняется в рамках услуги ИТ-аутсорсинг. Исключим риски недоступности ИТ и 1С систем!
Получения файла конфигурации подключения
Необходимо загрузить конфигурационный файл подключения clouds.yml. Переходим в web-интерфейс OpenStack, в левой верхней части экрана выбираем пункт API Access.
Далее нажимаем на выпадающий список с названием Download OpenStack RC File и выбираем OpenStack clouds.yaml File.
Содержимое файла clouds.yaml представлено ниже. если необходимо настроить полностью прозрачный вход, необходимо дописать строчку с паролем password.
clouds.yaml
clouds:
openstack:
auth:
auth_url: http://192.168.0.20/identity
username: "admin"
project_id: 4c1990f9b7004e03ad34909d13c31192
project_name: "demo"
user_domain_name: "Default"
region_name: "RegionOne"
interface: "public"
identity_api_version: 3
Подключение файла конфигурации
Файл clouds.yaml необходимо переместить в рабочую директорию проекта Terraform или ~/.config/openstack; /etc/openstack. Необходимо внести изменения в настройку OpenStack провайдера для Terraform, необходимо указать название облака для управления. В файле clouds.yaml название облака “openstack”. Указываем аналогично в terraform.
providers.tf
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.48.0"
}
}
}
provider "openstack" {
cloud = "openstack"
}
Выше указано примерное содержание файла providers.tf для настройки использования нужного провайдера для terraform и название облака для работы.
Далее описываем план создания инфраструктуры в файле main.tf.
main.tf
resource "openstack_networking_floatingip_v2" "fip_1" {
pool = "public"
}
resource "openstack_compute_keypair_v2" "my-cloud-key" {
name = "my-key"
public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDMSnGsYm/CHFo8fXPIUNziVtUGnyO8RudeX+18kG+7QQKWlsMVTkzI5tfTTJaemYaQmWQrwYZb7UfU9hUKB/PpYQ6AKqoe5r+pEW88rjvyWiFfCR6l+MF0nnVopsGPnPjpCdaLREugaCtOSSYC4nKJRB>
}
resource "openstack_compute_instance_v2" "test" {
name = "test-vm"
image_name = "focal-server"
flavor_name = "m1.medium"
key_pair = "${openstack_compute_keypair_v2.my-cloud-key.name}"
security_groups = ["default"]
network {
name = "shared"
}
}
resource "openstack_compute_floatingip_associate_v2" "fip_1" {
floating_ip = "${openstack_networking_floatingip_v2.fip_1.address}"
instance_id = "${openstack_compute_instance_v2.test.id}"
}
- Блок кода отвечает за выделение floating-ip для использования в создаваемой виртуальной машине.
- Блок кода отвечает за создание переменной с ssh ключом для подключения к виртуальной машине.
- Создаем виртуальную машину: Название виртуальной машины “test-vm”, используемый образ “focal-server”, конфигурация виртуальный машины (CPU, RAM, DISK) “m1.medium’, далее присваиваем виртуальной машине ключ ssh, определяем группу безопасности для сети.
- Присваиваем созданный floating-ip к созданной виртуальной машине.
Для использования результатов создание виртуальной машины далее, например, для передачи следующим скриптам информации об IP-адресе, имени виртуальной машины и т.д. создается отдельный блок кода output.tf.
output.tf
output "vm-name" {
value = "${openstack_compute_instance_v2.test.name}"
}
output "vm-id" {
value = "${openstack_compute_instance_v2.test.id}"
}
output "vm-ip" {
value = "${openstack_compute_instance_v2.test.network.0.fixed_ip_v4}"
}
output "vm-floating-ip" {
value = "${openstack_networking_floatingip_v2.fip_1.address}"
}
В итоге после успешного создания инфраструктуры получим следующий вывод:
Запуск создания инфраструктуры
После составления всех необходимых блоков кода, находятся в корневой директории проекта terrform запускаем последовательно команды.
CLI
terraform init terraform plan terraform apply --auto-approve
- Инициализируем папку с проектом, загружаем необходимы модули и провайдеры для работы с инфраструктурой.
- Запускаем команду, имитирующую создание инфраструктуры, убеждаемся что будет создано все что было запланировано.
- Запускаем создание инфраструктуры, ключ “–auto-approve” позволяет избежать остановок при создании инфраструктуры для ввода подтверждений..
После выполнения инфраструктурой своего назначения, необходимо освободить используемые ресурсы и удалить инфраструктуры командой:
terraform destroy
Для проверки успешного освобождения ресурсов, переходим в WEB-интерфейс.
Нужно DevOps-сопровождение? Обращайтесь к нам!
