2017 © Pedro Peláez
 

library ark

Servers' array management

image

innmind/ark

Servers' array management

  • Saturday, April 21, 2018
  • by Baptouuuu
  • Repository
  • 0 Watchers
  • 0 Stars
  • 0 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 5 Versions
  • 0 % Grown

The README.md

Ark

Build Status codecov Type Coverage, (*1)

The ark is a simple tool to spinup new servers and trash the ones in service in your infrastructure., (*2)

It works with the Ovh api and uses the vps endpoints or with Scaleway., (*3)

Only the installation provided by the ark array can be asked to be disposed., (*4)

Ovh implementation detail

Since it's not possible to order new servers via the Ovh api this library rely on the state of your servers., (*5)

If a server is stopped it considers that it is available when asking for a new server. When a server is chosen as a new server it will reinstall the server with a template id that you must provide, the only way to connect to the server will be via a ssh key (no password is generated as we couldn't automate the reinstallation)., (*6)

With ovh disposing a server simply means it will stop the server (allowing it to be considered as available when asking for a new server)., (*7)

Installation

composer require innmind/ark

Usage

Scaleway

use function Innmind\Ark\scaleway;
use function Innmind\ScalewaySdk\bootstrap as sdk;
use Innmind\OperatingSystem\Factory;
use Innmind\ScalewaySdk\{
    Token,
    Region,
    User,
    Organization,
    Image,
};
use Innmind\SshKeyProvider\Local;
use Innmind\Url\Path;

$os = Factory::build();
$sdk = sdk($os->remote()->http(), $os->clock());
$scaleway = $sdk->autnenticated(new Token\Id('uuid')); // create an api token at https://console.scaleway.com/account/credentials

$ark = scaleway(
    $scaleway->servers(Region::paris1()),
    $scaleway->ips(Region::paris1()),
    $scaleway->users(),
    $os->process(),
    new Local(
        $os->control()->processes(),
        Path::of('/home/{serverUser}/.ssh'),
    ),
    new User\Id('your user uuid'),
    new Organization\Id('the organization uuid you want to create servers in'),
    new Image\Id('the image uuid you want to build'),
);

$installation = $ark->forge()->new();
$installAppOn($installation->location());
$ark->array(); // will contain the new server now

Ovh

The very first step is to buy vps servers from ovh, then you can start writing this kind of code:, (*8)

use function Innmind\Ark\ovh;
use Innmind\OperatingSystem\Factory;
use Innmind\SshKeyProvider\Local;
use Innmind\Url\Path;
use Ovh\Api;

$os = Factory::build();

$ark = ovh(
    new Api(/* args */),
    new Local(
        $os->control()->processes(),
        Path::of('/home/{serverUser}/.ssh'),
    ),
    $os,
);

$installation = $ark->forge()->new();
$installAppOn($installation->location());
$ark->array(); // will contain the new server now

You can refer to the ovh documentation to know how you can generate the tokens needed to build the Api object., (*9)

Important: you need to generate the consumer key yourself as it can't be automated. The library requires the following access rights in order to work properly: POST</me*>, DELETE</me*>, GET</vps*> and POST</vps*>., (*10)

The Versions