IBM Cloud Docs
为 Secrets Manager 设置 Terraform

为 Secrets Manager 设置 Terraform

IBM Cloud 上的 Terraform 支持可预测且一致地创建 IBM Cloud 服务,以便您可以快速构建遵循“基础架构即代码”(IaC) 原则的复杂多层云环境。 与使用 IBM Cloud CLI 或 API 和 SDK 类似,您可以使用 HashiCorp 配置语言 (HCL) 自动创建,更新和删除 Secrets Manager 实例。

在 IBM Cloud 解决方案上查找受管 Terraform? 试用 IBM Cloud® Schematics。 通过 Schematics,可以使用您熟悉的 Terraform 脚本语言。 但是,您无需担心设置和维护 Terraform 命令行和 IBM Cloud 提供者插件。Schematics 还提供了预定义的 Terraform 模板,您可以从 IBM Cloud 目录轻松安装这些模板。

安装 Terraform 并配置 Secrets Manager 的资源

在使用 Terraform 创建授权之前,请确保完成以下步骤:

  • 确保您具有创建和使用 Secrets Manager 资源所需的 访问权
  • 安装 Terraform CLI 并为 Terraform 配置 IBM Cloud 提供程序插件。 有关更多信息,请参阅 Terraform 入门 IBM Cloud 教程。 该插件对用于完成此任务的 IBM Cloud API 进行抽象。
  • 创建名为 main.tf 的 Terraform 配置文件。 在此文件中,您使用 HashiCorp 配置语言来定义资源。 有关更多信息,请参阅 Terraform 文档
  1. 完成构建配置文件后,初始化 Terraform CLI。 有关更多信息,请参阅 初始化工作目录

    terraform init
    
  2. 使用 main.tf 文件中的 ibm_resource_instance 资源参数创建 Secrets Manager 实例。

    • 以下示例中的 Secrets Manager 实例名为 secrets-manager-london,并且是使用 eu-gb 区域中的试用计划创建的。 将在 IAM 访问策略中为 user@ibm.com 分配管理员角色。 对于其他受支持的区域,请参阅 区域和端点。 计划选项包括 trialstandard

       resource "ibm_resource_instance" "sm_instance" {
           name = "Secrets Manager-London"
           service = "secrets-manager"
           plan = "trial"
           location = "eu-gb"
           timeouts {
            create = "60m"
            delete = "2h"
        },
       }
      

      要查看受支持属性的完整列表,请参阅 ibm_resource_instance

    • (可选) 您可以通过运行以下命令,创建数据源以从 IBM Cloud检索有关现有 Secrets Manager 实例的信息。

      data "ibm_resource_instance" "sm_resource_instance" {
          name              = "Secrets Manager-London"
          location          = "eu-gb"
          service           = "secrets-manager"
      }
      

    有关受支持属性的完整列表,请参阅 ibm_resource_instance

  3. main.tf 文件供应资源。 有关更多信息,请参阅 使用 Terraform 供应基础架构

    1. 运行 terraform plan 以生成 Terraform 执行计划来预览建议的操作。

      terraform plan
      
    2. 运行 terraform apply 以创建计划中定义的资源。

      terraform apply
      
  4. 为要在创建资源时使用的 Secrets Manager 实例定义本地值。

        locals {
            instance_id = data.ibm_resource_instance.sm_resource_instance.guid
            region = data.ibm_resource_instance.sm_resource_instance.location
        }
    
  5. 从 UI 中的 IBM Cloud 资源列表中,选择您创建的 Secrets Manager 实例并记下实例标识。

  6. 验证是否成功分配了访问策略。 有关更多信息,请参阅 在控制台中查看分配的访问权

管理资源漂移

通过 Terraform,您可以使用声明式配置文件安全且可预测地管理基础架构的生命周期。 作为代码管理基础架构时存在的一个挑战是漂移。 在应用 Terraform 配置更改之外添加,删除或修改资源时会发生漂移。 例如,当私钥到期或轮换时。 为了避免漂移,请始终使用 Terraform 来管理最初使用 Terraform 创建的资源。

Terraform 状态文件是 Terraform 管理的所有资源的记录。 您不得对由 Terraform 控制的资源进行手动更改,因为这样做会使状态文件从实际基础结构变为不同步或“漂移”。 如果您的状态和配置与基础架构不匹配,那么 Terraform 会尝试协调基础架构,这可能会无意中破坏或重新创建资源。

使用 Secrets Manager Terraform 提供程序时,可能会发生漂移,例如:

  • 密钥到期
  • 私钥自动旋转
  • 对 Terraform 控制的 Secret Manager 资源的外部更改

在设计 Terraform 项目时,请遵循 Terraform 最佳实践来管理漂移和生命周期更改,以避免意外破坏或重新创建 Secrets Manager 资源。

后续步骤?

现在,您已使用 Terraform 在 IBM Cloud上成功创建第一个 Secrets Manager 服务实例,您可以在 Terraform 注册表中查看 Secrets Manager 资源和数据源。 您还可以通过遵循“如何操作”部分中包含的 Terraform 步骤来查看如何管理 Secrets Manager 资源。 例如,您可以遵循有关如何使用 Terraform 创建 任意私钥 的指示信息。