Terraform使用本地编译(In-house)的Providers-阿里云开发者社区

开发者社区> 云计算> 正文
登录阅读全文

Terraform使用本地编译(In-house)的Providers

简介: ## Terraform Provider的全网标识符 Terraform的Provider在全网的的标识符由三部分组成,分别为`hostname`,`namespace`和`type`组成,即`//`。`hostname`是指分发、下载Provider的域名,默认为`registry.terraform.io`。`namespace`是指提供、开发Provider的组织的命名空间,默认为`has

Terraform Provider的全网标识符

Terraform的Provider在全网的的标识符由三部分组成,分别为hostnamenamespacetype组成,即<hostname>/<namespace>/<type>hostname是指分发、下载Provider的域名,默认为registry.terraform.ionamespace是指提供、开发Provider的组织的命名空间,默认为hashicorptype是指Provider的具体类型。

例如有以下Terraform模板:

terraform {
    required_providers {
         alicloud = {
          source = "aliyun/alicloud"
          version = "1.126.0"
        }
    }
}

上述模板使用terraform init命令会默认去registry.terraform.io下载aliyun开发的alicloudProvider的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 initplugin-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的编写更详细的参数可以参考官网

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: