Skip to content

Виртуальная машина

C помощью Terraform вы можете создавать виртуальные машины (ВМ) любой конфигурации.

Чтобы создать ВМ, добавьте в конфигурацию следующий блок кода:

hcl
data "mws_compute_image" "image" {
  image   = "mws-ubuntu-2204-lts-v20250529"
  project = "mws-ubuntu"
}

resource "mws_compute_disk" "disk" {
  disk      = "<имя диска>""
  disk_type = "diskTypes/nbs-pl2"
  iops      = 1000
  size      = "10GB"
  source = {
    image = data.mws_compute_image.image.metadata.id
  }
}

resource "mws_compute_disk" "data_disk" {
  disk      = "<имя диска>"
  disk_type = "diskTypes/nbs-pl2"
  iops      = 1000
  size      = "20GB"
}

resource "mws_compute_virtual_machine" "vm" {
  virtual_machine = var.vm_name
  vm_type         = "vmTypes/gen-2-8"

  metadata = {
    attributes = {
      user-data = <атрибуты пользовательских метаданных>
    }
  }

  hardware = {
    power                     = "ON"
    graceful_shutdown_timeout = "1m 30s"
  }

  storage = {
    disks = [
      {
        name = "boot"
        boot = true
        disk = {
          ref = mws_compute_disk.disk.metadata.id
        }
      },
      {
        name = "data"
        boot = false
        disk = {
          ref = mws_compute_disk.data_disk.metadata.id
        }
      }
    ]
  }

  network = {
    network_interfaces = [
      {
        name    = "<имя ВМ>-network-interface-primary"
        primary = true
        addresses = [
          {
            address = {
              ref = mws_vpc_address.vm_primary_network_interface_address.metadata.id
            }
          }
        ]
      }
    ]
  }
}

Здесь:

  • основные параметры (секция vm):

    • virtual_machine — уникальное имя ВМ;
    • vm_typeтип ВМ;
  • метаданные ВМ (секция metadata):

  • аппаратные характеристики ВМ (секция hardware)

    • power — указывает, нужно ли включить ВМ после создания (ON — включить, OFF — не включать);
    • graceful_shutdown_timeout — время для безопасного завершения работы (graceful shutdown);
  • диски(секция disks):

    • name — отображаемое имя диска;
    • boot — указывает, является ли диск загрузочным (true — является, false — не является);
    • disk — ссылка на диск.
  • сеть (секция network_interfaces):

    • name — отображаемое имя сетевого интерфейса;
    • primary — указывает, является ли сетевой интерфейс основным (true — является, false — не является);
    • address — ссылка на внутренний IP-адрес сетевого интерфейса.