VK Cloud
Статус: доступен · пакет wg-flow-plugin-vkcloud 0.1.0 · провайдер vkcloud · категория cloud.
Плагин берёт токен Keystone и читает каталог сервисов VK Cloud. В инвентарь попадают серверы (Nova), диски (Cinder), сети и floating IP (Neutron), группы безопасности и балансировщики (Octavia). Логин и пароль остаются в YAML агента.
Значения по умолчанию — Москва: https://infra.mail.ru/infra/identity/v3, регион RegionOne. Для Казахстана скопируйте OS_AUTH_URL и OS_REGION_NAME из openrc.sh (Project settings → API access → Download openrc). project_id — это OS_PROJECT_ID с той же вкладки, не id проекта в переключателе кабинета. Доступ к API должен быть включён.
Один source — один проект. Плагин только читает API.
Образы, снапшоты, файловые шары, бэкапы, Kubernetes, базы и object storage в 0.1.0 не эмитятся. Если в каталоге нет Octavia, балансировщики просто не приходят, source не падает.
Установка
Агент должен быть подключён к API.
docker compose exec agent wg-flow-agent plugin install vkcloud
# или
wg-flow-agent plugin install vkcloudДальше — локальный UI → Connections → vkcloud или YAML.
Что попадает в инвентарь
| Объект VK Cloud | resource_type | Заметки |
|---|---|---|
| Cloud server | server | provider_resource_id = server:{id}. ACTIVE → active, SHUTOFF и пауза → stopped, переходные состояния → pending, ERROR → error. Регион — зона доступности. Floating IPv4 → metadata.primary_ipv4, серые адреса → metadata.private_ips |
| Disk | storage | volume:{id}. available и in-use → active, creating → pending. Размер в metadata.size_gb |
| Network | network | network:{id}. CIDR подсетей в metadata.ip_ranges |
| Floating IP | network | floating-ip:{id}. metadata.product = floating_ip. DOWN → stopped |
| Security group | firewall | firewall:{id}. Краткий список правил в metadata |
| Load balancer | load_balancer | lb:{id}. operating_status: OFFLINE → stopped, provisioning_status: ERROR → error |
Отдельного типа ip в инвентаре нет, поэтому floating IP — это network.
Куски сбора можно выключить отдельно. Выключенный кусок не попадает в следующий успешный sync, и инвентарь помечает эти строки неактивными. Ошибка списка серверов, дисков, сетей или групп безопасности роняет весь source: частичный список не отправляется.
Несколько проектов — несколько sources. provider_account — ваша метка.
YAML
plugins:
vkcloud:
enabled: true
sources:
- id: msk
provider_account: "vk-msk"
sync_interval_seconds: 300
auth_url: "https://infra.mail.ru/infra/identity/v3"
region: "RegionOne"
auth_type: password
username: "user@example.com"
password: "…"
project_id: "…"
user_domain_name: "users"
collect_servers: true
collect_volumes: true
collect_networks: true
collect_floating_ips: true
collect_firewalls: true
collect_load_balancers: trueВместо пароля можно указать auth_type: application_credential, application_credential_id и application_credential_secret. Scope проекта тогда берётся из самой учётной записи.
Поля source
| Поле | Обязательно | Описание |
|---|---|---|
id | да | Ключ в логах (vkcloud/msk) |
provider_account | да | Метка проекта в инвентаре |
auth_url | нет | По умолчанию https://infra.mail.ru/infra/identity/v3 |
region | нет | По умолчанию RegionOne. Пустое значение — первый public endpoint каталога |
auth_type | нет | password (по умолчанию) или application_credential |
username, password, project_id | для password | Пользователь проекта и OS_PROJECT_ID |
user_domain_name | нет | По умолчанию users |
application_credential_id, application_credential_secret | для application credential | Секрет показывается один раз при создании |
collect_* | нет | По умолчанию true |
sync_interval_seconds | нет | Минимум 300 |
Проверка
wg-flow-agent status
wg-flow-agent dry-runВ JSON provider: vkcloud. Health получает токен и вызывает GET {nova}/servers/detail?limit=1. Пароль и секрет в инвентарь не пишутся.
Частые ошибки
| Симптом | Что проверить |
|---|---|
| 401 / 403 | Логин, пароль и OS_PROJECT_ID с вкладки API access. Доступ к API включён |
| Compute endpoint not found | region совпадает с OS_REGION_NAME. Для Казахстана другой auth_url |
| Пустой список серверов | collect_servers включён; в проекте есть серверы |
| Диски пропали после sync | collect_volumes выключили; инвентарь гасит пропущенные строки |
| Нет балансировщиков | В каталоге проекта нет Octavia — это не ошибка source |
| Дубли с другим плагином | разный provider — это нормально; слияние в кабинете |