Справочник сущностей и ресурсов
Полный справочник ресурсов провайдера microsrv для OpenTofu: виртуальные машины, контейнеры, диски, VPC, шлюзы, балансировщики и WireGuard.
Обзор ресурсов
Провайдер microsrv предоставляет набор декларативных ресурсов, полностью покрывающих архитектуру облачной платформы. Все ресурсы поддерживают автоматическое отслеживание зависимостей и корректное удаление при tofu destroy.
1. Проекты и ключи доступа
microsrv_project
Проект изолирует вычислительные ресурсы, диски, виртуальные сети и квоты.
resource "microsrv_project" "prod" {
name = "production-workloads"
}
name(string, обязательный) — уникальное имя проекта. Изменение имени приводит к пересозданию ресурса (ForceNew).
microsrv_ssh_key
Публичный SSH-ключ пользователя для авторизации на виртуальных машинах и в контейнерах.
resource "microsrv_ssh_key" "deployer" {
name = "deployer-key"
public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG... deployer@ci"
}
name(string, обязательный) — понятное имя ключа.public_key(string, обязательный) — строка открытого ключа (RSA или ED25519). Изменение приводит к пересозданию (ForceNew).
2. Сетевая инфраструктура
microsrv_vpc
Изолированная приватная сеть (VPC) с высокопроизводительной eBPF-маршрутизацией и встроенным Outbound NAT.
resource "microsrv_vpc" "app_net" {
project_id = microsrv_project.prod.id
region_id = data.microsrv_region.central.id
cidr = "10.42.0.0/24"
}
project_id(string, обязательный) — ID проекта.region_id(string, обязательный) — ID региона размещения.cidr(string, обязательный) — блок IPv4-адресов подсети с маской/24(например,10.42.0.0/24).
microsrv_network_interface
Сетевой интерфейс для подключения виртуальной машины, контейнера или пира к VPC.
resource "microsrv_network_interface" "eth0" {
project_id = microsrv_project.prod.id
vpc_id = microsrv_vpc.app_net.id
# ip_address = "10.42.0.15" # Необязательно: фиксированный статический IP
}
project_id(string, обязательный) — ID проекта.vpc_id(string, обязательный) — ID виртуальной сети.ip_address(string, опционально) — статический IP-адрес из диапазона VPC. Если опущен, платформа автоматически назначает первый свободный адрес. Изменение приводит к пересозданию интерфейса.
3. Блочные диски и хранилище
microsrv_volume
Блочное хранилище на реплицируемых NVMe-накопителях. Поддерживает создание загрузочных дисков (через clone_from) и чистых томов данных.
# Загрузочный диск для виртуальной машины
resource "microsrv_volume" "boot_disk" {
project_id = microsrv_project.prod.id
region_id = data.microsrv_region.central.id
size_mib = 20480 # 20 ГБ
clone_from = data.microsrv_image.ubuntu.code
}
# Дополнительный диск данных для баз данных или логов
resource "microsrv_volume" "data_disk" {
project_id = microsrv_project.prod.id
region_id = data.microsrv_region.central.id
size_mib = 51200 # 50 ГБ
}
project_id,region_id(string, обязательные) — привязка к проекту и региону.size_mib(number, обязательный) — размер диска в мегабайтах (квант 512 МиБ).clone_from(string, опционально) — символьный код базового образа ОС (например,ubuntu-noble). Делает диск загрузочным и неизменяемым по структуре.attached_to(string, только для чтения) — ID инстанса, к которому подключён том.
4. Виртуальные машины (Compute)
microsrv_vm
Полноценная KVM-виртуальная машина с поддержкой живой миграции и режима scale-from-zero.
resource "microsrv_vm" "backend" {
project_id = microsrv_project.prod.id
region_id = data.microsrv_region.central.id
flavor_id = data.microsrv_flavor.std.id
class = "shared" # или "guaranteed"
name = "backend-api"
boot_volume_id = microsrv_volume.boot_disk.id
network_interface_ids = [microsrv_network_interface.eth0.id]
ssh_key_ids = [microsrv_ssh_key.deployer.id]
volume_ids = [microsrv_volume.data_disk.id]
serverless = false
}
flavor_id(string, обязательный) — конфигурация ресурсов. Для виртуальных машин требуются тарифы уровня отstd.1c2g(минимум 1 vCPU / 2 GiB RAM).class(string, обязательный) — класс планирования ("shared"с овербукингом или"guaranteed"с выделенными ядрами).boot_volume_id(string, обязательный) — загрузочный томmicrosrv_volume, созданный с параметромclone_from. В microsrv загрузочный диск всегда объявляется как отдельный ресурс.serverless(bool, опционально) — включение режима засыпания (чекпоинт памяти при бездействии и пробуждение по первому входящему TCP-пакету).- При
destroyвиртуальная машина отключается от томов, а сами тома остаются в сохранности до удаления их собственных ресурсов.
5. Изолированные контейнеры (gVisor)
microsrv_container_image
Предварительная загрузка и валидация OCI-образа из внешнего или публичного реестра.
resource "microsrv_container_image" "nginx" {
project_id = microsrv_project.prod.id
region_id = data.microsrv_region.central.id
ref = "nginx:1.27-alpine"
}
ref(string, обязательный) — тег или дайджест OCI-образа (Docker Hub, GHCR, etc.). Ресурс переходит в статусREADYпосле завершения загрузки.
microsrv_container
Защищённый контейнер в песочнице Google gVisor с постоянным хранилищем Stateful OverlayFS.
resource "microsrv_container" "web" {
project_id = microsrv_project.prod.id
region_id = data.microsrv_region.central.id
flavor_id = data.microsrv_flavor.micro.id # поддерживаются микро-тарифы 512 МБ
class = "shared"
image_id = microsrv_container_image.nginx.id
name = "nginx-proxy"
command = ["nginx", "-g"]
args = ["daemon off;"]
env = { "ENV" = "production" }
restart_policy = "always"
user = "root"
volume_ids = [microsrv_volume.data_disk.id]
network_interface_ids = [microsrv_network_interface.eth0.id]
ssh_key_ids = [microsrv_ssh_key.deployer.id]
serverless = true
}
command,args(list of string, опционально) — переопределение точки входа. Если пустые, используются стандартныеENTRYPOINT/CMDиз OCI-образа.volume_ids(list of string, опционально) — тома данных для сохранения состояния между перезапусками (Stateful OverlayFS).serverless(bool, опционально) — автоматический scale-to-zero при отсутствии сетевого трафика.
6. Шлюзы и публикация сервисов
microsrv_gateway_route
Публикация сервисов на глобальных периметровых шлюзах платформы без выделения публичных IPv4-адресов гостевым машинам.
# Маршрут для подключения по SSH через шлюз msrv.space
resource "microsrv_gateway_route" "vm_ssh" {
project_id = microsrv_project.prod.id
compute_id = microsrv_vm.backend.id
protocol = "ssh"
}
# Маршрут для публикации веб-сервиса по протоколу HTTP/HTTPS
resource "microsrv_gateway_route" "web_http" {
project_id = microsrv_project.prod.id
compute_id = microsrv_container.web.id
protocol = "http"
target_port = 80 # порт внутри контейнера
comment = "Public web entrypoint"
}
# Сквозной TLS SNI passthrough с поддержкой PROXY Protocol
resource "microsrv_gateway_route" "custom_tls" {
project_id = microsrv_project.prod.id
compute_id = microsrv_vm.backend.id
protocol = "tls"
sni_domain = "api.mycompany.com"
proxy_protocol = "v2"
}
compute_id(string, обязательный) — ID виртуальной машины или контейнера.protocol(string, обязательный) —"ssh","http"или"tls".target_port(number, опционально) — внутренний порт приложения для протоколаhttp.sni_domain(string, опционально) — доменное имя для SNI-маршрутизации (для протоколаtls).proxy_protocol(string, опционально) —"v1"или"v2"для передачи реального IP клиента.
7. Балансировщики нагрузки
microsrv_load_balancer
L4 TCP-балансировщик нагрузки с собственным выделенным виртуальным IP (VIP) в приватной сети VPC.
resource "microsrv_load_balancer" "lb" {
project_id = microsrv_project.prod.id
vpc_id = microsrv_vpc.app_net.id
vip = "10.42.0.100"
listeners = [
{
protocol = "tcp"
listen_port = 80
target_port = 80
algorithm = "round_robin"
},
{
protocol = "tcp"
listen_port = 443
target_port = 443
algorithm = "source_ip"
}
]
backends = [
microsrv_vm.backend.id,
microsrv_vm.backend_replica.id,
]
health_check = {
protocol = "tcp"
port = 80
interval_ms = 1000
timeout_ms = 500
}
}
vip(string, обязательный) — выделенный IPv4-адрес в подсети VPC.listeners(list of objects) — правила проксирования портов и алгоритмы балансировки ("round_robin","source_ip").backends(list of string) — список ID целевых виртуальных машин.health_check(object) — параметры проверки доступности бэкендов.
8. Защищённые каналы WireGuard
microsrv_wireguard_peer
Точка подключения клиента к приватной сети VPC через зашифрованный туннель WireGuard.
resource "microsrv_wireguard_peer" "dev_laptop" {
project_id = microsrv_project.prod.id
network_interface_id = microsrv_network_interface.eth0.id
public_key = var.wireguard_public_key
comment = "MacBook Pro Dmitrii"
}
output "wireguard_connection_info" {
value = {
peer_id = microsrv_wireguard_peer.dev_laptop.id
status = microsrv_wireguard_peer.dev_laptop.status
}
}
network_interface_id(string, обязательный) — сетевой интерфейс в VPC.public_key(string, обязательный) — 32-байтный публичный ключ X25519 в кодировке base64.
Экспорт HCL из Консоли («Copy as Code»)
Если вы настроили виртуальную машину, контейнер или сеть через веб-интерфейс, вам не нужно вручную писать конфигурацию OpenTofu:
- Откройте карточку любого ресурса в Консоли.
- Перейдите на вкладку IaC (или нажмите кнопку Copy as Code в мастере создания).
- Скопируйте готовый фрагмент HCL, сгенерированный в строгом соответствии со стандартом
terraform fmt.