microsrv:~$
Консоль

Установка и настройка провайдера

Подробное руководство по установке провайдера microsrv: официальный реестр OpenTofu, сетевые и OCI-зеркала, параметры аутентификации и data-источники.

Подключение провайдера

Провайдер microsrv опубликован и верифицирован в официальном открытом реестре OpenTofu Registry под именем:

microsrv-cloud/microsrv

Полный идентификатор провайдера: registry.opentofu.org/microsrv-cloud/microsrv.


Варианты установки

1. Официальный реестр (рекомендуемый способ)

Для большинства инсталляций достаточно указать источник провайдера в блоке required_providers:

terraform {
  required_version = ">= 1.6.0"

  required_providers {
    microsrv = {
      source = "microsrv-cloud/microsrv"
      # Версию можно опустить для загрузки последней стабильной сборки,
      # либо зафиксировать диапазон:
      # version = "~> 1.0"
    }
  }
}

При запуске tofu init OpenTofu автоматически скачивает бинарный файл, проверяет цифровую подпись GPG (ключ Microsrv Releases <releases@microsrv.ru>, отпечаток 1EE5DF70…626C19FB) и записывает криптографические хэши в .terraform.lock.hcl.


2. Сетевое зеркало (GitHub Pages)

Если прямой доступ к registry.opentofu.org заблокирован корпоративным фаерволом или нестабилен, используйте официальное сетевое зеркало на GitHub Pages в стандартном формате Provider Network Mirror:

https://microsrv-cloud.github.io/terraform-provider-microsrv/

Чтобы настроить OpenTofu на использование зеркала, создайте или отредактируйте файл ~/.tofurc (или файл, путь к которому указан в переменной TF_CLI_CONFIG_FILE):

provider_installation {
  network_mirror {
    url     = "https://microsrv-cloud.github.io/terraform-provider-microsrv/"
    include = ["registry.opentofu.org/microsrv-cloud/microsrv"]
  }
  direct {
    exclude = ["registry.opentofu.org/microsrv-cloud/microsrv"]
  }
}

После настройки зеркала вы продолжаете использовать стандартный блок source = "microsrv-cloud/microsrv". Зеркало обновляется автоматически при каждом релизе.


3. OCI-зеркало (GitHub Packages / GHCR)

Каждый релиз провайдера публикуется в реестре контейнеров GitHub Container Registry в виде OCI-артефакта (требуется OpenTofu >= 1.7, для анонимной загрузки без авторизации — OpenTofu >= 1.13):

ghcr.io/microsrv-cloud/terraform-provider-microsrv:<версия>

Конфигурация в ~/.tofurc:

provider_installation {
  oci_mirror {
    repository_template = "ghcr.io/microsrv-cloud/terraform-provider-microsrv"
    include             = ["registry.opentofu.org/microsrv-cloud/microsrv"]
  }
  direct {
    exclude = ["registry.opentofu.org/microsrv-cloud/microsrv"]
  }
}

[!NOTE] При использовании пользовательских зеркал OpenTofu сохраняет контрольные суммы в .terraform.lock.hcl только для текущей операционной системы. Если вашей инфраструктурой управляет команда на разных платформах (Linux, macOS, Windows), выполните генерацию мультиплатформенного замка:

tofu providers lock -platform=linux_amd64 -platform=linux_arm64 -platform=darwin_arm64 -platform=darwin_amd64

Аутентификация и параметры провайдера

Провайдер поддерживает настройку как через аргументы HCL-блока provider "microsrv", так и через переменные окружения:

provider "microsrv" {
  # URL API шлюза (по умолчанию: https://api.microsrv.ru)
  endpoint = "https://api.microsrv.ru"

  # Токен доступа (PAT) с префиксом sel_
  token    = var.microsrv_token
}
Параметр блока Переменная окружения По умолчанию Описание
endpoint MICROSRV_ENDPOINT https://api.microsrv.ru Базовый URL API плоскости управления
token MICROSRV_TOKEN — Персональный токен доступа (sel_…)
api_key MICROSRV_API_KEY — Псевдоним для параметра token (взаимоисключающий с token)

[!TIP] Рекомендуемый подход для локальной разработки и CI/CD — не указывать токен в коде HCL, а передавать его через переменную окружения export MICROSRV_TOKEN="sel_...". В этом случае блок провайдера остаётся пустым:

provider "microsrv" {}

Data-источники для обнаружения параметров

Провайдер предоставляет набор data-источников для динамического получения идентификаторов регионов, конфигураций оборудования (flavor) и базовых образов ОС без жесткой привязки строковых ID.

1. Регионы (microsrv_regions и microsrv_region)

# Получение списка всех доступных регионов
data "microsrv_regions" "all" {}

# Поиск конкретного региона по символьному коду
data "microsrv_region" "central" {
  code = "ru-yndx-central"
}

output "primary_region_id" {
  value = data.microsrv_region.central.id
}

2. Конфигурации ресурсов (microsrv_flavors и microsrv_flavor)

Пресеты ресурсов определяют количество vCPU и объём RAM для виртуальных машин и контейнеров:

# Получение списка всех доступных конфигураций
data "microsrv_flavors" "all" {}

# Поиск конкретной конфигурации:
# - Для виртуальных машин: std.1c2g, std.2c4g, std.4c8g (требуется >= 1 vCPU / 2 GiB RAM)
# - Для контейнеров: micro.1c512m, std.1c2g, std.2c4g
data "microsrv_flavor" "std" {
  code = "std.1c2g"
}

data "microsrv_flavor" "micro" {
  code = "micro.1c512m"
}

3. Образы операционных систем (microsrv_images и microsrv_image)

Базовые дистрибутивы для создания загрузочных томов виртуальных машин:

# Поиск образа Ubuntu 24.04 LTS (Noble Numbat)
data "microsrv_image" "ubuntu" {
  code = "ubuntu-noble"
}

4. Проекты, квоты и биллинг

# Поиск существующего проекта по имени
data "microsrv_project" "existing" {
  name = "production"
}

# Текущие квоты активного проекта
data "microsrv_quotas" "current" {}

# Актуальная сетка тарификации
data "microsrv_pricing" "rates" {}

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