Skip to content

mws_compute_virtual_machine (Resource)

Виртуальная машина (ВМ) — программная эмуляция физического сервера, предназначенная для запуска операционных систем и приложений

Пример использования

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

resource "mws_vpc_network" "network" {
  network = var.network_name
}

resource "mws_vpc_subnet" "subnet" {
  subnet  = var.subnet_name
  network = mws_vpc_network.network.network
  cidr    = "192.168.0.0/16"
}

resource "mws_vpc_address" "vm_primary_network_interface_address" {
  network = mws_vpc_network.network.network
  subnet  = mws_vpc_subnet.subnet.metadata.id
  address = "${var.vm_name}-primary-network-interface-address"
}

resource "mws_vpc_external_address" "vm_external_address" {
  external_address = "${var.vm_name}-external-address"
}

resource "mws_compute_disk" "disk" {
  disk      = var.disk_name
  disk_type = "diskTypes/nbs-pl2"
  iops      = 1000
  size      = "10GB"
  source = {
    image = data.mws_compute_image.image.metadata.id
  }
}

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

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

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

  network = {
    network_interfaces = [
      {
        name    = "${var.vm_name}-network-interface-primary"
        primary = true
        addresses = [
          {
            address = {
              ref = mws_vpc_address.vm_primary_network_interface_address.metadata.id
            }
            one_to_one_nat = {
              external = {
                address = {
                  ref = mws_vpc_external_address.vm_external_address.metadata.id
                }
              }
            }
          }
        ]
      }
    ]
  }
}

variable "vm_name" {
  type        = string
  default     = "my-test-vm"
  description = "Virtual machine name"
}

variable "network_name" {
  type        = string
  default     = "my-test-network"
  description = "Network name"
}

variable "subnet_name" {
  type        = string
  default     = "my-test-subnet"
  description = "Subnet name"
}

variable "disk_name" {
  type        = string
  default     = "my-test-disk"
  description = "Disk name"
}

Schema

Required

  • virtual_machine (String)

Optional

Read-Only

Nested Schema for hardware

Optional:

  • graceful_shutdown_timeout (String) Время ожидания (таймаут) при отключении по ACPI

Выключение виртуальной машины происходит в 2 этапа:

  1. Гостевой ОС передается сигнал ACPI shutdown.
  2. В случае если гостевая ОС не завершила работу за заданное время, агент принудительно останавливает ВМ.

При timeout=0 первый этап пропускается

  • power (String) Целевое состояние питания виртуальной машины

Nested Schema for metadata

Optional:

  • description (String) Описание ресурса.
  • display_name (String) Отображаемое имя. Необязательное поле, можно свободно задавать и изменять для удобства организации ресурсов.

Read-Only:

  • create_time (String) Дата создания объекта.
  • delete_time (String) Время запроса на удаление ресурса (не фактическое время удаления).
  • id (String) ID свойства
  • purge_time (String)
  • usages (Attributes List) Связи с другими ресурсами. В зависимости от типа связи, операции над ресурсом могут быть ограничены. (see below for nested schema)

Nested Schema for metadata.usages

Read-Only:

  • name (String) Имя связи, требуется для модификации коллекции
  • resource (String) ссылка на ресурс
  • usage_type (String) Тип связи. Помимо стандартных own и use могут быть добавлены специализированные типы для конкретных сервисов

Nested Schema for network

Optional:

Nested Schema for network.network_interfaces

Required:

  • name (String)

Optional:

  • addresses (Attributes List) К одному сетевому интерфейсу можно подключить одновременно 4 разных сетевых адреса
  • IPv4 internal
  • IPv4 external
  • IPv6 internal
  • IPv6 external (see below for nested schema)
  • ip_forwarding_enabled (Boolean)
  • primary (Boolean)

Nested Schema for network.network_interfaces.addresses

Optional:

Nested Schema for network.network_interfaces.addresses.address

Optional:

  • ref (String)

Nested Schema for network.network_interfaces.addresses.one_to_one_nat

Optional:

Nested Schema for network.network_interfaces.addresses.one_to_one_nat.external

Optional:

Nested Schema for network.network_interfaces.addresses.one_to_one_nat.external.address

Optional:

  • ref (String)

Nested Schema for os

Optional:

  • hostname (String)
  • local_domain (String)
  • metadata (Attributes) (see below for nested schema)
  • standard_dns_records (Boolean)

Nested Schema for os.metadata

Optional:

  • attributes (Map of String)

Nested Schema for storage

Required:

Nested Schema for storage.disks

Required:

  • name (String) Уникальное имя диска в рамках виртуальной машины

Optional:

  • boot (Boolean)
  • device_name (String) Уникальное имя устройства, которое отображается в дереве /dev/disk/by-id/mws-* Linux. Если не указано - "mws-{name}", если указано - "mws-{deviceName}"
  • disk (Attributes) (see below for nested schema)

Nested Schema for storage.disks.disk

Optional:

  • ref (String)

Nested Schema for timeouts

Optional:

  • create (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
  • delete (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
  • update (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).

Nested Schema for status

Read-Only:

Nested Schema for status.hardware

Read-Only:

  • graceful_shutdown_timeout (String) Время ожидания (таймаут) при отключении по ACPI

Выключение виртуальной машины происходит в 2 этапа:

  1. Гостевой ОС передается сигнал ACPI shutdown.
  2. В случае если гостевая ОС не завершила работу за заданное время, агент принудительно останавливает ВМ.

При timeout=0 первый этап пропускается

  • power (String) Текущее состояние питания виртуальной машины

Nested Schema for status.network

Read-Only:

Nested Schema for status.network.network_interfaces

Read-Only:

  • addresses (Attributes List) (see below for nested schema)
  • ip_forwarding_enabled (Boolean) Признак, может ли сетевой интерфейс (адаптер) принимать трафик с нецелевого ip
  • name (String) Уникальный в рамках ВМ псевдоним (alias) сетевого интерфейса

Nested Schema for status.network.network_interfaces.addresses

Read-Only:

  • dns (Attributes List) (see below for nested schema)
  • ip_address (String) Выделенный IP-адрес
  • network (String) Сеть, в которой был создан адрес
  • one_to_one_nat (Attributes) (see below for nested schema)
  • ready (Attributes) Статус ресурса Адрес (see below for nested schema)
  • ref (String) ref на ресурс Адрес
  • standard_dns (Attributes) (see below for nested schema)
  • subnet (String) Подсеть, в которой был создан адрес

Nested Schema for status.network.network_interfaces.addresses.dns

Read-Only:

  • name (String) DNS-имя виртуальной машины в MWS Cloud Platform
  • ptr (Boolean) Создать обратную DNS-запись
  • ttl (String) Продолжительность хранения DNS записи в кеше

Nested Schema for status.network.network_interfaces.addresses.one_to_one_nat

Read-Only:

  • external (Attributes) Статус внешнего (публичного) Адреса (see below for nested schema)
  • ready (Attributes) Ссылка на ресурс состояние ресурса OneToOneNat (see below for nested schema)
  • ref (String) Ссылка на ресурс OneToOneNat

Nested Schema for status.network.network_interfaces.addresses.one_to_one_nat.external

Read-Only:

  • ip_address (String) Фактически присвоенный публичный Адрес
  • ref (String) ref на публичный Адрес

Nested Schema for status.network.network_interfaces.addresses.one_to_one_nat.ready

Read-Only:

  • message (String) Описание статуса
  • state (String) Состояние ресурса

Nested Schema for status.network.network_interfaces.addresses.ready

Read-Only:

  • message (String) Описание статуса
  • state (String) Состояние ресурса

Nested Schema for status.network.network_interfaces.addresses.standard_dns

Read-Only:

  • name (String) DNS-имя виртуальной машины в MWS Cloud Platform
  • ptr (Boolean) Создать обратную DNS-запись
  • ttl (String) Продолжительность хранения DNS записи в кеше

Nested Schema for status.os

Read-Only:

  • fqdn (String) Предоставляет информацию о результирующем FQDN, доступном в виртуальной машине с помощью запуска утилиты 'hostname -f'. Результат обработки полей spec/os/hostname и spec/os/localDomain, а также дефолтов на основе metadata/name в случае, если эти поля не заданы.
  • standard_dns_records (Boolean)

Nested Schema for status.ready

Read-Only:

  • message (String) Описание статуса
  • state (String) Состояние ресурса

Nested Schema for status.service_account

Read-Only:

  • display_name (String) Отображаемое имя сервисного аккаунта (может отличаться от имени в ID).
  • ready (Attributes) Информация о статусе реконсиляции (see below for nested schema)
  • ref (String) Ссылка на сервисный аккаунт

Nested Schema for status.service_account.ready

Read-Only:

  • message (String) Описание статуса
  • state (String) Состояние ресурса

Nested Schema for status.storage

Read-Only:

Nested Schema for status.storage.disks

Read-Only:

  • boot (Boolean) Является ли диск загрузочным
  • device_name (String) Суффикс deviceName в dev/disk/by-id/
  • iops (Number) Количество операций ввода-вывода в секунду (IOPS) для диска
  • name (String) Уникальный в рамках ВМ псевдоним (alias) диска
  • ready (Attributes) Состояние ресурса Диска (see below for nested schema)
  • ref (String) Ссылка на ресурс "Диск"
  • size (String)

Nested Schema for status.storage.disks.ready

Read-Only:

  • message (String) Описание статуса
  • state (String) Состояние ресурса