A command-line interface for Proxmox Virtual Environment
Project description
Proxmox CLI
A powerful command-line interface tool for managing Proxmox Virtual Environment with support for VMs, containers, users, groups, roles, and permissions.
Support
If you find this project helpful, consider supporting its development:
Features
Infrastructure Management
- 🖥️ Virtual Machines - Create, start, stop, and manage VMs
- 📦 LXC Containers - Full container lifecycle management
- 🔧 Nodes - Monitor and manage cluster nodes
- 💾 Storage - Storage configuration and monitoring
- 🗂️ Resource Pools - Organize and manage resource pools
Identity & Access Management (IAM)
- 👤 Users - Create, update, and manage users
- 👥 Groups - Organize users into groups
- 🔐 Roles - Define custom roles with specific privileges
- 🔑 API Tokens - Generate and manage API tokens
- 🛡️ ACLs - Granular permission management
Output & Configuration
- 📊 Multiple Output Formats - JSON (default), Table, YAML, Plain text
- ⚙️ Configuration File - Store credentials and preferences
- 🔒 SSL Control - Flexible SSL verification options
- 🚀 Fast & Efficient - Optimized for automation and scripting
Installation
From PyPI (Recommended)
pip install proxmox-cli
From Source
git clone https://github.com/rwgb/proxmox.cli.git
cd proxmox.cli
pip install -e .
Development Installation
pip install -e ".[dev]"
Quick Start
Basic Usage
# List all VMs (JSON output by default)
proxmox-cli vm list
# List containers in table format
proxmox-cli --output table container list
# List users
proxmox-cli user list
# Show help
proxmox-cli --help
Configuration
Create a configuration file at ~/.config/proxmox-cli/config.yaml:
proxmox:
host: proxmox.example.com
user: root@pam
password: your-password
# Or use API token
# token_name: mytoken
# token_value: your-token-value
verify_ssl: false
output:
format: json # or table, yaml, plain
Usage Examples
Virtual Machines
# List all VMs
proxmox-cli vm list
# List VMs on specific node
proxmox-cli vm list --node pve1
# Start a VM
proxmox-cli vm start 100 --node pve1
# Stop a VM
proxmox-cli vm stop 100 --node pve1
# Get VM status
proxmox-cli vm status 100 --node pve1
Containers
# List all containers
proxmox-cli container list
# Start a container
proxmox-cli container start 108 --node pve1
# Stop a container
proxmox-cli container stop 108 --node pve1
# List available templates on storage
proxmox-cli container templates --node pve1
# List templates available for download
proxmox-cli container available-templates --node pve1
# Download a template
proxmox-cli container download-template \
ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--node pve1 \
--storage local
# Create container from template
proxmox-cli container create 200 \
local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
--node pve1 \
--hostname web-server \
--password "SecurePass123" \
--memory 1024 \
--cores 2 \
--rootfs-size 10 \
--net0 "name=eth0,bridge=vmbr0,ip=dhcp"
User Management
# List all users
proxmox-cli user list
# Create a new user
proxmox-cli user create developer@pve \
--password "SecurePass123" \
--email "dev@example.com" \
--groups "developers"
# Update user
proxmox-cli user update developer@pve --email "newemail@example.com"
# Delete user
proxmox-cli user delete developer@pve
Role & Permission Management
# List all roles
proxmox-cli role list
# Create custom role
proxmox-cli role create CustomRole \
--privs "VM.Allocate,VM.Audit,VM.PowerMgmt"
# Grant permissions
proxmox-cli acl add \
--path "/" \
--roles "PVEAdmin" \
--users "admin@pve"
API Tokens
# List tokens for a user
proxmox-cli token list user@pve
# Create API token
proxmox-cli token create user@pve mytoken \
--comment "Automation token" \
--no-privsep
# Delete token
proxmox-cli token delete user@pve mytoken
Resource Pool Management
# List all resource pools
proxmox-cli pool list
# Create a new resource pool
proxmox-cli pool create production \
--comment "Production environment resources"
# Show pool details and members
proxmox-cli pool show production
# Add VMs to a pool
proxmox-cli pool add-member production \
--vm 100 --vm 101 --vm 102
# Add storage to a pool
proxmox-cli pool add-member production \
--storage local-lvm
# Remove members from a pool
proxmox-cli pool remove-member production \
--vm 100
# Update pool information
proxmox-cli pool update production \
--comment "Updated production pool"
# Delete a pool
proxmox-cli pool delete production
Storage Management
# List all storage
proxmox-cli storage list
# Create a directory storage for backups
proxmox-cli storage create backup-storage \
--path /mnt/backups \
--content backup
# Create storage for ISOs and templates
proxmox-cli storage create iso-storage \
--path /mnt/isos \
--content "iso,vztmpl"
# Create VM disk storage with shared flag
proxmox-cli storage create vm-storage \
--path /mnt/vms \
--content "images,rootdir" \
--shared
# Create snippets storage for custom scripts
proxmox-cli storage create snippets-storage \
--path /mnt/snippets \
--content snippets
# Create storage with backup retention
proxmox-cli storage create backup-storage \
--path /mnt/backups \
--content backup \
--maxfiles 10 \
--prune-backups "keep-last=3,keep-weekly=2"
# Create storage on specific nodes
proxmox-cli storage create local-backup \
--path /mnt/local-backup \
--content backup \
--nodes "node1,node2"
Content Types:
images- VM disk images (qcow2, raw, vmdk)rootdir- Container file systemsvztmpl- Container templatesbackup- Backup filesiso- ISO imagessnippets- Custom scripts and configuration snippets
Output Formats
The CLI supports multiple output formats:
# JSON (default) - Perfect for scripting
proxmox-cli vm list
# Table - Human-readable
proxmox-cli --output table vm list
# YAML - Configuration-friendly
proxmox-cli --output yaml user list
# Plain text - Minimal
proxmox-cli --output plain node list
Development
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run linting
flake8 src/
black src/
Configuration
Create a configuration file at ~/.config/proxmox-cli/config.yaml:
proxmox:
host: your-proxmox-host
user: root@pam
verify_ssl: false
License
MIT
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file proxmox_cli-0.4.2.tar.gz.
File metadata
- Download URL: proxmox_cli-0.4.2.tar.gz
- Upload date:
- Size: 27.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc8bd407518a6b863f096a63a54d1a775e7b6357c53d9ec6cffcf25affd752fb
|
|
| MD5 |
9a7c5846815cfe0d71ef161a03f3640d
|
|
| BLAKE2b-256 |
e26b63a9bb8b9482b7b7391c3e8bfe791a7d1da85bef9b8421775c98cb5420b7
|
File details
Details for the file proxmox_cli-0.4.2-py3-none-any.whl.
File metadata
- Download URL: proxmox_cli-0.4.2-py3-none-any.whl
- Upload date:
- Size: 30.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76a47a64d59389d1d4ef487d34beb869baef3e0ad054d9973ead0518651253af
|
|
| MD5 |
520359e9b3962fbac749b0faeaf43d84
|
|
| BLAKE2b-256 |
f86b9a143eda6951654327a968d19905cc51baba1401d67f30b6171722605aab
|