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

на базе кода, который разворачивает в OpenStack сеть, роутер и плавающий IP, создает ключ‑пару, три виртуальные машины (Ubuntu и две Windows) с дисками, серверную группу‑аффинити и правила брандмауэра

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

Комплекс примеров

main.tf

terraform {
required_providers {
  openstack = {
    source  = "terraform-provider-openstack/openstack"
    version = "1.54.1"
  }
}
}

variable "user_name" {}
variable "tenant_name" {}
variable "password" {}
variable "auth_url" {}

provider "openstack" {
user_name   = var.user_name
tenant_name = var.tenant_name
password    = var.password
auth_url    = var.auth_url
}

resource "openstack_compute_keypair_v2" "keypair" {
name       = "my_key_pair_name"
public_key = "ssh-rsa A******************************************************************"
}

data "openstack_images_image_v2" "image_name" {
name = "Ubuntu 22.04"
}

data "openstack_images_image_v2" "image_name_win" {
name = "MS Windows 11"
}

resource "openstack_compute_instance_v2" "instance" {
name        = "instance"
image_id    = data.openstack_images_image_v2.image_name.id
flavor_name = "4vcpu.8ram"
key_pair    = openstack_compute_keypair_v2.keypair.name

block_device {
  uuid                  = data.openstack_images_image_v2.image_name.id
  source_type           = "image"
  volume_size           = 50
  boot_index            = 0
  destination_type      = "volume"
  delete_on_termination = true
}

scheduler_hints {
  different_host = [openstack_compute_instance_v2.instance_win.id, openstack_compute_instance_v2.instance_win.id]
}

network {
  port = openstack_networking_port_v2.port.id
}
}


resource "openstack_compute_instance_v2" "instance_win" {
name        = "instance_win"
image_id    = data.openstack_images_image_v2.image_name_win.id
flavor_name = "4vcpu.8ram"

block_device {
  uuid                  = data.openstack_images_image_v2.image_name_win.id
  source_type           = "image"
  volume_size           = 100
  boot_index            = 0
  destination_type      = "volume"
  delete_on_termination = true
}

metadata = {
  admin_pass = "Qwe123#"
}

scheduler_hints {
  group = openstack_compute_servergroup_v2.servergroup.id
}

network {
  port = openstack_networking_port_v2.port2.id
}
}

resource "openstack_compute_instance_v2" "instance_win2" {
name        = "instance_win2"
image_id    = data.openstack_images_image_v2.image_name_win.id
flavor_name = "4vcpu.8ram"

block_device {
  uuid                  = data.openstack_images_image_v2.image_name_win.id
  source_type           = "image"
  volume_size           = 100
  boot_index            = 0
  destination_type      = "volume"
  delete_on_termination = true
}

metadata = {
  admin_pass = "Qwe123#"
}

scheduler_hints {
  group = openstack_compute_servergroup_v2.servergroup.id
}

network {
  port = openstack_networking_port_v2.port3.id
}
}

resource "openstack_compute_servergroup_v2" "servergroup" {
name     = "servergroup"
policies = ["affinity"]
}

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

resource "openstack_networking_port_v2" "port" {
name               = "port"
network_id         = openstack_networking_network_v2.network.id
admin_state_up     = "true"
security_group_ids = [openstack_networking_secgroup_v2.secgroup.id]

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

resource "openstack_networking_port_v2" "port2" {
name               = "port"
network_id         = openstack_networking_network_v2.network.id
admin_state_up     = "true"
security_group_ids = [openstack_networking_secgroup_v2.secgroup.id]

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

resource "openstack_networking_port_v2" "port3" {
name               = "port"
network_id         = openstack_networking_network_v2.network.id
admin_state_up     = "true"
security_group_ids = [openstack_networking_secgroup_v2.secgroup.id]

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

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

data "openstack_networking_network_v2" "network_ext" {
name = "ext-net"
}

data "openstack_networking_subnet_ids_v2" "subnets_ext" {
network_id = data.openstack_networking_network_v2.network_ext.id
}

resource "openstack_networking_floatingip_v2" "floatip" {
pool        = data.openstack_networking_network_v2.network_ext.name
subnet_ids  = data.openstack_networking_subnet_ids_v2.subnets_ext.ids
description = "float_ip"
}

resource "openstack_networking_router_v2" "router" {
name                = "router"
admin_state_up      = true
external_network_id = data.openstack_networking_network_v2.network_ext.id
}

resource "openstack_networking_router_interface_v2" "router_interface" {
router_id = openstack_networking_router_v2.router.id
subnet_id = openstack_networking_subnet_v2.subnet.id
}

resource "openstack_networking_floatingip_associate_v2" "fip" {
floating_ip = openstack_networking_floatingip_v2.floatip.address
port_id     = openstack_networking_port_v2.port.id
}

resource "openstack_blockstorage_volume_v3" "vol" {
name        = "myvol"
description = "volume"
size        = 100
}

resource "openstack_compute_volume_attach_v2" "attached" {
instance_id = openstack_compute_instance_v2.instance.id
volume_id   = openstack_blockstorage_volume_v3.vol.id
}


resource "openstack_networking_secgroup_v2" "secgroup" {
name        = "secgroup"
description = "My neutron security group"
}

resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_1" {
direction         = "ingress"
ethertype         = "IPv4"
protocol          = "tcp"
port_range_min    = 22
port_range_max    = 22
remote_ip_prefix  = "0.0.0.0/0"
security_group_id = openstack_networking_secgroup_v2.secgroup.id
}

resource "openstack_networking_secgroup_rule_v2" "secgroup_rule_2" {
direction         = "egress"
ethertype         = "IPv4"
protocol          = "tcp"
port_range_min    = 80
port_range_max    = 80
remote_ip_prefix  = "0.0.0.0/0"
security_group_id = openstack_networking_secgroup_v2.secgroup.id
}

resource "openstack_images_image_v2" "image" {
name = "RancherOS"
image_source_url = "https://releases.rancher.com/os/latest/rancheros-openstack.img"
local_file_path  = "rancheros-openstack.img"
container_format = "bare"
disk_format      = "raw"
min_disk_gb      = "20"
min_ram_mb       = "8192"
visibility       = "private"
}

terraform.tfvars

user_name   = "Example_user"
tenant_name = "Example_tenant"
password    = "Example_password"
auth_url    = "https://portal.inferit.cloud:5000/v3"

 

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