Terraform专题精讲——一个简单的例子
一个简单的例子
首先登录统一身份认证服务:https://console.huaweicloud.com/iam。获取 Access Key ID 和 Secret Access Key。
创建一个新文件,名称叫 main.tf(tf 是 Terraform,Terraform 代码大部分是 .tf 文件,语法是 HCL,当然目前也支持 JSON 格式的),华为云提供商用于与华为云支持的许多资源进行交互。在使用提供程序之前,需要使用适当的凭据对其进行配置。
一、Example usage
https://registry.terraform.io/providers/huaweicloud/huaweicloud/latest/docs#example-usage
Terraform 0.13 and later:
// 定义Terraform配置的开始,所有Terraform的配置文件都以这个块开始。 terraform { // 在required_providers块中,声明了代码需要的提供者。在这个例子中,需要的是"huaweicloud"提供者。 required_providers { // 声明huaweicloud提供者的来源和版本。 huaweicloud = { // 来源是huaweicloud/huaweicloud,这是Terraform从查找提供者的位置。 source = "huaweicloud/huaweicloud" // 版本需要大于等于1.36.0。等于这里的版本 https://github.com/huaweicloud/terraform-provider-huaweicloud/releases/ version = ">= 1.36.0" } } } // 配置huaweicloud提供者。这是告诉Terraform如何使用huaweicloud提供者的代码。 provider "huaweicloud" { // region定义了华为云服务的区域,这里选择的是"cn-north-4"。 region = "cn-north-4" // access_key是用于身份验证的访问键,这里用"my-access-key"代替真实的访问键。 access_key = "my-access-key" // secret_key是用于身份验证的密钥,这里用"my-secret-key"代替真实的密钥。 secret_key = "my-secret-key" } // 创建一个VPC资源。这个块告诉Terraform我们希望创建一个什么样的资源。 resource "huaweicloud_vpc" "example" { // name属性定义了VPC的名称,这里将其命名为"my_vpc"。 name = "my_vpc" // cidr属性定义了VPC的CIDR块,这里是"192.168.0.0/16"。 cidr = "192.168.0.0/16" }
Terraform 0.12 and earlier:
# Configure the HuaweiCloud Provider provider "huaweicloud" { version = ">= 1.36.0" region = "cn-north-4" access_key = "my-access-key" secret_key = "my-secret-key" } # Create a VPC resource "huaweicloud_vpc" "example" { name = "my_vpc" cidr = "192.168.0.0/16" }
二、Authentication
The Huawei Cloud provider offers a flexible means of providing credentials for authentication. The following methods are supported, in this order, and explained below:
华为云提供商提供了一种灵活的方式,为身份验证提供凭证。下列方法按照这个顺序得到支持,并在下面解释:
-
- Static credentials
- Environment variables
- Shared configuration file
- ECS Instance Metadata Service
The Huawei Cloud Provider supports assuming role with IAM agency, either in the provider configuration block parameter assume_role or shared configuration file.
华为云提供程序支持在提供程序配置块参数 assume_role 或共享配置文件中与 IAM 代理一起承担角色。
2.1、静态凭据
https://support.huaweicloud.com/usermanual-terraform/terraform_0001.html
通过配置provider块中的region,AK/SK等参数进行认证,例如:
provider "huaweicloud" { region = "cn-north-1" access_key = "my-access-key" secret_key = "my-secret-key" }
使用静态凭据的认证方式比较简单,但需要将AK/SK以明文的形式存储在配置文件中,存在密钥泄露的安全隐患。推荐您使用环境变量的方式进行认证。
2.2、环境变量
https://support.huaweicloud.com/usermanual-terraform/terraform_0001.html
将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" {}
2.3、参数说明
表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。 |