Hi here,
I would like to introduce a new CLI tool that my company and I developed to manage Proxmox VE clusters more efficiently.
This tool is called
It was primary built to make our own lives easier, but it can be helpful to anyone who needs to “bulk” manage multiple Proxmox VE clusters that are spreaded accross different locations. It’s goal is not to replace the Web UI or the new Proxmox Datacenter Manager, instead we focused on using the API to automate more complex tasks that would normally require multiple UI interactions, or that are simply not possible with it.
One of the best feature is that you can define credentials to access several clusters in a single configuration file, allowing you to query and manage any of them from your CLI. Check the configuration section of the README for more details. We support standard user / password auth, but also API tokens and a special mechanism to retrieve credentials via a special command, making it easy to integrate with tools like GnuPG, 1Password, Vault, etc. It also supports
I won’t go over every feature here, but here’s a quick overview of what’s currently available:
. Let’s say that you want to list the VMs in a cluster with associated ressources, filtered by name and output nicely the result in markdown, pvecontrol can do it in a single command:
This is just one simple exemple of the possibilities and I will let you discover more possibilities by diving into the repo.
And of course, we already have a few more features in the testing pipeline — and even more in our heads
I would like to introduce a new CLI tool that my company and I developed to manage Proxmox VE clusters more efficiently.
This tool is called
pvecontrol
and it is available as an opensource project here: https://github.com/enix/pvecontrol.It was primary built to make our own lives easier, but it can be helpful to anyone who needs to “bulk” manage multiple Proxmox VE clusters that are spreaded accross different locations. It’s goal is not to replace the Web UI or the new Proxmox Datacenter Manager, instead we focused on using the API to automate more complex tasks that would normally require multiple UI interactions, or that are simply not possible with it.
One of the best feature is that you can define credentials to access several clusters in a single configuration file, allowing you to query and manage any of them from your CLI. Check the configuration section of the README for more details. We support standard user / password auth, but also API tokens and a special mechanism to retrieve credentials via a special command, making it easy to integrate with tools like GnuPG, 1Password, Vault, etc. It also supports
teleport
(https://goteleport.com) reverse application proxy auth and access, which is useful if you want to hide your API behind a bastion system.I won’t go over every feature here, but here’s a quick overview of what’s currently available:
- Quick overview of cluster ressources
- Listing virtual machines
- Migration virtual machines between nodes
- Listing storages
- Listing tasks
- Geting and tailing task progress and logs
- Listing nodes
- Node evacuation. This is a much nicer and intelligent bulk VM migration
- Sanity checks for cluster ressources, ensuring compliance with our recommended setup

Bash:
$ pvecontrol -c enix-devel-1 --output md vm list --filter name test --sort-by cpus
INFO:root:Proxmox cluster: enix-devel-1
| vmid | name | status | node | cpus | maxmem | maxdisk | tags |
| :----| :----------------| :----------------| :-----------------| :----| :-------| :-------| :-------------------------|
| 101 | test-tag | VmStatus.RUNNING | pve-devel-r1az2-1 | 1 | 1.0 GiB | 2.0 GiB | [] |
| 102 | test3 | VmStatus.RUNNING | pve-devel-r1az2-1 | 1 | 1.0 GiB | 2.2 GiB | [] |
| 103 | test4 | VmStatus.RUNNING | pve-devel-r1az2-2 | 1 | 1.0 GiB | 2.2 GiB | [] |
| 107 | test-tag-restore | VmStatus.RUNNING | pve-devel-r1az2-1 | 1 | 1.0 GiB | 7.0 GiB | [] |
| 100 | test | VmStatus.STOPPED | pve-devel-r1az2-1 | 8 | 1.0 GiB | 2.0 GiB | ['my-tag', 'another-one'] |
This is just one simple exemple of the possibilities and I will let you discover more possibilities by diving into the repo.
And of course, we already have a few more features in the testing pipeline — and even more in our heads
