Rackspace Cloud SDK for PHP入門指南
Rackspace Cloud SDK for PHP 是一個用來幫助PHP開發者更方便的開發基於OpenStack和Rackspace雲(包括公有和私有雲)應用的SDK。
該SDK包括以下組件:
1. php-opencloud語言綁定(在”lib”目錄下)
2. 文檔(在”docs/”目錄下)
3. 示例代碼(在”samples/”目錄下)
如何安裝SDK
該SDK可以通過Rackspace的GitHub源中獲得。https://github.com/rackspace/php-opencloud
獲取最容易得到的發行版本(穩定版)的代碼:
<img src="img/tags.png">
1. 點擊Tags鏈接
2. 選擇最新的版本,點擊下面的”zip”或者”.tar.gz”按鈕
3. 在你的下載目錄中找到你剛下載的文件。記住目錄位置,你待會會用到它。
創建一些雲伺服器
在這個例子中,你將會寫代碼來創建兩個運行Ubuntu13.04系統的1GB的雲伺服器。你需要一個文本編輯器來編輯如下代碼。下面是完整的代碼:
<?php
require('/path/to/lib/php-opencloud.php');
define('IMAGE_UBUNTU', '9922a7c7-5a42-4a56-bc6a-93f857ae2346');
define('FLAVOR_1GB', '3');
// 創建證書
$connection = new \OpenCloud\Rackspace(
RACKSPACE_US,
array( 'username' => 'USERNAME',
'password' => 'PASSWORD'));
// 連接compute service
$compute = $connection->Compute('cloudServersOpenStack', 'ORD');
// 尋找鏡像
$image = $compute->Image(IMAGE_UBUNTU);
// 獲取flavor object
$flavor = $compute->Flavor(FLAVOR_1GB);
// 創建伺服器
for ($i=0; $i<2; $i++) {
$server= $compute->Server(); //get a blank server
$resp= $server->Create(array(
'name'=> sprintf('server-%d', $i),
'image'=> $image,
'flavor'=> $flavor));
//檢查錯誤
if($resp->HttpStatus() > 204)
die("Errorbuilding server. Response is ".$resp->HttpBody());
//顯示root密碼
printf("Server[%s] is building. Root password is [%s]\n",
$server->Name(),$server->adminPass);
}
理解這個程式
<?php
require('/path/to/lib/php-opencloud.php');
<?php是所有PHP代碼所必須的(PHP經常潛入到HTML中)。
Require()語句包含瞭**php-opencloud**庫。你要編輯這個字段來指明php-opencloud.php文件的準確路徑(在你剛下載的目錄的lib/文件夾下)。
define('IMAGE_UBUNTU', '9922a7c7-5a42-4a56-bc6a-93f857ae2346');
define('FLAVOR_1GB','3');
這兩個常量定義瞭Ubuntu13.04鏡像的鏡像ID,和1GB的flavor。要想使用不同的flavor或者鏡像,使用novaclient CLI在Rackspace Control Panle中查詢可用值。
// establish our credentials
$connection = new \OpenCloud\Rackspace(
RACKSPACE_US,
array( 'username' => 'USERNAME',
'password' => 'PASSWORD'));
這樣創建瞭一個’$connection’對象使用’\OpenCloud\Rackspace’ connector。該對象需要兩個參數:
1. authentication endpoint的URL(`RACKSPACE_US`是**php-opencloud**提供的一個很有用的常量).
2. 一個包含你的用戶名和密碼的數組。編輯`'USERNAME'“'PASSWORD'`的值來映射你自己的用戶名和密碼。
// 現在,連接 compute service
$compute = $connection->Compute('cloudServersOpenStack', 'ORD');
創建一個”Compute”類,在ORD region中到指定服務實力的連接(在這種情況下,該服務被命名為”cloudServersOpenStack”),
在每次調用時Compute()方法返回一個到服務新的連接。
// first, find the image
$image = $compute->Image(IMAGE_UBUNTU);
// get a flavor object
$flavor = $compute->Flavor(FLAVOR_1GB);
這是另外兩個工廠方法,分別返回一個”Image”對象和一個”Flavor”對象。
// create the server
for ($i=0; $i<2; $i++) {
$server= $compute->Server(); //get a blank server
$resp= $server->Create(array(
'name'=> sprintf('server-%d', $i),
'image'=> $image,
'flavor'=> $flavor));
//check for errors
if($resp->HttpStatus() > 204)
die("Errorbuilding server. Response is ".$resp->HttpBody());
//display the root password
printf("Server[%s] is building. Root password is [%s]\n",
$server->Name(),$server->adminPass);
}
這實際上創建瞭伺服器。從”$compute”服務中創建瞭一個新的,空的伺服器對象,使用的是”Server()”方法。
最後,”Server”對象調用”Create”方法,需要傳遞一個屬性數組作為參數。’name’, ‘image’, ‘flavor’是創建一個新的伺服器需要的屬性。