IaC基础设施即代码:Terraform使用本地编译(In-house)的Providers

发布时间:2024年01月18日

目录

一、实验

1.环境

2.初始化一个项目

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

二、问题

1.Terraform Provider有哪些全网标识符

2.本地安装Terraform Provider有哪些方法


一、实验

1.环境

(1)主机

表1-1 主机

主机系统软件备注
pipepointLinuxTerraform 1.6.6

2.初始化一个kind项目

(1)查看版本

terraform -v

(2)初始化

terraform init

会报错

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

(1)编写配置文件

vim .terraformrc

provider_installation {
  filesystem_mirror {
    path    = "/usr/share/terraform/providers"
    include = ["registry.terraform.io/*/*"]
  }
}

(2)Terraform模板(kind)

Terraform Registry

USE PROVIDER

terraform {
  required_providers {
    kind = {
      source = "tehcyx/kind"
      version = "0.2.1"
    }
  }
}

provider "kind" {
  # Configuration options
}

(3) 下载软件包

https://github.com/tehcyx/terraform-provider-kind/releases

(4)tree递归查看目录 (将软件包按递归目录放置)

tree -s /usr/share/terraform/


?

(5)格式化代码

terraform fmt

(6) 初始化

terraform init

(6) 验证

terraform validate

二、问题

1.Terraform Provider有哪些全网标识符

(1)概念

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

(2)Terraform模板(alicloud)

Terraform Registry

模板使用terraform init命令会默认去registry.terraform.io下载aliyun开发的alicloudProvider的1.214.0版本。

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

2.本地安装Terraform Provider有哪些方法

(1)原理

如果使用本地安装插件有两种方法。首先两种方法都需要将下载的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.214.1)
                └── <your OS>(e.g. linux_amd64)
                    └── <binary file>(e.g. terraform-provider-alicloud)

(2)方法一 (使用terraform init的自带参数)

第一种方法,使用terraform initplugin-dir参数:

terraform init -plugin-dir=/usr/share/terraform/providers

(3)方法二 (编写配置文件)

第二种方法,编写.terraformrc配置文件,该文件需要放在$HOME/目录下:

#其中include字段是指符合该通配符全网标识符的Provider,需要去/usr/share/terraform/providers查找本地Provider。

provider_installation {
  filesystem_mirror {
    path    = "/usr/share/terraform/providers"
    include = ["registry.terraform.io/*/*"]
  }
}

文章来源:https://blog.csdn.net/cronaldo91/article/details/135679213
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。