Перейти к содержимому

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

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"
}

Required:

Required:

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

Optional:

  • ip_forwarding_enabled (Boolean)
  • primary (Boolean)

Required:

Optional:

  • one_to_one_nat (Attributes) NAT правило для связи внутреннего адреса с внешним адресом (see below for nested schema)

Optional:

  • ref (String)
  • spec (Attributes) Возможно 2 варианта:
    • запросить резервирование случайного адреса (заданы параметры “version”)
    • запросить резервирование конкретного адреса (заданы параметры “version”, “ipAddress”, остальные пусты) Если необходимо привязать внешний адрес, заполняется параметр “oneToOneNat” (see below for nested schema)

Required:

  • subnet (String) Подсеть облачной сети, к которой принадлежит внутренний адрес

Optional:

  • dns (Attributes List) Настройки DNS (see below for nested schema)
  • ip_address (String) Желаемый адрес. Если не указан, то будет выделен из пула адресов подсети.

Required:

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

Required:

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

Заголовок раздела «Nested Schema for network.network_interfaces.addresses.one_to_one_nat.external»

Required:

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

Заголовок раздела «Nested Schema for network.network_interfaces.addresses.one_to_one_nat.external.address»

Optional:

  • ref (String)
  • spec (Attributes) NAT правило для связи внутреннего адреса с внешним адресом. (see below for nested schema)

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

Заголовок раздела «Nested Schema for network.network_interfaces.addresses.one_to_one_nat.external.address.spec»

Required:

Optional:

Required:

  • disk (Attributes) (see below for nested schema)
  • name (String) Уникальное имя диска в рамках виртуальной машины

Optional:

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

Optional:

Optional:

  • disk_type (String) Ссылка на тип диска
  • iops (Number) Запрашиваемая пользователем IOPS
  • size (String)
  • source (Attributes) Источник для создания диска (see below for nested schema)

Optional:

  • image (String) Ссылка на образ

Required:

  • name (String) Уникальное имя диска в рамках виртуальной машины
  • size (String) Размер диска. Должен быть кратен 248GB

Optional:

  • device_name (String) Уникальное имя устройства, которое отображается в дереве /dev/disk/by-id/mws-* Linux. Если не указано - “mws-{name}”, если указано - “mws-{deviceName}”

Optional:

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

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

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

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

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

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)

Read-Only:

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

Optional:

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

Optional:

  • attributes (Map of String)

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).

Read-Only:

Read-Only:

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

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

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

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

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

Read-Only:

Read-Only:

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

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) Подсеть, в которой был создан адрес

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

Заголовок раздела «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

Заголовок раздела «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

Заголовок раздела «Nested Schema for status.network.network_interfaces.addresses.one_to_one_nat.ready»

Read-Only:

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

Read-Only:

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

Read-Only:

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

Read-Only:

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

Read-Only:

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

Read-Only:

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

Read-Only:

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

Read-Only:

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)

Read-Only:

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