本文介绍使用 Terraform 更新 VPC 访问入口的方法。
安装 Terraform。
注意
请安装 Terraform v0.12.31 版本。您可以通过terraform version
命令查看版本信息。
在 ~/.terraform.d/plugins/darwin_amd64
添加 terraform-provider-volcengine
文件。
获取火山引擎账号的密钥和实例所在地域的信息。
参数 | 说明 |
---|---|
access_key | 您火山引擎账号的 AccessKey ID(AK)。获取方式,请参见 访问密钥使用指南。 |
secret_key | 您火山引擎账号的 Secret Access Key(SK)。获取方式,请参见 访问密钥使用指南。 |
region | 您容器服务业务所在的地域。例如 cn-beijing 。 |
vpcid | 需要添加或保留的 VPC 的 ID。例如 vpc-13g1chlhy0d8g3n6nu4gc**** 。VPC ID 的查看方法参见 查看私有网络详情。 |
subid | VPC 对应子网的 ID。例如 subnet-13fw7xf83jim83n6nu4ce**** 。登录 子网控制台 查看目标子网 ID。 |
注意
在执行本操作时请输入全量的 VPC ID,本操作将根据 main.tf
配置文件中的 VPC ID,覆盖存量的 VPC 访问入口配置。
例如,您已添加 VPC-A,但是本次更新 VPC 访问入口的 main.tf
的配置文件中仅输入 VPC-B 和 VPC-C 的 ID,那么操作成功后,将移除 VPC-A 访问入口,新增 VPC-B 和 VPC-C 访问入口。
登录已安装的 Terraform 终端。
创建一个文件夹,并在该文件夹中创建名为 main.tf
的配置文件。
variable "common" { type = object({ registry = string region = string vpcid = string subid = string vpcid2 = string subid2 = string # 如果需要覆盖三个及以上 VPC,按需添加 VPC 和子网参数。 # vpcid3 = string # subid3 = string }) default = { # 实例的名称 registry = "***test" # 实例所处的地域 region = "cn-beijing" # 需要覆盖的 VPC 的 ID vpcid = "vpc-mjaw2apyzx8g5smt1a5d****" # 需要覆盖的 VPC 对应的子网 ID subid = "subnet-rr10v9czmlfkv0x58yy****" vpcid2 = "vpc-rs5zapo0osu8v0x58o9****" subid2 = "subnet-13fw7xf83jim83n6nu4ce****" # 如果需要覆盖三个及以上 VPC,按需配置对应的 VPC ID 和子网 ID。 # vpcid3 = "vpc-13fw35b36rc3k3n6nu5ft****" # subid3 = "subnet-mj7fzyemvhfk5smt1be1****" } } provider "volcengine" { # 火山引擎账号的 AK access_key = "AKLT****" # 火山引擎账号的 SK secret_key = "WmpW****" region = var.common.region } resource "volcengine_cr_vpc_endpoint" "label" { registry = var.common.registry vpcs { vpc_id = var.common.vpcid subnet_id = var.common.subid } vpcs { vpc_id = var.common.vpcid2 subnet_id = var.common.subid2 } # 如果需要覆盖三个及以上 VPC,按照需求添加更多参数 # vpcs { # vpc_id = var.common.vpcid3 # subnet_id = var.common.subid3 # } }
初始化 Terraform 运行环境。
terraform init
更新 VPC 配置。
terraform import volcengine_cr_vpc_endpoint.label crVpcEndpoint:***test
说明
crVpcEndpoint
后填写实例的名称,本示例为 ***test
。
规划资源。
terraform plan
更新 VPC 访问入口信息。
terraform apply -auto-approve
操作完成后即可在控制台 VPC 列表查看更新后的 VPC 访问地址信息。
terraform plan
时报错 permission denied
。出现报错 Error: Failed to instantiate provider "volcengine" to obtain schema: fork/exec /Users/bytedance/.terraform.d/plugins/darwin_amd64/terraform-provider-volcengine: permission denied
的原因是没有授予 terraform-provider-volcengine
文件的执行权限。请授予相应的文件执行权限。
授权命令示例: chmod 755 ~/.terraform.d/plugins/darwin_amd64/terraform-provider-volcengine
。
terraform plan
时报错 Error on reading XXX,XXX is not exist
。terraform apply
以后会生成 terraform.tfstate
这个文件,作用是记录本地资源创删状态。但是再次手动执行 terraform apply
后会误报资源已存在。解决的办法是手动删除这个文件,执行命令为 rm terraform.tfstate terraform.tfstate.backup
。