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源中獲得。http://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’是創建一個新的服務器需要的屬性。