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。

posted @ 2023-11-22 16:06  左扬  阅读(137)  评论(0编辑  收藏  举报
levels of contents