Быстрый старт с 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) и требует аутентификации через персональный токен доступа.
- Откройте Консоль управления microsrv.
- В боковом меню перейдите в Доступ → Токены доступа.
- Нажмите кнопку Создать токен (или перейдите на страницу
/access-tokens/create). - Введите понятное имя токена (например,
opentofu-quickstart) и укажите срок действия (0— бессрочный). - Нажмите Создать токен.
- Скопируйте сгенерированный токен (он начинается с префикса
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 автоматически:
- Обратится к официальному реестру
registry.opentofu.org/microsrv-cloud/microsrv. - Проверит цифровую GPG-подпись релиза ключом команды Microsrv (
releases@microsrv.ru). - Загрузит бинарный файл провайдера для вашей операционной системы и архитектуры (Linux/macOS/Windows, amd64/arm64).
- Зафиксирует контрольные суммы в
.terraform.lock.hcl.
Шаг 4. Предварительный просмотр плана (tofu plan)
Сформируйте план изменений и проверьте список создаваемых ресурсов:
tofu plan
В выводе отобразятся 7 запланированных к созданию ресурсов:
microsrv_project.demomicrosrv_ssh_key.adminmicrosrv_vpc.mainmicrosrv_network_interface.eth0microsrv_volume.bootmicrosrv_vm.webmicrosrv_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 в правильном порядке зависимостей.