IBM Cloud Docs
为 Continuous Delivery 设置 Terraform

为 Continuous Delivery 设置 Terraform

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

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

安装 Terraform 并配置 Continuous Delivery 的资源

开始之前,请确保您具有创建和使用 continuous-delivery 资源所需的 访问权,以及创建和使用 toolchain 资源所需的 访问权

  1. 遵循 Terraform on IBM Cloud 入门教程 以安装 Terraform CLI 并为 Terraform 配置 IBM Cloud 提供者插件。 该插件对用于创建,更新或删除 continuous-delivery 服务实例和 toolchain 资源的 IBM Cloud API 进行抽象。

  2. 创建名为 main.tf 的 Terraform 配置文件。 在此文件中,添加配置以创建 Continuous Delivery 服务实例,并使用 HCL 在 Identity and Access Management (IAM) 中为该实例分配访问策略。 您还可以添加配置,以在与 Continuous Delivery 服务实例相同的资源组和区域中创建基本工具链资源,并在 IAM 中为用户分配该资源的访问策略。 用于管理工具链使用情况的工具链和 Continuous Delivery 服务实例位于同一资源组和区域中。 有关使用 Terraform 配置文件的更多信息,请参阅 Terraform 文档

    以下示例中的 Continuous Delivery 服务实例名为 my_cd。 它是使用 default 资源组和 us-south 区域中的专业定价套餐创建的。 为用户 user1@ibm.com 分配了服务实例的 IAM 访问策略中的“管理者”角色。

    工具链资源名为 my_toolchain。 它是在 default 资源组中以及在 provider.tf 文件的 provider "ibm" 块中指定的区域中创建的。 对于此示例,provider.tf 中的 region 设置为 us-south。 为用户 user2@ibm.com 分配了工具链资源的 IAM 访问策略中的“编辑者”角色。

    data "ibm_resource_group" "default_rg" {
      name = "default"
    }
    
    resource "ibm_resource_instance" "cd_instance" {
      name              = "my_cd"
      service           = "continuous-delivery"
      plan              = "professional"
      location          = "us-south"
      resource_group_id = data.ibm_resource_group.default_rg.id
    }
    
    resource "ibm_iam_user_policy" "cd_policy" {
      ibm_id = "user1@ibm.com"
      roles  = ["Manager"]
      resources {
        service              = "continuous-delivery"
        resource_instance_id = element(split(":", ibm_resource_instance.cd_instance.id), 7)
      }
    }
    
    resource "ibm_cd_toolchain" "toolchain_instance" {
      name              = "my_toolchain"
      resource_group_id = data.ibm_resource_group.default_rg.id
    }
    
    resource "ibm_iam_user_policy" "toolchain_policy" {
      ibm_id = "user2@ibm.com"
      roles  = ["Editor"]
      resources {
        service              = "toolchain"
        resource_instance_id = ibm_cd_toolchain.toolchain_instance.id
      }
    }
    
  3. 初始化 Terraform CLI。

    terraform init
    
  4. 创建 Terraform 执行计划。 Terraform 执行计划汇总了您必须运行的所有操作,以在帐户中创建 Continuous Delivery 服务实例,工具链资源和关联的 IAM 访问策略。

    terraform plan
    
  5. 在 IBM Cloud中的帐户中创建 Continuous Delivery 服务实例,工具链资源和关联的 IAM 访问策略。

    terraform apply
    
  6. IBM Cloud 资源列表中,展开“开发者工具”部分,然后选择您创建的 Continuous Delivery 服务实例并记下实例标识。

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

  8. IBM Cloud 资源列表中,展开“开发者工具”部分,然后选择您创建的工具链资源并记下实例标识。

  9. 验证是否成功分配了访问策略。

使用 Terraform 为 Continuous Delivery 服务实例启用平台日志

Continuous Delivery 服务支持将 Tekton PipelineRun 日志作为平台日志发送。 这样就可以将当前区域和资源组的所有 Tekton PipelineRun 日志接收到您的账户中,您还可以配置您的账户,将这些接收到的日志转发到 IBM Cloud Logs 等目标。

  1. 在 Terraform 配置文件中调整配置,使 platform_logging_pipelineruns_enabled 参数的值为 true

    data "ibm_resource_group" "group" {
      name = "default"
    }
    
    resource "ibm_resource_instance" "cd_instance" {
      name              = "my_cd"
      service           = "continuous-delivery"
      plan              = "professional"
      location          = "us-south"
      resource_group_id = data.ibm_resource_group.default_rg.id
    
      parameters = {
        platform_logging_pipelineruns_enabled = "true"
      }
    }
    

后续步骤?

现在,您已成功在 IBM Cloud上使用 Terraform 创建第一个 Continuous Delivery 服务实例和工具链资源,您可以在以下任务之间进行选择:

有关 IBM Cloud 提供程序资源和数据源的更多信息,请参阅 Terraform Registry 文档