IBM Cloud Docs
检测工作空间中的漂移

检测工作空间中的漂移

IBM Cloud® Schematics 使用户能够使用 declarative 基础架构即代码 (IaC) 概念,通过基于 Terraform 的工作空间来部署,管理和处理基础架构资源。 但是,部署 Terraform 配置并创建资源时,并不意味着这些资源保持由配置声明的状态。 基础结构状态的任何更改都称为 drift。 当已部署的基础结构与模板配置定义的所需 (声明式) 状态不同时,会发生此问题。

由于许多原因,可能发生漂移。 最常见的原因是在 Terraform 自动化之外手动更改基础结构。 然后,已部署的工作空间的 Terraform 状态文件将不再与已部署的基础架构资源同步,并且该工作空间据说处于漂移状态。

由于配置上下文中的许多原因,可能会发生漂移:

  • 在不应用更改的情况下添加模板配置或从模板配置中除去资源。
  • 正在更改模板资源定义。
  • 在模板配置外部,手动进行更改时会发生漂移。 例如,通过对云资源执行命令行操作,或者通过云控制台进行更改。
  • 可通过其他自动化工具进行。

示例漂移方案

通过使用 IBM Cloud Schematics 和配置模板来供应 VSI 实例。 DevOps 云用户可以通过登录到云控制台并修改实例的引导卷或添加以太网接口来修改供应的 VSI 配置。 这些更改将导致在 drift 中进行基础架构部署。

IBM Cloud Schematics 支持使用 Terraform 可预测地 管理基础架构的资源生命周期。 当基础结构的实际状态与 Terraform 模板配置中定义的状态不同时,会发生漂移。

Terraform 无法检测未使用 Terraform 进行管理或配置的资源和属性中的漂移。 例如,Terraform 无法检测虚拟机中由于在本地安装应用程序或使用配置管理工具 (例如 ChefAnsible) 而产生的更改。

IBM Cloud漂移检测

可以在 IBM Cloud Schematics中检测 Terraform 自动化工作空间的漂移。 您可以使用以下三种方法来检查漂移检测。

使用 UI 进行漂移检测

您可以从 Schematics 工作空间作业页面对工作空间启动漂移检测。 它会启动一个作业来检测工作空间及其已部署资源的漂移。 在执行期间,漂移检测作业为 in progress,完成时具有 failuresuccess。 要查看漂移作业的详细信息,需要检查漂移作业日志以了解漂移状态。

使用 UI 查看检测漂移日志

使用以下步骤来查看漂移作业日志。

  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. 获取工作空间标识

  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