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

目录

一、实验

1.环境

2.初始化一个项目

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

二、问题

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

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


一、实验

1.环境

(1)主机

表1-1 主机

主机 系统 软件 备注
pipepoint Linux Terraform 1.6.6

2.初始化一个kind项目

(1)查看版本

terraform -v

(2)初始化

terraform init

会报错

IaC基础设施即代码:Terraform使用本地编译(In-house)的Providers_第1张图片

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

(1)编写配置文件

vim .terraformrc

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

IaC基础设施即代码:Terraform使用本地编译(In-house)的Providers_第2张图片

(2)Terraform模板(kind)

Terraform Registry

USE PROVIDER

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

provider "kind" {
  # Configuration options
}

IaC基础设施即代码:Terraform使用本地编译(In-house)的Providers_第3张图片

(3) 下载软件包

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

IaC基础设施即代码:Terraform使用本地编译(In-house)的Providers_第4张图片

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

tree -s /usr/share/terraform/

IaC基础设施即代码:Terraform使用本地编译(In-house)的Providers_第5张图片
 

(5)格式化代码

terraform fmt

(6) 初始化

terraform init

IaC基础设施即代码:Terraform使用本地编译(In-house)的Providers_第6张图片

(6) 验证

terraform validate

二、问题

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

(1)概念

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

(2)Terraform模板(alicloud)

Terraform Registry

IaC基础设施即代码:Terraform使用本地编译(In-house)的Providers_第7张图片

模板使用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/)
└── (e.g. registry.terraform.io)
    └── (e.g. aliyun)
        └── (e.g. alicloud)
            └── (e.g. 1.214.1)
                └── (e.g. linux_amd64)
                    └── (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/*/*"]
  }
}

你可能感兴趣的:(IaC基础设施即代码,terraform,云原生)