部署LandingZone 账号网络基线

举报
HuaweiCloudDeveloper 发表于 2026/03/17 16:19:29 2026/03/17
【摘要】 1. 版本定义类别名称/描述说明版本号IDE 工具VS Code用来进行代码开发,也可以使用码道IDE、JetBrain等,关键要支持云开发环境1.109.5开发环境云开发环境开发者空间提供的云资源,用来做Terraform的执行机2026 年 1 月版本云服务云服务核心组件涉及到VPC、企业路由、子网等资源2026 年 1 月版本软件/插件Terraform Provider如环境未提供,...

1. 版本定义

2. 背景介绍

账号和网络管理是LandingZone的核心,本文主要讲述如何帮助企业创建一个基线化的网络账号环境。

整体实验方案介绍

大体分类3个步骤:1.拉取代码;2.修改脚本参数;3.执行Terraform脚本拉起环境

主要场景如下:

首先有两个组织:网络管理组织(负责网络环境搭建与运维)和业务组织(负责业务应用资源管理)

网络管理组织下面有一个网络账号:负责创建企业路由并分享给业务OU

业务组织下有两个应用:负责创建VPC及子网,并将VPC通过连接与企业路由打通

3. 实践前置条件

请确保已完成如下环境资源的准备:

✅ 已经申请了企业主账号

✅ 已准备好华为开发者空间云开发环境

✅ 已安装华为云的Terraform Provider

✅ 已创建用户凭证


4. 实操部分

Step1 从开源代码仓上拉取代码

1. 找到clone地址:访问LDZ代码仓:https://gitcode.com/Evan0603/LandingZone/tree/main,1. 点击右上角克隆/下载。2. 用HTTP克隆。3. 复制clone地址

2. 创建文件夹:回到vscode,在workspace目录下,执行mkdir 文件名创建一个文件夹存放代码,如LDZ-code

3. clone代码:在目录下执行命令clone代码到本地

git clone https://gitcode.com/Evan0603/LandingZone.git

4. 如图所示,代码下载完成


Step2 开通组织服务

1. 开通企业中心

2. 开通组织服务

3. 开通RAM资源共享服务的自动接收能力

4. 登录组织服务,获取根账号ID(即后续组织创建在哪个根组织下),复制图中的ID(r-31XXX……),保存好后续修改代码时需要

问题1:为什么要申请这些权限?
由于后续我们需要创建组织,所以要开通组织服务,而开通组织服务要先开通企业中心,当我们后面共享资源的时候需要接收方进行接收,我们打开自动接收就不用再去控制台上进行操作了。
问题2:为什么不都用代码实现?
理论上上述能力都可以通过代码接口实现,但是一般来说标准化动作我们建议用代码实现,而这种资源开通及一些开关,由于本身操作不复杂,且都是一次性工作,也没有必要完全追求全自动化。


Step3 代码仓结构介绍

1. 至此,我们所有准备工作已经完成,接下来调用Terraform脚本,先介绍一下代码结构:

.
├── LandingZone-Account/             # 创建组织及账号
│   ├── main.tf                      # 主配置文件 (调用各类资源)
│   ├── terraform.tfvars             # 变量赋值文件(可理解为实参,存放具体的账号名、组织名等)
│   ├── variable.tf                  # 变量定义(可理解为形参)
│   └── versions.tf                  # Provider 版本约束(不用修改)

└── LandingZone-BaseLine/            # 基于组织与账号创建资源
    ├── Sources/                     # 子模块集合目录
    │   ├── CreateERAndShared/       # 子模块:创建 ER 和共享资源
    │   │   ├── main.tf
    │   │   ├── variable.tf
    │   │   └── versions.tf
    │   ├── CreateERVpcAttachment/   # 子模块:创建 ER VPC 附件
    │   ├── CreateVpcAndSubnets/     # 子模块:创建 VPC 和子网
    │   └── ...                     
    ├── main.tf                    
    ├── terraform.tfvars        
    ├── variable.tf                
    └── versions.tf

对上述代码做个简单说明:

整体分为两个文件夹:

o LandingZone-Account用来创建组织与账号,LandingZone-BaseLine用来创建具体资源:

o CreateERAndShared创建ER企业路由(用来打通网络)、CreateVpcAndSubnets用来创建VPC和子网、CreateERVpcAttachment通过企业路由打通子账号的VPC网络

每个文件夹下都有4个子文件:

o main.tf用来编写主逻辑,创建各类资源

o variable.tf用来做变量的定义,类似于结构体或类

o versions.tf用来定义provider版本,我们可以不用过多关注,一般不会改

o terraform.tfvars存放具体的数值,也就是实参,如账号名,组织名,vpc名字,安全组的具体开放策略等。

Step4 修改脚本参数


1. 修改AK、SK,将从 Step 5 获取的AK、SK填入LandingZone-Account/main.tfLandingZone-BaseLine/main.tf中provider 的access_key和secret_key部分:

provider "huaweicloud" {
     region   = "cn-north-7"
     access_key = "填写AK"
     secret_key = "填写SK"
……
   }

2. 修改根账号,从 Step 6 中第4步获取的组织根账号ID,每个企业主账号都不同

写入LandingZone-Account/terraform.tfvars中ou_infos里面的parent_id:

ou_infos = {
     IT_DEPART = {
       name      = "IT_OU_Demo_1"
       parent_id = "填写root_id" #root_id
     }
     BU_DEPART = {
       name      = "BUS_OU_Demo_1"
       parent_id = "填写root_id" #root_id
     }
   }

写入LandingZone-BaseLine/terraform.tfvars中root_account_id:

root_account_id        = "填写root_id"

3. 修改子账号名,子账号名全网唯一,因此要更改,请尽量复杂一些避免重复(如:network_account_test_工号_01)

修改待创建的子账号名,写入LandingZone-Account/terraform.tfvars中accounts里面的account_name,3个account_name都需要修改(一个网络账号、2个业务账号)

accounts = [
     {
       account_name        = "填写网络子账号1名称"
        ……
     },
     {
       account_name        = "填写业务子账号1名称"
        ……
     },
     {
       account_name        = "填写业务子账号2名称"
        ……
     }
]

创建资源时依赖子账号名,将上述创建完的子账号名填入创建资源时的参数内,填入LandingZone-BaseLine/terraform.tfvars中的workload_account_test1workload_account_test2network_name、字段分别对应上面创建的业务子账号1、2及网络子账号1。

# Name of new account to be created
   workload_account_test1    = "填写业务子账号2名称"
   workload_account_test2    = "填写业务子账号1名称"
   network_name                = "填写网络子账号1名称"

Step5 执行Terraform脚本


经过上述准备动作,我们到了最后一步执行Terraform脚本,我们首先在LandingZone-Account文件夹内创建账号,在跳转到LandingZone-BaseLine里面利用账号创建相关资源。

1. 这里会用到3个关键命令

terraform init:初始化项目,下载所需的插件(Provider)和模块,并配置后端存储。

terraform plan:预演执行计划,对比代码与云端现状,列出将要创建、修改或销毁的资源清单(不实际执行)。

terraform apply:正式执行计划,根据** plan 的结果在云平台上创建、更新或删除资源。

2. 创建账号:

跳转到LandingZone-Account文件夹下:

(可选)输入pwd确认目录:

执行terraform init 初始化项目

执行terraform plan 查看执行计划

执行terraform apply 执行创建账号,如提示确认创建,输入yes确认

提示apply complete即账号创建成功

3.创建资源:步骤和上面基本相同

跳转到LandingZone-Baseline文件夹下:

执行terraform init 初始化项目

执行terraform plan 查看执行计划

执行terraform apply 执行创建资源,如提示确认创建,输入yes确认

提示apply complete即资源创建成功

Step6 确认资源创建完成


登录到组织页面,查看组织和账号是否创建完成

通过右上角可以切换角色,账号名->切换角色->切换到其他角色

输入业务子账号1如workload_account_test_227_01,输入委托名OrganizationAccountAccessAgency(代码中默认的委托名),会话名称可不输入,点击确定切换用户

跳转到企业路由ER服务,可以看到网络账号分享的企业路由实例

可以看到相关连接已经创建好了


至此,最佳实践完成,Thanks!

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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