云服务器内容精选

  • 更多操作 您还可以对组件资源进行以下操作。 表3 组件管理操作 操作名称 操作步骤 下载 在代码包详情列表,可以选择需要下载的版本所在行“操作”列的“下载”。 解析 在代码包详情列表,可以选择需要解析的版本所在行“操作”列的“解析”。 激活、去激活 在代码包详情列表,可以选择需要激活的版本所在行“操作”列的“激活”。 已激活的版本,如需回退到之前的版本,可以把新版本的代码包“去激活”,变更后即可回退为最后一个激活的版本。
  • 更多操作 您还可以对组件资源进行以下操作。 表3 组件管理操作 操作名称 操作步骤 下载 在代码包详情列表,可以选择需要下载的版本所在行“操作”列的“下载”。 解析 在代码包详情列表,可以选择需要解析的版本所在行“操作”列的“解析”。 激活、去激活 在代码包详情列表,可以选择需要激活的版本所在行“操作”列的“激活”。 已激活的版本,如需回退到之前的版本,可以把新版本的代码包“去激活”,变更后即可回退为最后一个激活的版本。
  • 操作步骤 在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 开始创建。 云硬盘挂载至云服务器后,需要登录云服务器初始化云硬盘,即格式化云硬盘,之后云硬盘才可以正常使用。
  • 操作步骤 创建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 (可选)是否开启桶的默认服务端加密
  • 样例代码 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
  • 操作步骤 规划并创建虚拟私有云、子网及安全组。 若需要创建新的网络配置,请参考典型网络配置。 若使用已创建的网络配置,需要使用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 MySQL实例。 示例一 使用新建网络配置创建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的整数倍
  • 环境变量 将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" {}
  • 参数说明 表1 Provider认证参数 参数名称 是否必选 环境变量 参数说明 region 是 HW_REGION_NAME 华为云服务所在的区域,可以从地区和终端节点获取。 如果要在不同的region中创建云服务,可以使用alias或者在云服务对应的resource中指定region参数。 access_key 是 HW_ACCESS_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。
  • 静态凭据 通过配置provider块中的region,AK/SK等参数进行认证,例如: provider "huaweicloud" { region = "cn-north-1" access_key = "my-access-key" secret_key = "my-secret-key" } 使用静态凭据的认证方式比较简单,但需要将AK/SK以明文的形式存储在配置文件中,存在密钥泄露的安全隐患。推荐您使用环境变量的方式进行认证。
  • 应用场景 弹性伸缩服务可根据用户的业务需求,通过策略自动调整其业务的资源。具有自动调整资源、节约成本开支、提高可用性和容错能力的优势。适用以下场景: 访问流量较大的论坛网站,业务负载变化难以预测,需要根据实时监控到的云服务器CPU使用率、内存使用率等指标对云服务器数量进行动态调整。 电商网站,在进行大型促销活动时,需要定时增加云服务器数量和带宽大小,以保证促销活动顺利进行。 视频直播网站,每天14:00~16:00播出热门节目,每天都需要在该时段增加云服务器数量,增大带宽大小,保证业务的平稳运行。
  • 应用场景 弹性云服务器(Elastic Cloud Server,ECS)是由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。
  • 操作步骤 在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 开始创建。
  • 操作步骤 配置网络。 创建main.tf文件,输入以下内容,并保存在当前的执行目录中。 resource "huaweicloud_vpc" "vpc_1" { name = var.vpc_name cidr = var.vpc_cidr } resource "huaweicloud_vpc_subnet" "subnet_1" { vpc_id = huaweicloud_vpc.vpc_1.id name = var.subnet_name cidr = var.subnet_cidr gateway_ip = var.subnet_gateway primary_dns = var.primary_dns } 创建两台ECS实例。 在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_networking_secgroup" "mysecgroup" { name = "default" } resource "huaweicloud_compute_instance" "mycompute" { name = "mycompute_${count.index}" 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 = huaweicloud_vpc_subnet.subnet_1.id } count = 2 } 申请虚拟IP地址并绑定ECS服务器对应的端口。 在main.tf文件中增加以下内容。 resource "huaweicloud_networking_vip" "vip_1" { network_id = huaweicloud_vpc_subnet.subnet_1.id } # associate ports to the vip resource "huaweicloud_networking_vip_associate" "vip_associated" { vip_id = huaweicloud_networking_vip.vip_1.id port_ids = [ huaweicloud_compute_instance.mycompute[0].network.0.port, huaweicloud_compute_instance.mycompute[1].network.0.port ] } 配置变量。 创建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 查看已创建的资源。
  • 操作步骤 申请弹性公网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 开始创建。