Lxd
LXD¶
Control LXD through RPC which uses the local instance of LXD and lxc query
to manage local or remote LXD servers.
Install¶
Require this package with composer using the following command:
$ composer require plinker/lxd
Setup¶
The webserver user must be able to execute lxc
commands, so add the user to sudoers file under User privilege specification
:
# User privilege specification root ALL=(ALL:ALL) ALL www-data ALL=(ALL:ALL) NOPASSWD: /snap/bin/lxc
Also add www-data to lxd group:#
sudo usermod --append --groups lxd www-data
Client¶
Creating a client instance is done as follows:
<?php require 'vendor/autoload.php'; /** * Initialize plinker client. * * @param string $server - URL to server listener. * @param string $config - server secret, and/or a additional component data */ $client = new \Plinker\Core\Client( 'http://example.com/server.php', [ 'secret' => 'a secret password', 'lxc_path' => '/snap/bin' ] ); // or using global function $client = plinker_client('http://example.com/server.php', 'a secret password', [ 'lxc_path' => '/snap/bin' ]);
Basic Usage¶
Essentially you can do any LXD operation with the single $client->lxd->query()
method, or you can use the helper methods which cover all the LXD endpoints.
Parameters & Call
Parameter | Type | Description | Default |
---|---|---|---|
remote | string | LXD remote and endpoint | local |
rest method | string | e.g GET, POST, DELETE, PUT, PATCH | GET |
payload | object | json string | Rest json payload | |
mutator | function | Pre-resolve mutation function |
$client->lxd->query('remote:/1.0', 'GET', []);
Full Documentation¶
To view the complete docs for this component including all methods see: https://plinker-rpc.github.io/lxd/
Methods¶
Once setup, you call the class though its namespace to its method, see docs for further details.
List Containers¶
List containers on remote.
Parameters & Call
Parameter | Type | Description | Default |
---|---|---|---|
remote | string | LXD remote | local |
mutator | function | Mutation function |
$client->lxd->containers->list('local', function ($result) { return str_replace('/1.0/containers/', '', $result); });
Response
Array ( [0] => my-container )
Testing¶
There are no tests setup for this component.
Contributing¶
Please see CONTRIBUTING for details.
Security¶
If you discover any security related issues, please contact me via https://cherone.co.uk instead of using the issue tracker.
Credits¶
Development Encouragement¶
If you use this project and make money from it or want to show your appreciation, please feel free to make a donation https://www.paypal.me/lcherone, thanks.
Sponsors¶
Get your company or name listed throughout the documentation and on each github repository, contact me at https://cherone.co.uk for further details.
License¶
The MIT License (MIT). Please see License File for more information.
See the organisations page for additional components.