Skip to content

Selectel ​

Статус: доступен · пакет wg-flow-plugin-selectel 0.1.1 · провайдер selectel · категория cloud.

Плагин запрашивает проектный токен Keystone и читает каталог сервисов Selectel. В инвентарь попадают облачные серверы как инстансы (Nova), выделенные и Chipcore-серверы (Dedicated API), сетевые диски (Cinder), сети и floating IP (Neutron), группы безопасности и балансировщики (Octavia). Пароль сервисного пользователя остаётся в YAML агента.

Один source — один облачный проект в одном пуле. По умолчанию пул ru-9, адрес https://cloud.api.selcloud.ru/identity/v3. Для другого пула (ru-3, ru-7, …) укажите OS_REGION_NAME из RC-файла OpenStack. Серверы в другом пуле — отдельный source.

account_id — номер аккаунта в правом верхнем углу панели (OS_USER_DOMAIN_NAME и OS_PROJECT_DOMAIN_NAME). project_id — id облачного проекта из меню проекта на странице облачных серверов (OS_PROJECT_ID), не имя проекта. Пользователь — сервисный из IAM → Сервисные пользователи, с доступом к этому проекту.

Плагин только читает API.

DNS, S3, Managed Kubernetes, Managed Databases и образы в 0.1.1 не эмитятся. Если в каталоге пула нет Octavia, балансировщики просто не приходят, source не падает. Список выделенных серверов общий на аккаунт: на дополнительных source того же аккаунта collect_dedicated лучше выключить, иначе инвентарь увидит те же машины под другой меткой.

Установка ​

Агент должен быть подключён к API.

bash
docker compose exec agent wg-flow-agent plugin install selectel
# или
wg-flow-agent plugin install selectel

Дальше — локальный UI → Connections → selectel или YAML.

Что попадает в инвентарь ​

Объект Selectelresource_typeЗаметки
Облачный серверinstanceprovider_resource_id = instance:{id}. ACTIVE → active, SHUTOFF и пауза → stopped, переходные состояния → pending, ERROR → error. Регион — зона доступности (ru-9a). Пул в metadata.pool. Публичный IPv4 → metadata.primary_ipv4, серые адреса → metadata.private_ips. vCPU и память — cpu_cores и mem_gb. Локальный диск флейвора — disk_gb, только если он больше нуля
Выделенный серверserverserver:{uuid}. Dedicated API GET /resource, типы server и serverchip. Имя — user_desc, иначе конфигурация. active → active, processing → pending, expired → stopped. Публичный IPv4 из IPAM → metadata.primary_ipv4. Firewall, сеть и colocation не эмитятся
Сетевой дискstoragevolume:{id}. available и in-use → active, creating → pending. Размер в metadata.size_gb
Сетьnetworknetwork:{id}. CIDR подсетей в metadata.ip_ranges
Floating IPnetworkfloating-ip:{id}. metadata.product = floating_ip. DOWN → stopped
Группа безопасностиfirewallfirewall:{id}. Краткий список правил в metadata
Балансировщикload_balancerlb:{id}. operating_status: OFFLINE → stopped, provisioning_status: ERROR → error

Отдельного типа ip в инвентаре нет, поэтому floating IP — это network.

Куски сбора можно выключить отдельно. Выключенный кусок не попадает в следующий успешный sync, и инвентарь помечает эти строки неактивными. Ошибка списка серверов, дисков, сетей или групп безопасности роняет весь source: частичный список не отправляется.

Несколько проектов или пулов — несколько sources. provider_account — ваша метка.

YAML ​

yaml
plugins:
  selectel:
    enabled: true
    sources:
      - id: ru9
        provider_account: "selectel-ru9"
        sync_interval_seconds: 300
        auth_url: "https://cloud.api.selcloud.ru/identity/v3"
        region: "ru-9"
        username: "svc-inventory"
        password: "…"
        account_id: "123456"
        project_id: "…"
        collect_servers: true
        collect_dedicated: true
        collect_volumes: true
        collect_networks: true
        collect_floating_ips: true
        collect_firewalls: true
        collect_load_balancers: true

Поля source ​

ПолеОбязательноОписание
idдаКлюч в логах (selectel/ru9)
provider_accountдаМетка проекта в инвентаре
auth_urlнетПо умолчанию https://cloud.api.selcloud.ru/identity/v3
regionнетПул, по умолчанию ru-9. Это OS_REGION_NAME
username, passwordдаСервисный пользователь
account_idдаНомер аккаунта
project_idдаOS_PROJECT_ID
collect_*нетПо умолчанию true
sync_interval_secondsнетМинимум 300

Проверка ​

bash
wg-flow-agent status
wg-flow-agent dry-run

В JSON provider: selectel. Health получает токен и вызывает GET {nova}/servers/detail?limit=1. Пароль в инвентарь не пишется. Если Nova не принимает микроверсию 2.67, список серверов запрашивается ещё раз без этого заголовка.

Частые ошибки ​

СимптомЧто проверить
401 / 403Имя и пароль сервисного пользователя, номер аккаунта и OS_PROJECT_ID. У пользователя есть роль на этот проект
Compute endpoint not foundregion совпадает с пулом, где созданы серверы. Каталог другого пула не используется
Пустой список серверовcollect_servers включён; серверы есть в этом проекте и пуле
Диски пропали после synccollect_volumes выключили; инвентарь гасит пропущенные строки
Нет балансировщиковВ каталоге пула нет Octavia — это не ошибка source
Дубли с другим плагиномразный provider — это нормально; слияние в кабинете