使用 CLI 回滾更新

本教學教導您如何使用 CLI 回滾部署。 完成本教學後,您將學會如何將已部署的變更還原為專案中的可部署架構組態。 本教學結束時,您的可部署架構組態將與上次成功部署的版本相符。

想像您是 Example Corp 企業的軟體開發人員。 您的基礎架構架構師發現雲端自動化的 Code Engine 可部署架構,而您的雲端自動化工程專業人員則對其進行客製化,以完全滿足您的業務需求。 您將這個稱為 Example Corp's infrastructure 的客製化架構部署到兩個區域。 之後,您的雲端自動化工程專業人員發佈了 Example Corp's infrastructure 的新版本,因此您更新了執行中的部署,以使用最新版本。 最近,您的團隊在 us-south 區域發現了一個錯誤。 這個錯誤是新發生的,因此您想要將 us-south 區域的部署回復到之前的狀態,因為您知道該部署並不包含這個錯誤。

本教學使用一個虛構的情境來幫助您瞭解如何將已部署的變更回滾到專案中的可部署架構組態。 當您完成本教學時,請調整每個步驟以符合您組織的需求。

開始之前

  1. 建立一個名為Example Corp's infrastructure 並將其新增至名為 Example Corp catalog

  2. 使用名為 Example Corp infrastructure 的專案,將 Example Corp 的基礎架構部署到兩個區域

  3. 在私有目錄中以新版本更新 Example Corp 的基礎架構,並新增兩個資料庫選項,供您的使用者選擇。 驗證私有目錄中的版本,以便新版本位於 Validated draft 狀態。

  4. 更新您的專案 以使用 Example Corp's infrastructure 的最新版本,並部署變更。

    Example Corp's infrastructure 的最新版本包含可能從您的 Example Corp infrastructure 專案部署的資料庫選項。 完成本教學並不會影響您專案中的任何東西,除了 example-corp-us-south 設定。 如果需要,您可以單獨撤銷部署專案中的其他組態,包括任何資料庫。

  5. 要完成本教學,請安裝 IBM Cloud CLI

尋找專案 ID、組態 ID 和您要還原的版本

在執行 CLI 指令將變更還原為先前部署的版本之前,您需要 example-corp-us-south 配置的 ID 以及包含該配置的 Example Corp infrastructure 專案的 ID。

若要使用 CLI 找到這些 ID 和版本,請執行下列指令:

  1. IBM Cloud 執行下列 ibmcloud login 命令。 如果您有多個帳戶,系統會提示您選擇使用哪個帳戶:

    ibmcloud login \
        --sso
    

    使用 --sso 選項透過主控台登入。 如果您這樣做,控制台會在網頁瀏覽器中開啟,供您登入。 然後,會產生一個程式碼讓您貼入 CLI。

  2. 在您的帳戶中找到 Example Corp infrastructure 專案的 ID,執行下列 ibmcloud project list 指令:

    ibmcloud project list \
        --all-pages
    

    使用 --all-pages 選項擷取您帳戶中的所有專案。

  3. 使用 Example Corp infrastructure 專案的 ID 和組態的名稱來尋找組態 ID。 執行以下 ibmcloud project configs 指令來執行:

    ibmcloud project configs \
        --project-id <Example-Corp-infrastructure-project-id> \
        --all-pages
    
  4. 使用 Example Corp infrastructure 專案的 ID 和 example-corp-us-south 組態的 ID 來尋找專案中該組態的版本。 執行以下 ibmcloud project config-versions 指令:

    ibmcloud project config-versions \
        --project-id <Example-Corp-infrastructure-project-id> \
        --id <example-corp-us-south-id>
    

    應列出 example-corp-us-south 配置的兩個版本。 版本二處於 deployed 狀態,而版本一處於 superseded 狀態。 最早的版本是部署的第一個版本。 該版本就是您要回滾到的版本。

擷取您要回溯到的版本

現在您有了 ID 和要回溯到的版本,執行下列 ibmcloud project config-version 命令來擷取 example-corp-us-south 的特定版本。 請確定您包含以 JSON 格式傳回輸出的參數:

   ibmcloud project config-version \
        --project-id <Example-Corp-infrastructure-project-id> \
        --id <example-corp-us-south-id> \
        --version 1 \
        --output json

複製輸出 JSONdefinition 區塊的內容,並將其儲存至 definition.json 檔案。 definition 的內容包括您提供的輸入值、您用來授予專案存取權以部署到目標帳戶的授權、您的組態名稱,以及 Example Corp's infrastructure 的 locator ID,該 ID 可識別私有目錄中的可部署架構。 例如,將其視為 example-corp-us-south 第 1 版的快照,其中包含您在專案中提供的所有輸入和資訊:

{
    "authorizations": {},
    "compliance_profile": {},
    "description": "",
    "inputs": {
      "prefix": "us-south",
      "region": "us-south"
    },
    "locator_id": "<Example-Corp-catalog-locator-id>",
    "name": "example-corp-us-south",
    "environment_id": "<Example-Corp-infrastructure-dev-id>"
}

更新設定以使用先前版本的定義

現在您有了 example-corp-us-south 第 1 版的定義,請更新該組態以使用該定義。 這會更新 example-corp-us-south,使其與您部署版本 1 時的設定完全相同。 執行以下 ibmcloud project config-update 命令 example-corp-us-south

ibmcloud project config-update \
     --project-id <Example-Corp-infrastructure-project-id> \
     --id <example-corp-us-south-id> \
     --definition "$(cat definition.json)"

驗證、核准並部署變更

現在 example-corp-us-south 已更新為使用第一版組態的定義,是時候驗證、核准和部署變更了。 您可以 使用主控台進行此操作,也可以執行下列 CLI 指令:

  1. example-corp-us-south 透過執行下列 ibmcloud project config-validate 命令:

    ibmcloud project config-validate \
        --project-id <Example-Corp-infrastructure-project-id> \
        --id <example-corp-us-south-id>
    
  2. 核准 example-corp-us-south,執行下列 ibmcloud project config-approve 命令:

    ibmcloud project config-approve \
        --project-id <Example-Corp-infrastructure-project-id> \
        --id <example-corp-us-south-id> \
        --comment <Rolling back to the previously deployed version>
    
  3. example-corp-us-south 透過執行下列 ibmcloud project config-deploy 指令:

    ibmcloud project config-deploy \
        --project-id <Example-Corp-infrastructure-project-id> \
        --id <example-corp-us-south-id>
    

部署成功完成後,example-corp-us-south 現在還原為您從專案部署的該組態的第一個版本。 您的團隊現在可以調查錯誤,並在需要時發佈更新至 Example Corp's infrastructure