Документация "Инферит Облако"

автоматически создаёт виртуальную сеть, подсеть и порт IP, привязывает их к инстансу, управляет образами, flavor‑ами, ключами и правилами размещения через Terraform

Документация на нашем сайте предлагает исчерпывающие инструкции и руководства, созданные для повышения вашей эффективности при работе с облачными сервисами. В ней подробно описаны ключевые функции, процессы настройки инструментов, управление ресурсами, меры безопасности и практические сценарии использования

Создание сети и подключение IP к Инстансу

Подготовка

Ознакомитесь со статьей – Terraform быстрый старт.
Выполните все действия по настройке провайдера, составлению основных конфигурационных файлов.

Добавить описание ресурсов

После блока авторизации provider “openstack” {} необходимо добавить следующее:

Network

resource "openstack_networking_network_v2" "network" {
name           = "my_network"
admin_state_up = "true"
}

resource "openstack_networking_subnet_v2" "subnet" {
name       = "my_subnet"
network_id = openstack_networking_network_v2.network.id
cidr       = "10.0.0.0/24"
ip_version = 4
}

resource "openstack_networking_port_v2" "port" {
name           = "my_port"
network_id     = openstack_networking_network_v2.network.id
admin_state_up = "true"

fixed_ip {
  subnet_id  = openstack_networking_subnet_v2.subnet.id
  ip_address = "10.0.0.10"
}
}

Так как сеть состоит из разных ресурсов, требуется описания самой сети, подсети, и порта (IP адрес), который добавится к инстансу.

  • 1. openstack_networking_network_v2 – описываем название сети и включаем её.
  • 2. openstack_networking_subnet_v2 – определяем подсеть в сети.
  • 3. openstack_networking_network_v2.network.id – забираем аттрибут ресурса, что позволит не заполнять ID созданной сети.
  • 4. cidr – указываем подсеть, её размерность.
  • 5. ip_version – какой протокол используется (в примере, IP v4).

Добавление IP к ВМ

  • 1. openstack_networking_port_v2 – указываем ID сети, к которой привязываем порт (ID сети можно узнать выполнив – openstack_networking_network_v2.network.id).
  • 2. Выделяем IP-адрес в блоке – fixed_ip.
  • 3. В данном блоке ссылаемся на подсеть, созданную ранее – openstack_networking_subnet_v2.subnet.id.
  • 4. ip_address – указываем сам IP адрес. Если этого не сделать, то адрес присвоится автоматически.

Создание инстанса с IP-адресом

Появляется новый блок – network, в котором при создании ВМ идёт ссылка на ID уже созданного порта в блоке – openstack_networking_port_v2.port.id.

openstack_compute_instance_v2

resource "openstack_compute_instance_v2" "instance" {
name            = "my_instance"
image_name      = "Ubuntu 22.04"
flavor_name     = "4vcpu.8ram"
key_pair        = openstack_compute_keypair_v2.keypair.name

network {
  port = openstack_networking_port_v2.port.id
}
}

Запуск развертывания

terraform plan

# openstack_networking_network_v2.network will be created
+ resource "openstack_networking_network_v2" "network" {
  + admin_state_up          = true
  + all_tags                = (known after apply)
  + availability_zone_hints = (known after apply)
  + dns_domain              = (known after apply)
  + external                = (known after apply)
  + id                      = (known after apply)
  + mtu                     = (known after apply)
  + name                    = "my_network"
  + port_security_enabled   = (known after apply)
  + qos_policy_id           = (known after apply)
  + region                  = (known after apply)
  + shared                  = (known after apply)
  + tenant_id               = (known after apply)
  + transparent_vlan        = (known after apply)
}

# openstack_networking_subnet_v2.subnet will be created
+ resource "openstack_networking_subnet_v2" "subnet" {
  + all_tags          = (known after apply)
  + cidr              = "10.0.0.0/24"
  + enable_dhcp       = true
  + gateway_ip        = (known after apply)
  + id                = (known after apply)
  + ip_version        = 4
  + ipv6_address_mode = (known after apply)
  + ipv6_ra_mode      = (known after apply)
  + name              = "my_subnet"
  + network_id        = (known after apply)
  + no_gateway        = false
  + region            = (known after apply)
  + service_types     = (known after apply)
  + tenant_id         = (known after apply)
}

# openstack_networking_port_v2.port will be created
+ resource "openstack_networking_port_v2" "port" {
  + admin_state_up         = true
  + all_fixed_ips          = (known after apply)
  + all_security_group_ids = (known after apply)
  + all_tags               = (known after apply)
  + device_id              = (known after apply)
  + device_owner           = (known after apply)
  + dns_assignment         = (known after apply)
  + dns_name               = (known after apply)
  + id                     = (known after apply)
  + mac_address            = (known after apply)
  + name                   = "my_port"
  + network_id             = (known after apply)
  + port_security_enabled  = (known after apply)
  + qos_policy_id          = (known after apply)
  + region                 = (known after apply)
  + tenant_id              = (known after apply)

  + fixed_ip {
      + ip_address = "10.0.0.10"
      + subnet_id  = (known after apply)
    }
}

# openstack_compute_instance_v2.instance will be created
+ resource "openstack_compute_instance_v2" "instance" {
  + access_ip_v4        = (known after apply)
  + access_ip_v6        = (known after apply)
  + all_metadata        = (known after apply)
  + all_tags            = (known after apply)
  + availability_zone   = (known after apply)
  + created             = (known after apply)
  + flavor_id           = (known after apply)
  + flavor_name         = "4vcpu.8ram"
  + force_delete        = false
  + id                  = (known after apply)
  + image_id            = (known after apply)
  + image_name          = "Ubuntu 22.04"
  + key_pair            = "my_key_pair_name"
  + name                = "my_instance"
  + power_state         = "active"
  + region              = (known after apply)
  + security_groups     = (known after apply)
  + stop_before_destroy = false
  + updated             = (known after apply)

  + network {
      + access_network = false
      + fixed_ip_v4    = (known after apply)
      + fixed_ip_v6    = (known after apply)
      + floating_ip    = (known after apply)
      + mac            = (known after apply)
      + name           = (known after apply)
      + port           = (known after apply)
      + uuid           = (known after apply)
    }
}

Если всё корректно, то:
terraform apply

Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.

Enter a value:

Подтвердите выполнение командой yes.
Ресурсы создадутся, и информация будет добавлена в новый файл состояний.

Если какие-то ресурсы удалены из кода, но они присутствуют в файле состояния, то они будут удалены!
Применяйте команду terraform plan осторожно, во избежание непредвиденных последствий!

Получить доступ в личный кабинет клиента
Публикации в СМИ
Подключить сервис
Получить демо-доступ
Получить консультацию