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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 定义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:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 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等参数进行认证,例如:

1
2
3
4
5
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等参数设置为环境变量的方式进行认证,例如:

1
2
3
$ export HW_REGION_NAME="cn-north-1"
$ export HW_ACCESS_KEY="my-access-key"
$ export HW_SECRET_KEY="my-secret-key"

环境变量设置后,只需要声明华为云的 provider 即可。

1
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。

posted @   左扬  阅读(232)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
levels of contents
点击右上角即可分享
微信分享提示