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.
docker compose exec agent wg-flow-agent plugin install selectel
# или
wg-flow-agent plugin install selectelДальше — локальный UI → Connections → selectel или YAML.
Что попадает в инвентарь
| Объект Selectel | resource_type | Заметки |
|---|---|---|
| Облачный сервер | instance | provider_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, только если он больше нуля |
| Выделенный сервер | server | server:{uuid}. Dedicated API GET /resource, типы server и serverchip. Имя — user_desc, иначе конфигурация. active → active, processing → pending, expired → stopped. Публичный IPv4 из IPAM → metadata.primary_ipv4. Firewall, сеть и colocation не эмитятся |
| Сетевой диск | storage | volume:{id}. available и in-use → active, creating → pending. Размер в metadata.size_gb |
| Сеть | network | network:{id}. CIDR подсетей в metadata.ip_ranges |
| Floating IP | network | floating-ip:{id}. metadata.product = floating_ip. DOWN → stopped |
| Группа безопасности | firewall | firewall:{id}. Краткий список правил в metadata |
| Балансировщик | load_balancer | lb:{id}. operating_status: OFFLINE → stopped, provisioning_status: ERROR → error |
Отдельного типа ip в инвентаре нет, поэтому floating IP — это network.
Куски сбора можно выключить отдельно. Выключенный кусок не попадает в следующий успешный sync, и инвентарь помечает эти строки неактивными. Ошибка списка серверов, дисков, сетей или групп безопасности роняет весь source: частичный список не отправляется.
Несколько проектов или пулов — несколько sources. provider_account — ваша метка.
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 |
Проверка
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 found | region совпадает с пулом, где созданы серверы. Каталог другого пула не используется |
| Пустой список серверов | collect_servers включён; серверы есть в этом проекте и пуле |
| Диски пропали после sync | collect_volumes выключили; инвентарь гасит пропущенные строки |
| Нет балансировщиков | В каталоге пула нет Octavia — это не ошибка source |
| Дубли с другим плагином | разный provider — это нормально; слияние в кабинете |