Skip to main content

Proxmox VE control

Project description

Proxmox VE Control

release workflow pypi release pypi downloads

pvecontrol (https://pypi.org/project/pvecontrol/) software allows you to manage a Proxmox VE cluster using it's API with a convenient cli for you shell.

It is designed to easy usage of multiple large clusters and get some detailled informations not easily available on the UI and integrated tools.

pvecontrol is based upon proxmoxer a wonderfull framework to communicate with Proxmox projects APIs.

Installation

The software need Python version 3.7+.

The easiest way to install it is simply using pip. New versions are automatically published to pypi repository. It is recommended to use pipx in order to automatically create a dedicated python virtualenv.

pipx install pvecontrol

Configuration

Configuration is a yaml file in $HOME/.config/pvecontrol/config.yaml. It contains configuration needed by proxmoxer to connect to a cluster. pvecontrol curently only use the http API and so work with an pve realm user or token (and also a @pam user but is not recommended at all).

It is highly recommended to setup a dedicated user for the tool usage. You should not use root@pam proxmox node credentials in any ways for production systems because the configuration file is stored in plain text without ciphering on your system.

If you plan to use pvecontrol in read only mode to fetch cluster informations you can limit user with only PVEAuditor on Path / Permissions. This is the minimum permissions needed by pvecontrol to work. For other operations on VMs it is recommended to grant PVEVMAdmin on Path /. This allows start, stop, migrate, ...

Once you have setup your management user for pvecontrol you can generate your configuration file. Default configuration template with all options is available (here)[https://github.com/enix/pvecontrol/blob/dev/src/pvecontrol/config_default.yaml]. Use this file to build your own configuration file or the above exemple:

---

clusters:
- name: my-test-cluster
    host: 192.168.1.10
    user: pvecontrol@pve
    password: superpasssecret
- name: prod-cluster-1
    host: 10.10.10.10
    user: pvecontrol@pve
    password: Supers3cUre
node:
  # Overcommit cpu factor. can be 1 for not overcommit
  cpufactor: 2.5
  # Memory to reserve for system on a node. in Bytes
  memoryminimum: 81928589934592

Usage

pvecontrol provide a complete help message for quick usage:

$ pvecontrol --help
usage: pvecontrol [-h] [-v] [--debug] -c CLUSTER {clusterstatus,nodelist,vmlist,tasklist,taskget} ...

Proxmox VE control cli.

positional arguments:
  {clusterstatus,nodelist,vmlist,tasklist,taskget}
                        sub-command help
    clusterstatus       Show cluster status
    nodelist            List nodes in the cluster
    vmlist              List VMs in the cluster
    tasklist            List tasks
    taskget             Get task detail

options:
  -h, --help            show this help message and exit
  -v, --verbose
  --debug
  -c CLUSTER, --cluster CLUSTER
                        Proxmox cluster name as defined in configuration

pvecontrol works with subcommands for each operation. Each subcommand have it's own help:

$ pvecontrol taskget --help
usage: pvecontrol taskget [-h] --upid UPID [-f]

options:
  -h, --help    show this help message and exit
  --upid UPID   Proxmox tasks UPID to get informations
  -f, --follow  Follow task log output

For each operation it is mandatory to tell pvecontrol on which cluster from your configuration file you want to operate. So the --cluster argument is mandatory.

The simpliest operation on a cluster that allows to check that user is correctly configured is clusterstatus:

$ pvecontrol --cluster my-test-cluster clusterstatus
INFO:root:Proxmox cluster: my-test-cluster
INFO:root:{'nodes': 9, 'id': 'cluster', 'type': 'cluster', 'quorate': 1, 'version': 17, 'name': 'pve-r1az2'}
+-----------+-------+---------+--------------+--------------+
| name      | nodes | quorate | allocatedmem | allocatedcpu |
+-----------+-------+---------+--------------+--------------+
| pve-r1az2 | 9     | 1       | 583.5 GiB    | 167          |
+-----------+-------+---------+--------------+--------------+

If this works, you're ready to go

Development

Install python requirements and directly use the script. All the configurations are common with the standard installation.

pip3 install -r requirements.txt
python3 src/pvecontrol/pvecontrol.py -h

This project use semantic versioning with python-semantic-release toolkit in order to automate release process. All the commits must so use the Angular Commit Message Conventions. Repository main branch is also protected to prevent any unwanted publish of a new release. All updates must go thru a PR with a review.


Made with :heart: by Enix (http://enix.io) :monkey: from Paris :fr:.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pvecontrol-0.3.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

pvecontrol-0.3.0-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file pvecontrol-0.3.0.tar.gz.

File metadata

  • Download URL: pvecontrol-0.3.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pvecontrol-0.3.0.tar.gz
Algorithm Hash digest
SHA256 fd89d02a4164f03f8fa18e6aa9bc35d6a01f8b0f2100c86532642c92f432cdce
MD5 003e562514244d7162e2c1c76c4f0909
BLAKE2b-256 a90164b1e83a6f7520e8231143d123f4202677aec44042df15e59a6e9f8f0508

See more details on using hashes here.

File details

Details for the file pvecontrol-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: pvecontrol-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pvecontrol-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e682b895a06d9dc22fad048fee204f583e92ae85eed96234b4953f280cec21d2
MD5 ee77fd5a71c4daf7368ec6e94c79c76f
BLAKE2b-256 55d76c488951881b16ccc5c31bf5c35e01128e91a9f78d39e15b402a13b5d7db

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page