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
的編寫更詳細的參數可以參考
官網