Руководство по использованию openstack для запуска экземпляра через php и автоматического создания экземпляра в зависимости от запроса?

Очень открытый вопрос, по которому мне нужен совет и, что более важно, указатели в правильном направлении.

Я ищу использование openstack для своего частного облака (в настоящее время использующего VMware), поскольку основная цель - иметь возможность запускать новый экземпляр виртуальной машины из нашего веб-приложения, чтобы это могло быть запущено через страницу php для развертывания нового рабочего сервера apache. Например. Следующая цель - разработать наш код, чтобы можно было видеть, когда нагрузка на сервер становится высокой или когда требуется больше рабочих серверов для выполнения задачи по автоматическому запуску экземпляра?

Я смотрел API openstack, чтобы узнать, лучший ли это подход? Но также посмотрите на juju, чтобы узнать, можете ли вы использовать чары для этого, и посмотрите, лучше ли api для juju?

Цель состоит в том, чтобы заставить это работать с VMware или заменить vmware.

Моя текущая установка запускает openstack на ноутбуке с использованием nova в качестве хранилища, поэтому любая помощь с указателями будет отличной.

Я знаю, что это открытый вопрос


person Grimlockz    schedule 15.04.2014    source источник


Ответы (1)


Ну, есть страница SDK, на которой перечислены многие существующие клиентские SDK OpenStack API.

Ссылка:

https://wiki.openstack.org/wiki/SDKs#PHP

В настоящее время перечислены два PHP SDK для OpenStack:

Ссылка:

https://github.com/rackspace/php-opencloud https://github.com/zendframework/ZendService_OpenStack

Я бы не стал использовать Juju в качестве интерфейса. И, честно говоря, я не уверен, что OpenStack - правильный инструмент для того, что вы делаете. Но, если вы хотите поиграть с devstack и получить представление, я думаю, что SDK для php-клиента rackspace, вероятно, будет хорошим началом. Devstack - тоже неплохой способ получить такой опыт.

пример раскрутки сервера с помощью php-opencloud:

$server = $compute->server();

try {
$response = $server->create(array(
    'name'     => 'My lovely server',
    'image'    => $ubuntu,
    'flavor'   => $twoGbFlavor
));
} catch (\Guzzle\Http\Exception\BadResponseException $e) {

// No! Something failed. Let's find out:

$responseBody = (string) $e->getResponse()->getBody();
$statusCode   = $e->getResponse()->getStatusCode();
$headers      = $e->getResponse()->getHeaderLines();

echo sprintf("Status: %s\nBody: %s\nHeaders: %s", $statusCode, $responseBody, implode(', ', $headers));
}

Это будет функция опроса:

use OpenCloud\Compute\Constants\ServerState;

$callback = function($server) {
if (!empty($server->error)) {
    var_dump($server->error);
    exit;
} else {
    echo sprintf(
        "Waiting on %s/%-12s %4s%%",
        $server->name(),
        $server->status(),
        isset($server->progress) ? $server->progress : 0
    );
}
};

$server->waitFor(ServerState::ACTIVE, 600, $callback);
person Matt Joyce    schedule 15.04.2014