2014-04-15 20 views
1

一个非常开放的问题,我需要一些建议,更重要的是指向正确的方向。使用openstack通过php启动实例并根据请求自动构建实例的指导?

我正在寻找使用openstack作为我的私有云(目前使用VMware)的主要目标是能够在我们的web应用程序中启动一个新的VM实例,以便通过php页面触发来部署例如,新的apache工作服务器。下一个目标是开发我们的代码,以便能够查看服务器负载何时变高或需要更多工作服务器来执行任务以自动启动实例?

我一直在看OpenStack API来看看这是否是最好的方法?但也看juju看看你是否可以用魅力来做到这一点,看看juju的api是否最好?

目标是得到这与VMware的合作或取代vmware。

我目前的设置是使用新星作为存储一台笔记本电脑上运行的OpenStack所以与指针任何帮助将是巨大

我知道它是一个开放的问题

回答

1

那么有列出许多的SDK页存在的OpenStack API客户端SDK。

编号:

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

上市的有两个PHP的SDK为OpenStack的现在:

编号:

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

我不会用符咒作为一个界面。坦率地说,我不确定OpenStack是你正在做什么的正确工具。但是,如果你想玩devstack并得到一个想法,我认为rackspace的php客户端SDK可能是一个好的开始。 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);