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

本文详细描述了如何在Terraform环境中使用本地编译的Providers,包括初始化kind项目、配置文件编写、Provider全网标识符的理解以及本地安装TerraformProvider的方法,重点介绍了阿里云Provider的示例。
摘要由CSDN通过智能技术生成

目录

一、实验

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/*/*"]
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值