pvesh — не отдельный набор команд поверх Proxmox VE, а прямой доступ к тому же REST API, которым пользуется веб-интерфейс. Четыре подкоманды один в один соответствуют HTTP-методам: get → GET, create → POST, set → PUT, delete → DELETE. Если действие можно сделать мышкой в вебке — значит, за ним стоит API-путь, и этот же путь доступен из терминала без второго вкладки браузера.

Создание ресурса — через create, то есть POST. Пример из документации: маппинг директорий для bind-mount’ов в кластере одной командой, без похода в Datacenter → Resource Mappings:

pvesh create /cluster/mapping/dir --id dir1 \
  --map node=node1,path=/path/to/share1 \
  --map node=node2,path=/path/to/share2

Узнать, какие параметры вообще принимает конкретный путь, не копаясь в API-viewer в браузере — pvesh usage с флагом --command:

pvesh usage /nodes/{node}/qemu/{vmid}/config --command set --verbose

Выводит полную схему принимаемых опций для set по этому пути — то есть не нужно угадывать имена параметров или держать вкладку с документацией открытой рядом с терминалом.

Для скрипта или cron-джоба, который не сидит в интерактивной сессии, полезнее всего --output-format json — результат сразу пригоден для jq без парсинга табличного вывода:

pvesh get /nodes/pve1/qemu/101/status/current --output-format json | jq -r '.status'

Выполненный от root прямо на ноде, pvesh получает доступ к API через права текущего shell-пользователя, минуя тикет/токен-авторизацию — поэтому в локальных cron-скриптах на самом сервере отдельный API-токен не нужен. Токен понадобится, только если дёргать тот же API удалённо, с другой машины через curl.

#proxmox #cli