mrkampf / proxmox-ve
Proxmox VE API Client
Installs: 21 349
Dependents: 1
Suggesters: 0
Security: 0
Stars: 53
Watchers: 3
Forks: 26
Open Issues: 2
Requires
- php: ^8.0|^8.1|^8.2
- ext-json: *
- lib-curl: *
- guzzlehttp/guzzle: *
This package is auto-updated.
Last update: 2024-12-01 00:10:47 UTC
README
This PHP 8+ Proxmox library allows, to interact with your Proxmox PVE server and cluster via API.
You find any errors, typos or you detect that something is not working as expected please open an issue. I'll try to release a fix asap.
Getting Started
Recommended installation is using Composer. If you do not have Composer, what are you waiting for?
In the root of your project, execute the following:
$ composer require mrkampf/proxmox-ve
Or add this to your composer.json
file:
{ "require": { "mrkampf/proxmox-ve": "^0.4.4" } }
Then perform the installation:
$ composer install --no-dev
Example
From version 3.1
<?php // Require the autoloader require_once 'vendor/autoload.php'; // Use the library namespace use Proxmox\PVE; // Then simply pass your credentials when creating the API client object. $proxmox = new PVE("hostname", "username", "password", 8006, "pve", false); // Note: Use "pam" instead of "pve" if you're using Standard Linux PAM authentication. // Read all nodes print_r($proxmox->nodes()->get()); // Read all LXC print_r($proxmox->nodes()->lxc()->get()); // Read all LXC for a node print_r($proxmox->nodes()->node("node_name")->lxc()->get()); // Read all qemu print_r($proxmox->nodes()->qemu()->get()); // Read all QEMU for a node print_r($proxmox->nodes()->node("node_name")->qemu()->get());
API Token Support
<?php // Require the autoloader require_once 'vendor/autoload.php'; // Use the library namespace use Proxmox\API; // Then simply pass your credentials when creating the API client object. $proxmox = new API("hostname", "USER@REALM!TOKENID", "aaaaaaaaa-bbb-cccc-dddd-ef0123456789", 8006, false); // Read all nodes print_r($proxmox->nodes()->get()); // Read all LXC print_r($proxmox->nodes()->lxc()->get()); // Read all LXC for a node print_r($proxmox->nodes()->node("node_name")->lxc()->get()); // Read all qemu print_r($proxmox->nodes()->qemu()->get()); // Read all QEMU for a node print_r($proxmox->nodes()->node("node_name")->qemu()->get());
Example for lazy login
<?php // Require the autoloader require_once 'vendor/autoload.php'; // Use the library namespace use Proxmox\PVE; //Example for lazy login $proxmox = new PVE("hostname", "username", "password", 8006, "pve", false, true); //Login $proxmox->getApi()->login(); // Read all nodes print_r($proxmox->nodes()->get());
Example for custom http client
<?php // Require the autoloader require_once 'vendor/autoload.php'; // Use the library namespace use Proxmox\PVE; $customGuzzleHttpClient = new GuzzleHttp\Client(); //Example for lazy login $proxmox = new PVE("hostname", "username", "password", 8006, "pve", false, false, $customGuzzleHttpClient); // Read all nodes print_r($proxmox->nodes()->get());
For version 3.1
<?php // Require the autoloader require_once 'vendor/autoload.php'; // Use the library namespace use Proxmox\PVE; /** * Connect established (For version 3.0) * * authType and port defaults to 'pam' and '8006' but you can specify them like so * * !!! WARNING !!! * This variant is after version 3.0 no longer supported * */ $credentials = [ 'hostname' => '127.0.0.1', 'username' => 'root', 'password' => 'example', 'authType' => 'pam', 'port' => '8006', ]; // Then simply pass your credentials when creating the API client object. $proxmox = new PVE($credentials); //Read all nodes print_r($proxmox->nodes()->get()); //Read all lxc print_r($proxmox->nodes()->lxc()->get()); //Read all qemu print_r($proxmox->nodes()->qemu()->get());