Rackspace Cloud SDK for PHP入門指南

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’是創建一個新的伺服器需要的屬性。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *