+7 495 230 03 03 8 800 222 50 03
DevOps

Создание виртуальной машины в OpenStack через Terraform

В этой инструкции мы рассмотрим один из вопросов работы с OpenStack через Terraform – установка ВМ (виртуальной машины).

Предварительные требования:

  • Установлен Terraform на ПК или сервер, с которого будет осуществляться управление OpenStack.
  • Установлен, развернут и корректно функционирует OpenStack.

Получения файла конфигурации подключения

Необходимо загрузить конфигурационный файл подключения 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}"
}

В итоге после успешного создания инфраструктуры получим следующий вывод:

proxmox backup

Рисунок 1 — Сообщение об успешности операции

Запуск создания инфраструктуры

После составления всех необходимых блоков кода, находятся в корневой директории проекта terrform запускаем последовательно команды.

CLI

terraform init
terraform plan
terraform apply --auto-approve
  • Инициализируем папку с проектом, загружаем необходимы модули и провайдеры для работы с инфраструктурой.
  • Запускаем команду, имитирующую создание инфраструктуры, убеждаемся что будет создано все что было запланировано.
  • Запускаем создание инфраструктуры, ключ “–auto-approve” позволяет избежать остановок при создании инфраструктуры для ввода подтверждений..

После выполнения инфраструктурой своего назначения, необходимо освободить используемые ресурсы и удалить инфраструктуры командой:

terraform destroy

Для проверки успешного освобождения ресурсов, переходим в WEB-интерфейс.

Нужно DevOps-сопровождение? Обращайтесь к нам!

Дата публикации: 1 января 2023
Не нашли ответа на свой вопрос?

Смотрите также

Обсуждение материала

Содержание

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.