Terraform Provider的全网标识符
Terraform的Provider在全网的的标识符由三部分组成,分别为hostname
,namespace
和type
组成,即<hostname>/<namespace>/<type>
。hostname
是指分发、下载Provider的域名,默认为registry.terraform.io
。namespace
是指提供、开发Provider的组织的命名空间,默认为hashicorp
。type
是指Provider的具体类型。
例如有以下Terraform模板:
terraform {
required_providers {
alicloud = {
source = "aliyun/alicloud"
version = "1.126.0"
}
}
}
上述模板使用terraform init
命令会默认去registry.terraform.io
下载aliyun
开发的alicloud
Provider的1.126.0
版本。
本地安装Terraform Provider
如果使用本地安装插件有两种方法。首先两种方法都需要将下载的Provider或者本地编译完成的Provider放置在以下文件目录层级:
XX(e.g. /usr/share/terraform/providers/)
└── <hostname>(e.g. registry.terraform.io)
└── <namespace>(e.g. aliyun)
└── <type>(e.g. alicloud)
└── <version>(e.g. 1.127.0)
└── <your OS>(e.g. linux_amd64)
└── <binary file>(e.g. terraform-provider-alicloud)
方法一:使用terraform init的自带参数
第一种方法,使用terraform init
的plugin-dir
参数:
terraform init -plugin-dir=/usr/share/terraform/providers
方法二:编写配置文件
第二种方法,编写./terraformrc
配置文件,该文件需要放在$HOME/
目录下:
provider_installation {
filesystem_mirror {
path = "/usr/share/terraform/providers"
include = ["registry.terraform.io/*/*"]
}
}
其中include字段是指符合该通配符全网标识符的Provider,需要去/usr/share/terraform/providers
查找本地Provider。./terraformrc
的编写更详细的参数可以参考官网。