偵測工作區中的漂移

IBM Cloud® Schematics 可讓使用者使用 declarative 基礎架構即程式碼 (IaC) 概念,利用 Terraform 型工作區來部署、管理及操作基礎架構資源。 不過,當部署 Terraform 配置並建立資源時,並不表示資源維持配置所宣告的狀態。 基礎架構狀態中的任何變更都稱為 drift。 當您部署的基礎架構與範本配置所定義的所需 (宣告式) 狀態不同時,就會發生此情況。

漂移可能有許多原因。 最常見的原因是在 Terraform 自動化之外手動對基礎架構進行變更。 然後,已部署工作區的 Terraform 狀態檔不再與已部署的基礎架構資源同步,且工作區被認為處於漂移狀態。

在您配置的環境定義內,可能會因為許多原因而發生漂移:

  • 在範本配置中新增或移除資源,而不套用變更。
  • 正在變更範本資源定義。
  • 在範本配置外部,當手動進行變更時,即會發生漂移。 例如,從雲端資源上的指令行作業,或透過雲端主控台變更。
  • 可能透過其他自動化工具發生。

漂移實務範例

VSI 實例是使用 IBM Cloud Schematics 及配置範本來佈建。 DevOps 雲端使用者可以透過登入雲端主控台並修改實例的開機磁區或新增乙太網路介面,來修改佈建的 VSI 配置。 這些變更會導致在 drift 中進行基礎架構部署。

IBM Cloud Schematics 可使用 Terraform 來以可預期的方式 管理資源生命週期。 當基礎架構的實際狀態與 Terraform 範本配置中定義的狀態不同時,即會發生漂移。

Terraform 無法在未使用 Terraform 管理或配置的資源和屬性中偵測漂移。 例如,Terraform 無法在虛擬機器中偵測到從本端安裝應用程式或使用配置管理工具 (例如 ChefAnsible) 所產生的變更。

在……中的漂移偵測 IBM Cloud

在 IBM Cloud Schematics中可以進行 Terraform 自動化工作區的漂移偵測。 您可以使用下列三種方法來檢查漂移偵測。

使用使用者介面進行漂移偵測

您可以從 Schematics 工作區工作頁面起始工作區的漂移偵測。 它會起始工作來偵測工作區及其已部署資源的漂移。 在執行期間,漂移偵測工作是 in progress,完成時它會有 failuresuccess。 若要檢閱漂移工作的詳細資料,您需要檢查漂移工作日誌中的漂移狀態。

使用使用者介面檢視偵測漂移日誌

請使用下列步驟來檢視漂移工作日誌。

  1. 工作區儀表板中,選取您要檢查漂移的工作區。

  2. 選取並開啟工作區。

  3. 選取「動作」下拉式清單。

  4. 選取 偵測漂移 選項,以起始偵測漂移工作。

  5. 在執行期間,狀態會顯示完成時 in progress 移至 success 或工作 failure 狀態。

  6. 當工作處於 success 狀態時,可以透過檢閱工作登入的輸出來判定漂移狀態。 畫面擷取會顯示具有偵測到的漂移的成功工作執行範例。

    檢閱成功工作日誌以識別漂移詳細資料。

    2022/04/19 10:10:44 -----  Terraform DRIFT  -----
    2022/04/19 10:10:44 Starting command: terraform-drift-cli drift
    2022/04/19 10:10:44 Terraform Drift | configuration drift identfied
    2022/04/19 10:10:44 Terraform Drift | resource         operation   attribute   drift value
    2022/04/19 10:10:44 Terraform Drift | ibm_is_vpc.vpc   +           tags        schematics:us-east.workspace.myworkspace-drift-demo.bfdd0e2d
    2022/04/19 10:10:44 Terraform Drift | ibm_is_vpc.vpc   +           tags        tag:new1
    2022/04/19 10:10:44 Terraform Drift | ibm_is_vpc.vpc   +           tags        tag:new2
    2022/04/19 10:10:44 Terraform Drift |
    2022/04/19 10:10:44 Command finished successfully.
    2022/04/19 10:10:52 Done with the workspace action
    

    如果工作失敗,請檢閱日誌中失敗的原因,並重新執行工作以更正錯誤狀況。

    失敗範例工作日誌會識別漂移工作失敗的原因。

    2022/04/13 13:05:46 -----  Terraform Commands  -----
    2022/04/13 13:05:46 Could not execute job: Error : Drift cannot be executed since state file doesn't exist. Please run terraform apply to generate state file.
    

使用 CLI 進行漂移偵測

您可以從建立工作區指令起始偵測漂移。 漂移偵測會起始工作來偵測工作區及其特定資源的漂移。 漂移偵測工作是具有適當狀態 (例如 failuresuccess) 的 in progresscompleted。 相反地,若要瞭解漂移工作的詳細資料,您需要檢查漂移工作日誌中的漂移狀態。 請使用下列指令來檢視偵測漂移。

使用 CLI 建立及檢視偵測漂移日誌

您可以依照以下步驟,使用 CLI 偵測 Schematics 工作區中的漂移。

  1. 建立 Schematics 工作區

  2. 取得工作區 ID

  3. 執行 ibmcloud schematics plan

  4. 提取 ibmcloud schematics job logs

  5. 執行 ibmcloud schematics apply

  6. 執行 ibmcloud schematics job run,以在 Schematics 工作區中建立工作。

    ibmcloud schematics job run --command-object workspace --command-object-id <workspace_id> --command-name drift
    
  7. 執行 ibmcloud schematics workspace action,以擷取工作區的所有活動。

    ibmcloud schematics workspace action --id <workspace_id>
    
  8. 執行 ibmcloud schematics job logs 來擷取工作的詳細日誌,以檢視漂移詳細資料。

    ibmcloud schematics logs --id <workspace_id> --act-id <Job_id>
    

建立及檢視透過 API 的偵測漂移

檢閱 CURL 指令,以透過 API 建立及檢視漂移。

  1. 擷取 IAM 存取 步驟,以向 IBM Cloud Schematics進行鑑別。

  2. 建立工作區。 作為有效負載的一部分,您需要新增下列漂移配置。

    {
        commands: [
            {
            command: 'drift',
            command_name: 'drift command',
            command_desc: 'command to detect drift in workspace resources',
            },
        ],
        operation_name: 'drift',
        description: 'command to detect drift in workspace resources',
        }
    
  3. 取得工作區詳細資料

  4. 執行 Schematics 工作計劃

  5. 提取 ibmcloud schematics job logs

  6. 執行 ibmcloud schematics apply

  7. 執行 ibmcloud schematics job run,以建立工作區的工作。

  8. 執行 ibmcloud schematics workspace action,以擷取工作區的所有活動。

  9. 提取 ibmcloud schematics job logs