microsrv:~$
Консоль

Быстрый старт с OpenTofu

Пошаговое руководство по установке провайдера microsrv, получению токена PAT, описанию инфраструктуры и её применению с помощью OpenTofu.

Введение

Провайдер microsrv для OpenTofu (и Terraform) позволяет декларативно описывать, развёртывать и версионировать всю облачную инфраструктуру: проекты, изолированные сети VPC, виртуальные машины, контейнеры, дисковые тома, балансировщики нагрузки и шлюзы доступа.

В этом руководстве вы пройдёте путь от получения токена доступа (PAT) в консоли до первого запуска виртуальной машины через tofu apply.


Требования

  • Установленный CLI OpenTofu (версия >= 1.6, рекомендуется 1.8+) или Terraform (>= 1.5). Проверить установку:

    tofu version
  • Публичный SSH-ключ на вашем компьютере (обычно ~/.ssh/id_ed25519.pub).

  • Учётная запись в Консоли microsrv.


Шаг 1. Получение персонального токена (PAT)

Провайдер обращается к API платформы (https://api.microsrv.ru) и требует аутентификации через персональный токен доступа.

  1. Откройте Консоль управления microsrv.
  2. В боковом меню перейдите в Доступ → Токены доступа.
  3. Нажмите кнопку Создать токен (или перейдите на страницу /access-tokens/create).
  4. Введите понятное имя токена (например, opentofu-quickstart) и укажите срок действия (0 — бессрочный).
  5. Нажмите Создать токен.
  6. Скопируйте сгенерированный токен (он начинается с префикса sel_).

[!WARNING] Значение токена отображается только один раз. Обязательно сохраните его в безопасном месте.

Экспортируйте токен в текущую сессию терминала:

export MICROSRV_TOKEN="sel_ваше_секретное_значение_токена"

При необходимости задайте адрес API (по умолчанию используется рабочий контур https://api.microsrv.ru):

export MICROSRV_ENDPOINT="https://api.microsrv.ru"

Шаг 2. Создание проекта и файла конфигурации

Создайте чистую рабочую директорию и перейдите в неё:

mkdir microsrv-infra && cd microsrv-infra

Создайте файл main.tf:

terraform {
  required_version = ">= 1.6.0"

  required_providers {
    microsrv = {
      # Провайдер автоматически загружается из официального реестра OpenTofu
      source = "microsrv-cloud/microsrv"
    }
  }
}

# Провайдер считывает MICROSRV_TOKEN и MICROSRV_ENDPOINT из переменных окружения
provider "microsrv" {}

# 1. Поиск базовых параметров через data-источники
data "microsrv_region" "ru_central" {
  code = "ru-yndx-central"
}

data "microsrv_flavor" "std" {
  code = "std.1c2g"
}

data "microsrv_image" "ubuntu" {
  code = "ubuntu-noble"
}

# 2. Определение проекта
resource "microsrv_project" "demo" {
  name = "demo-opentofu"
}

# 3. Добавление SSH-ключа
resource "microsrv_ssh_key" "admin" {
  name       = "admin-key"
  public_key = var.ssh_public_key
}

# 4. Приватная сеть VPC
resource "microsrv_vpc" "main" {
  project_id = microsrv_project.demo.id
  region_id  = data.microsrv_region.ru_central.id
  cidr       = "10.42.0.0/24"
}

# 5. Сетевой интерфейс в VPC
resource "microsrv_network_interface" "eth0" {
  project_id = microsrv_project.demo.id
  vpc_id     = microsrv_vpc.main.id
}

# 6. Загрузочный диск (клонируется из базового образа ОС)
resource "microsrv_volume" "boot" {
  project_id = microsrv_project.demo.id
  region_id  = data.microsrv_region.ru_central.id
  size_mib   = 20480
  clone_from = data.microsrv_image.ubuntu.code
}

# 7. Виртуальная машина
resource "microsrv_vm" "web" {
  project_id            = microsrv_project.demo.id
  region_id             = data.microsrv_region.ru_central.id
  flavor_id             = data.microsrv_flavor.std.id
  class                 = "shared"
  name                  = "web-server"
  network_interface_ids = [microsrv_network_interface.eth0.id]
  ssh_key_ids           = [microsrv_ssh_key.admin.id]
  boot_volume_id        = microsrv_volume.boot.id
}

# 8. Маршрут SSH-шлюза для подключения без публичного IP
resource "microsrv_gateway_route" "web_ssh" {
  project_id = microsrv_project.demo.id
  compute_id = microsrv_vm.web.id
  protocol   = "ssh"
}

# Переменные и выходные значения
variable "ssh_public_key" {
  type        = string
  description = "Содержимое вашего публичного SSH-ключа"
}

output "vm_id" {
  description = "ID созданной виртуальной машины"
  value       = microsrv_vm.web.id
}

output "vm_ip" {
  description = "Внутренний IP-адрес машины в VPC"
  value       = microsrv_network_interface.eth0.ip_address
}

output "ssh_command" {
  description = "Команда подключения через SSH-шлюз"
  value       = "ssh web-server@msrv.space"
}

Создайте файл terraform.tfvars и укажите ваш публичный ключ:

ssh_public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... user@workstation"

[!TIP] Быстро подставить свой локальный ключ можно командой:

echo "ssh_public_key = \"$(cat ~/.ssh/id_ed25519.pub)\"" > terraform.tfvars

Шаг 3. Инициализация OpenTofu (tofu init)

Выполните инициализацию проекта:

tofu init

OpenTofu автоматически:

  1. Обратится к официальному реестру registry.opentofu.org/microsrv-cloud/microsrv.
  2. Проверит цифровую GPG-подпись релиза ключом команды Microsrv (releases@microsrv.ru).
  3. Загрузит бинарный файл провайдера для вашей операционной системы и архитектуры (Linux/macOS/Windows, amd64/arm64).
  4. Зафиксирует контрольные суммы в .terraform.lock.hcl.

Шаг 4. Предварительный просмотр плана (tofu plan)

Сформируйте план изменений и проверьте список создаваемых ресурсов:

tofu plan

В выводе отобразятся 7 запланированных к созданию ресурсов:

  • microsrv_project.demo
  • microsrv_ssh_key.admin
  • microsrv_vpc.main
  • microsrv_network_interface.eth0
  • microsrv_volume.boot
  • microsrv_vm.web
  • microsrv_gateway_route.web_ssh

Шаг 5. Применение конфигурации (tofu apply)

Запустите создание инфраструктуры:

tofu apply

OpenTofu запросит подтверждение. Введите yes и нажмите Enter.

Процесс займёт около 20–30 секунд:

  • Провайдер создаст проект и приватную сеть VPC.
  • Выделит загрузочный том из образа Ubuntu 24.04.
  • Запустит виртуальную машину и дождётся статуса READY.
  • Зарегистрирует маршрут на глобальном SSH-шлюзе.

По завершении вы увидите выходные значения:

Apply complete! Resources: 7 added, 0 changed, 0 destroyed.

Outputs:

ssh_command = "ssh web-server@msrv.space"
vm_id = "vm-01923..."
vm_ip = "10.42.0.2"

Шаг 6. Подключение к виртуальной машине

Используйте команду из вывода для подключения через защищённый SSH-шлюз платформы:

ssh web-server@msrv.space

[!NOTE] Шлюз распознаёт имя машины web-server в рамках вашего аккаунта и безопасно проксирует соединение внутрь приватной сети VPC без необходимости выделения публичного IPv4-адреса.


Шаг 7. Удаление инфраструктуры (tofu destroy)

Когда тестовые ресурсы больше не нужны, удалите их одной командой:

tofu destroy

Подтвердите удаление вводом yes. Провайдер корректно остановит виртуальную машину, освободит сетевые интерфейсы, тома и сеть VPC в правильном порядке зависимостей.


Следующие шаги