Provider
Terraform的配置文件以 ".tf" 结尾,主要由provider,resource,data 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" }