云服务器内容精选

  • 参数说明 表1 Provider认证参数 参数名称 是否必选 环境变量 参数说明 region 是 HW_REGION_NAME 华为云服务所在的区域,可以从地区和终端节点获取。 如果要在不同的region中创建云服务,可以使用alias或者在云服务对应的resource中指定region参数。 access_key 是 HW_AC CES S_KEY 用户的密钥ID,查询方法请参见访问密钥。 secret_key 是 HW_SECRET_KEY 用户的私有访问密钥,查询方法请参见访问密钥。 domain_name 否 HW_DOMAIN_NAME 华为云账号名称,查询方法请参见API凭证。 project_name 否 HW_PROJECT_NAME 华为云项目名称,查询方法请参见API凭证。 enterprise_project_id 否 HW_ENTERPRISE_PROJECT_ID 企业项目ID,关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。 max_retries 否 HW_MAX_RETRIES 遇到网络传输问题时请求的最大重试次数,默认值为5。
  • 环境变量 将region,AK/SK等参数设置为环境变量的方式进行认证,例如: $ export HW_REGION_NAME="cn-north-1"$ export HW_ACCESS_KEY="my-access-key"$ export HW_SECRET_KEY="my-secret-key" 环境变量设置后,只需要声明华为云的provider即可。 provider "huaweicloud" {}
  • 静态凭据 通过配置provider块中的region,AK/SK等参数进行认证,例如: provider "huaweicloud" { region = "cn-north-1" access_key = "my-access-key" secret_key = "my-secret-key"} 使用静态凭据的认证方式比较简单,但需要将AK/SK以明文的形式存储在配置文件中,存在密钥泄露的安全隐患。推荐您使用环境变量的方式进行认证。
  • 操作步骤 申请弹性公网IP。 创建main.tf文件,输入以下内容,并保存在当前的执行目录中。 resource "huaweicloud_vpc_eip" "eip_1" { publicip { type = "5_bgp" } bandwidth { name = "test" size = 5 share_type = "PER" charge_mode = "traffic" }} 申请NAT网关并配置SNAT规则。 在main.tf文件中增加以下内容。 data "huaweicloud_vpc" "vpc_1" { name = "vpc-default"}data "huaweicloud_vpc_subnet" "subnet_1" { name = "subnet-default" vpc_id = data.huaweicloud_vpc.vpc_1.id}resource "huaweicloud_nat_gateway" "nat_1" { name = "nat-gateway-basic" description = "test for terraform examples" spec = "1" vpc_id = data.huaweicloud_vpc.vpc_1.id subnet_id = data.huaweicloud_vpc_subnet.subnet_1.id}resource "huaweicloud_nat_snat_rule" "snat_1" { floating_ip_id = huaweicloud_vpc_eip.eip_1.id nat_gateway_id = huaweicloud_nat_gateway.nat_1.id network_id = data.huaweicloud_vpc_subnet.subnet_1.id} 表1 参数说明 资源名称 参数名称 参数说明 huaweicloud_nat_gateway name NAT网关的名字,支持数字、字母、_(下划线)、-(中划线)、中文。 description NAT网关的描述。 spec NAT网关的规格。取值为: “1”:小型,SNAT最大连接数10000 “2”:中型,SNAT最大连接数50000 “3”:大型,SNAT最大连接数200000 “4”:超大型,SNAT最大连接数1000000 vpc_id VPC的ID。 subnet_id 子网的网络ID。 huaweicloud_nat_snat_rule floating_ip_id 弹性公网IP的id,多个弹性公网IP使用逗号分隔。 约束:弹性公网IP的id个数不能超过20个。 nat_gateway_id NAT网关的ID。 network_id 规则使用的网络ID。 创建资源。 运行 terraform init 初始化环境。 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。
  • 操作步骤 在main.tf文件中增加以下内容。 resource "huaweicloud_evs_volume" "myvolume" { name = "myvolume" availability_zone = data.huaweicloud_availability_zones.myaz.names[0] volume_type = "SAS" size = 10}resource "huaweicloud_compute_volume_attach" "attached" { instance_id = huaweicloud_compute_instance.myinstance.id volume_id = huaweicloud_evs_volume.myvolume.id} 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。 云硬盘挂载至云服务器后,需要登录云服务器初始化云硬盘,即格式化云硬盘,之后云硬盘才可以正常使用。
  • 应用场景 在对数据库有少量写请求,但有大量读请求的应用场景下,单个实例可能无法抵抗读取压力,甚至对主业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,您可以在某个区域中创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求,以此增加应用的吞吐量。主实例和只读实例之间的数据同步不受网络延时的影响,只读实例跟主实例在同一区域,但可以在不同的可用区。以下教程将指导您如何通过Terraform脚本创建一个RDS只读实例 。
  • 操作步骤 创建MySQL数据库,请参考创建MySQL数据库。 以MySQL为例,演示为RDS创建只读副本。 data "huaweicloud_availability_zones" "myaz" {}resource "huaweicloud_rds_read_replica_instance" "myreplica" { name = "myreplica" flavor = "rds.mysql.c2.large.rr" primary_instance_id = huaweicloud_rds_instance.myinstance.id availability_zone = data.huaweicloud_availability_zones.myaz.names[1] volume { type = "ULTRAHIGH" } tags = { type = "readonly" }} 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。 运行 terraform show 可以查看已创建的RDS只读实例信息。 表1 参数说明 资源名称 参数名称 参数说明 huaweicloud_rds_read_replica_instance name (必填)只读实例名称 约束:4~64个字符之间,必须以字母开头,区分大小写,可以包含字母、数字、中划线或者下划线,不能包含其他的特殊字符 flavor (必填)数据库只读实例规格,本教程使用"rds.mysql.c2.large.rr",实例规格信息也可以通过huaweicloud_rds_flavors查询。 primary_instance_id (必填)主实例ID availability_zone (必填)只读实例所在可用区,请参见地区和终端节点。 tags (可选)实例标签。 volume type (必填)数据库只读实例磁盘类型 取值范围: ULTRAHIGH,表示SSD; ULTRAHIGHPRO,表示SSD尊享版,仅支持超高性能型尊享版
  • 操作步骤 创建CCE Cluster,详细步骤参考创建CCE Cluster。 创建CCE Node。 在 创建CCE Cluster 中创建的cce.tf文件中增加以下内容。 data "huaweicloud_availability_zones" "myaz" {}resource "huaweicloud_compute_keypair" "mykeypair" { name = "mykeypair"}resource "huaweicloud_cce_node" "mynode" { cluster_id = huaweicloud_cce_cluster.mycce.id name = "mynode" flavor_id = "t6.large.2" availability_zone = data.huaweicloud_availability_zones.myaz.names[0] key_pair = huaweicloud_compute_keypair.mykeypair.name root_volume { size = 40 volumetype = "SAS" } data_volumes { size = 100 volumetype = "SAS" }} 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。 运行 terraform show 查看已创建的CCE Node。
  • 操作步骤 规划并创建虚拟私有云、子网及安全组。 若需要创建新的网络配置,请参考典型网络配置。 若使用已创建的网络配置,需要使用data source获取对应的ID,参考样例如下。 data "huaweicloud_vpc" "myvpc" { name = var.vpc_name}data "huaweicloud_vpc_subnet" "mysubnet" { vpc_id = data.huaweicloud_vpc.myvpc.id name = var.subnet_name}data "huaweicloud_networking_secgroup" "mysecgroup" { name = var.secgroup_name} 创建RDS for MySQ L实例 。 示例一 使用新建网络配置创建RDS实例,并使用随机密码。 data "huaweicloud_availability_zones" "myaz" {}resource "random_password" "mypassword" { length = 12 special = true override_special = "!@#%^*-_=+"}resource "huaweicloud_rds_instance" "myinstance" { name = "mysql_instance" flavor = "rds.mysql.c2.large.ha" ha_replication_mode = "async" vpc_id = huaweicloud_vpc.myvpc.id subnet_id = huaweicloud_vpc_subnet.mysubnet.id security_group_id = huaweicloud_networking_secgroup.mysecgroup.id availability_zone = [ data.huaweicloud_availability_zones.myaz.names[0], data.huaweicloud_availability_zones.myaz.names[1] ] db { type = "MySQL" version = "8.0" password = random_password.mypassword.result } volume { type = "ULTRAHIGH" size = 40 }} 示例二 使用已有网络配置创建RDS实例 data "huaweicloud_availability_zones" "myaz" {}resource "huaweicloud_rds_instance" "myinstance" { name = "mysql_instance" flavor = "rds.mysql.c2.large.ha" ha_replication_mode = "async" vpc_id = data.huaweicloud_vpc.myvpc.id subnet_id = data.huaweicloud_vpc_subnet.mysubnet.id security_group_id = data.huaweicloud_networking_secgroup.mysecgroup.id availability_zone = [ data.huaweicloud_availability_zones.myaz.names[0], data.huaweicloud_availability_zones.myaz.names[1] ] db { type = "MySQL" version = "8.0" password = var.rds_password } volume { type = "ULTRAHIGH" size = 40 }} 配置变量。 创建variables.tf文件,输入以下内容,并保存在当前的执行目录中。您可以根据实际情况修改变量值。 variable "vpc_name" { default = "vpc-basic"}variable "vpc_cidr" { default = "172.16.0.0/16"}variable "subnet_name" { default = "subent-basic"}variable "subnet_cidr" { default = "172.16.10.0/24"}variable "subnet_gateway" { default = "172.16.10.1"}variable "primary_dns" { default = "100.125.1.250"} 创建资源。 运行 terraform init 进行初始化。 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。 运行 terraform show 可以查看已创建的RDS实例信息。 表1 参数说明 资源名称 参数名称 参数说明 huaweicloud_rds_instance name (必填)数据库实例名称,同一租户下,同类型的数据库实例名称可以重名 约束:4~64个字符之间,必须以字母开头,区分大小写,可以包含字母、数字、中划线或者下划线,不能包含其他的特殊字符 flavor (必填)数据库实例规格,本教程使用"rds.mysql.c2.large.ha",实例规格信息也可以通过huaweicloud_rds_flavors查询。 ha_replication_mode (可选)备机同步参数。MySQL的取值为“async”或“semisync”。 availability_zone (必填)实例所在可用区,对于主备实例支持多个可用区,请参见地区和终端节点。 vpc_id (必填)实例所属的VPC ID subnet_id (必填)实例所属的子网网络ID security_group_id (必填)实例所属的安全组ID db type (必填)数据库引擎类型 取值范围:MySQL、PostgreSQL、SQLServer version (必填)数据库引擎版本,MySQL引擎支持5.6、5.7、8.0版本。 password (必填)数据库密码 由大小写字母、数字和特殊符号~!@#%^*-_=+?组成,长度8~32个字符。 建议您输入高强度密码,以提高安全性,防止出现密码被暴力破解等安全风险。 port (可选)数据库端口 约束:MySQL数据库端口设置范围为1024~65535(其中12017和33071被RDS系统占用不可设置),默认3306; volume type (必填)数据库实例磁盘类型 取值范围: ULTRAHIGH,表示SSD; ULTRAHIGHPRO,表示SSD尊享版,仅支持超高性能型尊享版 size (必填)数据库实例磁盘空间大小 取值范围:40GB~4000GB,必须为10的整数倍
  • 样例代码 https://github.com/huaweicloud/terraform-provider-huaweicloud/tree/master/examples/rds/mysql https://github.com/huaweicloud/terraform-provider-huaweicloud/tree/master/examples/rds/mysql-with-network
  • 应用场景 弹性云服务器(Elastic Cloud Server,E CS )是由CPU、内存、操作系统、云硬盘组成的基础的计算组件。弹性云服务器创建成功后,您就可以像使用自己的本地PC或物理服务器一样,在云上使用弹性云服务器。华为云提供了多种类型的弹性云服务器,可满足不同的使用场景。在创建之前,您需要根据实际的应用场景确认弹性云服务器的规格类型,镜像类型,磁盘种类等参数,并选择合适的网络参数和安全组规则。
  • 操作步骤 使用data source查询可用区,规格,镜像和网络参数。 创建main.tf文件,输入以下内容,并保存在当前的执行目录中。 data "huaweicloud_availability_zones" "myaz" {}data "huaweicloud_compute_flavors" "myflavor" { availability_zone = data.huaweicloud_availability_zones.myaz.names[0] performance_type = "normal" cpu_core_count = 2 memory_size = 4}data "huaweicloud_images_image" "myimage" { name = "Ubuntu 18.04 server 64bit" most_recent = true}data "huaweicloud_vpc_subnet" "mynet" { name = "subnet-default"}data "huaweicloud_networking_secgroup" "mysecgroup" { name = "default"} 创建ECS实例并使用随机密码方式登录。 在main.tf文件中增加以下内容。 resource "random_password" "password" { length = 16 special = true override_special = "!@#$%*"}resource "huaweicloud_compute_instance" "myinstance" { name = "basic" admin_pass = random_password.password.result image_id = data.huaweicloud_images_image.myimage.id flavor_id = data.huaweicloud_compute_flavors.myflavor.ids[0] availability_zone = data.huaweicloud_availability_zones.myaz.names[0] security_group_ids = [data.huaweicloud_networking_secgroup.mysecgroup.id] network { uuid = data.huaweicloud_vpc_subnet.mynet.id }} 运行 terraform init 初始化环境。 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。 运行 terraform show 查看已创建的ECS。
  • 操作步骤 创建虚拟私有云和子网。请参见典型网络配置。 创建cce.tf文件,输入以下内容,并保存在当前的执行目录中。 resource "huaweicloud_vpc" "myvpc" { name = "myvpc" cidr = "192.168.0.0/16"}resource "huaweicloud_vpc_subnet" "mysubnet" { name = "mysubnet" cidr = "192.168.0.0/16" gateway_ip = "192.168.0.1" //dns is required for cce node installing primary_dns = "100.125.1.250" secondary_dns = "100.125.21.250" vpc_id = huaweicloud_vpc.myvpc.id} 运行 terraform init 初始化环境。 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。 运行 terraform show 查看已创建的VPC和subnet。 创建弹性公网IP,若集群不使用公网可跳过此步骤。 在cce.tf文件中增加以下内容。 resource "huaweicloud_vpc_eip" "myeip" { publicip { type = "5_bgp" } bandwidth { name = "mybandwidth" size = 8 share_type = "PER" charge_mode = "traffic" }} 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。 运行 terraform show 查看已创建的弹性公网IP。 创建CCE Cluster。 在cce.tf文件中增加以下内容。 resource "huaweicloud_cce_cluster" "mycce" { name = "mycce" flavor_id = "cce.s1.small" vpc_id = huaweicloud_vpc.myvpc.id subnet_id = huaweicloud_vpc_subnet.mysubnet.id container_network_type = "overlay_l2" eip = huaweicloud_vpc_eip.myeip.address // 若不使用弹性公网ip,忽略此行} 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。 运行 terraform show 查看已创建的CCE Cluster。 表1 参数说明 资源名称 参数名称 参数说明 huaweicloud_cce_cluster name (必填) 集群名称 取值范围:以小写字母开头,由小写字母、数字、中划线(-)组成,长度范围4-128位,且不能以中划线(-)结尾。 约束:同一个租户下的名称不能重复 flavor_id (必填) 集群规格 取值范围: cce.s1.small: 小规模单控制节点混合集群(最大50节点) cce.s1.medium: 中等规模单控制节点混合集群(最大200节点) cce.s2.small: 小规模多控制节点混合集群(最大50节点) cce.s2.medium: 中等规模多控制节点混合集群(最大200节点) cce.s2.large: 大规模多控制节点混合集群(最大1000节点) cce.s2.xlarge: 超大规模多控制节点混合集群(最大2000节点) 约束:集群创建完成后规格不可再变更,请按实际业务需求进行选择 vpc_id (必填) 用于创建控制节点的VPC的ID subnet_id (必填) 用于创建控制节点的subnet的网络ID container_network_type (必填) 容器网络类型 取值范围: overlay_l2:通过OVS(OpenVSwitch)为容器构建的overlay _ l2网络。 underlay_ipvlan:裸金属服务器使用ipvlan构建的Underlay的l2网络。 vpc-router:使用ipvlan和自定义VPC路由为容器构建的Underlay的l2网络。 eni:Yangtse网络,深度整合VPC原生ENI弹性网卡能力,采用VPC网段分配容器地址,支持ELB直通容器,享有高性能,创建 CCE Turbo 集群(公测中)时指定。 eip (可选) 弹性公网IP
  • 操作步骤 创建OBS存储桶。 创建main.tf文件,输入以下内容,并保存在当前的执行目录中。 resource "huaweicloud_obs_bucket" "myexample" { bucket = "myexample-bucket" acl = "private" tags = { type = "bucket" env = "Test" }} 运行 terraform init 进行初始化。 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。 运行 terraform show 可以查看已创建的OBS桶。 上传对象。 支持通过数据流和源文件路径上传对象,在main.tf文件中增加以下内容。 # 通过数据流上传对象resource "huaweicloud_obs_bucket_object" "myobject1" { bucket = huaweicloud_obs_bucket.myexample.bucket key = "myobject1" content = "content of myobject1" content_type = "application/xml"}# 通过源文件路径上传对象resource "huaweicloud_obs_bucket_object" "myobject2" { bucket = huaweicloud_obs_bucket.myexample.bucket key = "myobject2" source = "hello.txt"}# 通过源文件路径上传对象并进行服务端加密resource "huaweicloud_obs_bucket_object" "myobject3" { bucket = huaweicloud_obs_bucket.myexample.bucket key = "myobject3" source = "hello.txt" encryption = true} 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。 运行 terraform show 可以查看已上传的对象。 表1 参数说明 资源名称 参数名称 参数说明 huaweicloud_obs_bucket bucket (必填)OBS存储桶名称 约束:在OBS中必须是全局唯一的,包含3到63个字符,允许小写字母、数字、连字符(-)和点号(.),不能以句点(.)或连字符(-)开始或结束,不能包含两个连续的句点(.)或相邻的句点(.)和连字符(-),不能是IP地址。 acl (可选)OBS存储桶访问控制策略 取值范围: private:默认策略,除桶ACL授权外的其他用户无桶的访问权限。 public-read:任何用户都可以对桶内对象进行读操作。 public-read-write:任何用户都可以对桶内对象进行读/写/删除操作。 tags (可选)桶标签 huaweicloud_obs_bucket_object bucket (必填)存储桶名称 key (必填)对象名称 source (可选)待上传对象的源文件路径 content (可选)待上传对象的数据流 content_type (可选)待上传对象的MIME类型 encryption (可选)是否开启桶的默认服务端加密
  • 操作步骤 在main.tf文件中增加以下内容。 resource "huaweicloud_vpc_eip" "myeip" { publicip { type = "5_bgp" } bandwidth { name = "mybandwidth" size = 8 share_type = "PER" charge_mode = "traffic" }}resource "huaweicloud_compute_eip_associate" "associated" { public_ip = huaweicloud_vpc_eip.myeip.address instance_id = huaweicloud_compute_instance.myinstance.id} 运行 terraform plan 查看资源。 确认资源无误后,运行 terraform apply 开始创建。