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.4.0.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

pvecontrol-0.4.0-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pvecontrol-0.4.0.tar.gz
Algorithm Hash digest
SHA256 df756782a1c4c17f9bb95d634fbdbc5e279a2403fc5918eeb7f216c5f86031e2
MD5 c2866509a60609e517917a028c1074b1
BLAKE2b-256 96c970ea9794172ab6116130e02de3d2c991491a893541cc2a19f36a889bab99

See more details on using hashes here.

Provenance

The following attestation bundles were made for pvecontrol-0.4.0.tar.gz:

Publisher: release.yml on enix/pvecontrol

Attestations:

File details

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

File metadata

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

File hashes

Hashes for pvecontrol-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e350949fb16a75b0f51d73c1e784215329cf203576be51ca04b7235865b83e5c
MD5 5a047b4ce59b5ca648a7ab5d36342782
BLAKE2b-256 abde66e444cee916a98a7e05a573dfc7b3191aca1232a17388c1fac84a7de3b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pvecontrol-0.4.0-py3-none-any.whl:

Publisher: release.yml on enix/pvecontrol

Attestations:

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