更新时间:2022-02-10 GMT+08:00

Provider

Terraform的配置文件以 ".tf" 结尾,主要由providerresourcedata source变量组成。

每个 Provider 代表一个服务提供商,Terraform 通过插件机制与Provider进行交互。Provider通过关键字 "provider" 进行声明,华为云Provider的配置参数请参考这里

执行 terraform init 命令时会下载使用的插件,默认将从Terraform官方仓库下载最新版本的插件。对于Terraform 0.13之后的版本,可以使用 "required_providers" 指定Provider的 registry 源和版本

terraform {
  required_providers {
    huaweicloud = {
      source = "huaweicloud/huaweicloud"
      version = "1.20.0"
    }
  }
  required_version = ">= 0.13"
}

在Terraform中,我们可以使用 provider块创建多个配置,其中一个 provider块为默认配置,其它块使用 "alias" 标识为非默认配置。在资源中使用元参数 provider 可以选择非默认的 provider块。例如我们需要在不同的地区管理资源,首先需要声明多个 provider块:

provider "huaweicloud" {
  region = "cn-north-1"
  ...
}

provider "huaweicloud" {
  alias  = "guangzhou"
  region = "cn-south-1"
  ...
}

示例中我们声明了北京和广州的华为云provider,并对广州地区的provider增加了别名。我们在资源中使用元参数 provider 来选择非默认的 provider块,其格式为:<provider名称>.<别名>。

resource "huaweicloud_vpc" "example" {
  provider = huaweicloud.guangzhou
  name     = "terraform_vpc"
  cidr     = "192.168.0.0/16"
}

华为云Provider 支持在Resource中指定region参数,可以在不同的地区创建资源。相比 alias + provider 的方式,这种方式更加灵活简单。

provider "huaweicloud" {
  region = "cn-north-1"
  ...
}

resource "huaweicloud_vpc" "example" {
  region = "cn-south-1"
  name   = "terraform_vpc"
  cidr   = "192.168.0.0/16"
}