開始使用 CCI

在 SoftLayer API 的環境定義中,SoftLayer 的「CloudLayer 運算執行實例 (CCI)」是以 SoftLayer_Virtual_Guest 物件代表。
SoftLayer_Virtual_Guest 服務容許與特定的 CCI 互動,而且您可以透過 SoftLayer_Account 服務,與帳戶中的所有 CCI 互動。

建立

訂購新的 CCI 可透過 SoftLayer_Virtual_Guest::createObject 完成。
首先,建立含有 CCI 詳細資訊的 SoftLayer_Virtual_Guest 樣板物件。每一個 CCI 樣板物件至少需要定義下列內容:

  • hostname - 新 CCI 的主機名稱
  • domain - 新 CCI 的網域名稱
  • startCpus - 處理核心數
  • maxMemory - 記憶體配置(以 MB 為單位)
  • hourlyBillingFlag - 設定 true 代表每小時計費,false 則代表每月計費
  • operatingSystemReferenceCode - 指定要安裝哪一個 OS 的程式碼
  • localDiskFlag - 設為 true 將以本端磁碟設置 CCI,false 則代表 SAN 磁碟
$virtualGuestClient = SoftLayer_SoapClient::getClient('SoftLayer_Virtual_Guest', null, $user, $key);
$virtualGuestTemplate = new stdClass();
$virtualGuestTemplate->hostname = 'test1';
$virtualGuestTemplate->domain = 'example.com';
$virtualGuestTemplate->startCpus = 1;
$virtualGuestTemplate->maxMemory = 1024;
$virtualGuestTemplate->hourlyBillingFlag = true;
$virtualGuestTemplate->operatingSystemReferenceCode = 'UBUNTU_LATEST';
$virtualGuestTemplate->localDiskFlag = false;
 
$result = $virtualGuestClient->createObject($virtualGuestTemplate);
print_r($result);

CCI 訂購的所有選項可使用 SoftLayer_Virtual_Guest::getCreateObjectOptions 擷取。
createObject() 方法會引發帳戶變更,所以最好測試 CCI 建立,不要造成使用 SoftLayer_Virtual_Guest::generateOrderTemplate 下單產生訂單物件。
此方法傳回的 SoftLayer_Container_Product_Order 可傳遞至 SoftLayer_Product_Order::verifyOrder,這會通知任何妨礙訂單處理的問題。

$orderClient = SoftLayer_SoapClient::getClient('SoftLayer_Product_Order', Null, $user, $key);
$orderContainer = $virtualGuestClient->generateOrderTemplate($virtualGuestTemplate);
print_r($orderClient->verifyOrder($orderContainer);

清單

使用 SoftLayer_Account::getVirtualGuests 方法,可以從 SoftLayer_Account 服務收集所有「CloudLayer 運算執行實例」清單。此方法會傳回 SoftLayer_Virtual_Guest 資料類型物件的陣列。

$accountClient = SoftLayer_SoapClient::getClient('SoftLayer_Account', Null, $user, $key);
$virtualGuests = $accountClient->getVirtualGuests();
print_r($virtualGuests);

這個完整清單通常用於擷取帳戶中所有 CCI 的相關資訊,在搜尋 ID 不明的特定 CCI 時,也很有用。

$accountClient = SoftLayer_SoapClient::getClient('SoftLayer_Account', Null, $user, $key);
$virtualGuests = $accountClient->getVirtualGuests();
foreach ($virtualGuests as $virtualGuest) {
    if ($virtualGuest->hostname == "server1") {
        $serverId = $virtualGuest->id;
    }
}

詳細資訊

若要取得特定 CCI 的相關資訊,我們可以使用 SoftLayer_Virtual_Guest::getObject,它會傳回 SoftLayer_Virtual_Guest 物件。
物件遮罩可用來併入 SoftLayer_Virtual_Guest 本端內容以外的資料。
以下的範例示範在 SoftLayer_Virtual_Guest 服務中使用 getObject 搭配物件遮罩,該遮罩提供安裝在伺服器上的作業系統所使用的密碼。

$guestClient = SoftLayer_SoapClient::getClient('SoftLayer_Virtual_Guest', $id, $user, $key);
$objectMask = "mask[id, hostname, domain, operatingSystem[passwords]]"
$guestClient->setObjectMask($objectMask);
$virtualGuest = $guestClient->getObject();
print_r($virtualGuest);

由於我們已定義了許多本端內容,因此請注意除了物件遮罩帶入的關聯式內容外,輸出只會包含定義於該遮罩中的一組有限本端內容。

取消

從 SoftLayer_Account 服務中拉出 ID,即可取消 CCI。在本例中,我們從帳戶中拉出所有虛擬來賓,然後使用主機名稱來剖析我們要取消的特定來賓。
這麼做時應謹慎小心,因為虛擬來賓的主機名稱並非唯一。
SoftLayer_Virtual_Guest::deleteObject

$guestClient = SoftLayer_SoapClient::getClient('SoftLayer_Virtual_Guest', $serverId, $user, $key);
$result = $guestClient->deleteObject();
print_r($result);

此方法會立即取消具有所指定 ID 的運算執行實例。
附註:使用 SoftLayer_Virtual_Guest::pause 暫停執行實例並不會停止計費。執行實例必須取消/毀損,才能中止計費。

重新開機

啟動 CCI 的電源有兩種執行方式: