使用 Terraform 代码在 SAP BTP 上配置和创建与子账户相关的资源

举报
汪子熙 发表于 2025/09/05 14:35:25 2025/09/05
【摘要】 这段代码是用 HashiCorp Terraform 编写的,用于在 SAP Business Technology Platform (BTP) 上配置和创建与子账户相关的资源。具体的功能包括创建一个子账户、为该子账户设置域名、为其配置身份提供者(IDP)。我将逐步解析这段代码,并解释它的作用和最终效果。 1. 创建随机 UUIDresource "random_uuid" "uuid" ...

这段代码是用 HashiCorp Terraform 编写的,用于在 SAP Business Technology Platform (BTP) 上配置和创建与子账户相关的资源。具体的功能包括创建一个子账户、为该子账户设置域名、为其配置身份提供者(IDP)。我将逐步解析这段代码,并解释它的作用和最终效果。

1. 创建随机 UUID

resource "random_uuid" "uuid" {}

这里使用了 random_uuid 资源,它会生成一个随机的 UUID(通用唯一标识符)。random_uuid.uuid.result 变量会保存该 UUID 值,以便后续使用。

2. 本地变量定义

locals {
  random_uuid       = random_uuid.uuid.result
  subaccount_domain = lower(replace("mission-4356-${local.random_uuid}", "_", "-"))
  subaccount_cf_org = length(var.cf_org_name) > 0 ? var.cf_org_name : substr(replace("${local.subaccount_domain}", "-", ""), 0, 32)
}
  • random_uuid: 保存了之前生成的随机 UUID。
  • subaccount_domain: 创建一个子账户的子域名,格式为 mission-4356-<UUID>,并且将其转换为小写,同时将其中的 _ 替换为 -
  • subaccount_cf_org: 根据用户输入的 cf_org_name 来决定子账户的组织名称。如果用户没有提供 cf_org_name,则从 subaccount_domain 中移除 - 并截取前 32 个字符,作为子账户的默认组织名称。

3. 创建子账户

resource "btp_subaccount" "dc_mission" {
  name      = var.subaccount_name
  subdomain = local.subaccount_domain
  region    = lower(var.region)
  usage     = "USED_FOR_PRODUCTION"
}
  • btp_subaccount.dc_mission: 该资源创建一个新的子账户。
  • name: 子账户的名称,来自于变量 subaccount_name
  • subdomain: 子账户的子域名,使用之前定义的 subaccount_domain 变量。
  • region: 子账户所在的区域,来自于变量 region,并且转换为小写。
  • usage: 定义子账户的使用场景,这里设置为 "USED_FOR_PRODUCTION",即用于生产环境。

4. 配置自定义身份提供者(IDP)

resource "btp_subaccount_trust_configuration" "fully_customized" {
  count             = var.custom_idp == "" ? 0 : 1
  subaccount_id     = btp_subaccount.dc_mission.id
  identity_provider = var.custom_idp
}
  • btp_subaccount_trust_configuration.fully_customized: 该资源用于为创建的子账户配置身份提供者(IDP)。
  • count: 只有在变量 custom_idp 非空时,才会创建这个资源。如果 custom_idp 为空,则 count 为 0,不会创建该资源;如果 custom_idp 非空,则 count 为 1,会创建这个资源。
  • subaccount_id: 子账户的 ID,使用之前创建的 btp_subaccount.dc_mission.id
  • identity_provider: 用于认证的自定义身份提供者,来自于变量 custom_idp

代码执行后的效果

  1. 生成一个随机 UUID,并根据此 UUID 创建一个唯一的子域名 mission-4356-<UUID>
  2. 创建一个子账户,该子账户使用给定的名称(subaccount_name),并将子域名设置为之前生成的唯一子域名。子账户将被配置为在指定区域内使用,并且标记为用于生产环境。
  3. 如果用户提供了一个自定义的身份提供者(custom_idp),则为该子账户创建一个 信任配置,将身份提供者与子账户关联。

总结

该代码的目的是根据给定的变量和设置,在 SAP BTP 上创建一个子账户并配置其信任设置。它首先生成一个唯一的子账户域名,并创建子账户,然后根据用户是否指定了自定义身份提供者来配置信任设置。如果提供了自定义身份提供者,则将其与子账户相关联。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。