mrkampf/proxmox-ve

Proxmox VE API Client

0.5.3 2024-05-01 09:10 UTC

README

This PHP 8+ Proxmox library allows, to interact with your Proxmox PVE server and cluster via API.

Latest Stable Version Total Downloads Latest Unstable Version License

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());