2014-04-15 17 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);