You need to enable JavaScript to run this app.
导航

更新 VPC 访问入口

最近更新时间2024.01.04 16:38:29

首次发布时间2023.04.26 10:22:33

本文介绍使用 Terraform 更新 VPC 访问入口的方法。

准备工作

  • 安装 Terraform。

    注意

    请安装 Terraform v0.12.31 版本。您可以通过terraform version命令查看版本信息。

  • ~/.terraform.d/plugins/darwin_amd64 添加 terraform-provider-volcengine 文件。

    terraform-provider-volcengine
    35.57MB

  • 获取火山引擎账号的密钥和实例所在地域的信息。

    参数说明
    access_key您火山引擎账号的 AccessKey ID(AK)。获取方式,请参见 访问密钥使用指南
    secret_key您火山引擎账号的 Secret Access Key(SK)。获取方式,请参见 访问密钥使用指南
    region您容器服务业务所在的地域。例如 cn-beijing
    vpcid需要添加或保留的 VPC 的 ID。例如 vpc-13g1chlhy0d8g3n6nu4gc****。VPC ID 的查看方法参见 查看私有网络详情
    subidVPC 对应子网的 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 访问入口。

  1. 登录已安装的 Terraform 终端。

  2. 创建一个文件夹,并在该文件夹中创建名为 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 = "AKLTODkzYjNmNDIwZTY1NGUyNzk2NGE0MmEzNmNmYzg****" 
    	# 火山引擎账号的 SK
    	secret_key = "WmpWaE16azVNakk0TlRsak5HSTJPVGc1TmpVMVpUWTRNVGRoWVdFME56****"  
    	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
    # }
    }
    
  3. 初始化 Terraform 运行环境。

    terraform init
    
  4. 更新 VPC 配置。

    terraform import volcengine_cr_vpc_endpoint.label crVpcEndpoint:***test
    

    说明

    crVpcEndpoint 后填写实例的名称,本示例为 ***test

  5. 规划资源。

    terraform plan
    
  6. 更新 VPC 访问入口信息。

    terraform apply -auto-approve
    

操作结果

操作完成后即可在控制台 VPC 列表查看更新后的 VPC 访问地址信息。

alt

常见问题

执行 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