如何在ARTIFACTORY中配置Terraform存储库

Tatarao Vana
2023-01-22 11:07

JFrog提供了一个成熟的Terraform存储库解决方案,从Artifactory 7.38.4版本开始,您可以完全控制Terraform模块、提供者和后端包的部署和解析过程。

在这篇知识库文章中,我们将讨论以下主题。

  1. 将模块和提供者部署到Terraform存储库并解析它们。
  2. 解决Terraform问题

将模块和提供者部署到Terraform存储库并解析它们

将模块部署到Artifactory:
1.通过将您的内容添加到tf文件中,创建一个新的Terraform模块。下面是一个示例
新建目录,后面跟着“terraform init”命令。$ cat main.tf
起程拓殖{
Required_version = ">= 0.12.26"

输出"hello_world" {
value = "Hello, World!"

2.导航到新创建的目录,执行以下命令将其内容打包到一个zip文件中,并根据模块版本命名:$ zip -r 1.0.0.zip。
添加:主要。Tf(泄气9%)

3.使用“Set Me Up”页面中的cURL命令部署模块,如下所示:
请注意,我的虚拟存储库名称是test-terraform,它由本地存储库test-terraform-modules-local组成。
$ curl -utestuser:testpassword -XPUT "https://jpd.local/artifactory/test-terraform/myns/mymodule/myprovider/1.0.0.zip" -T 1.0.0.zip
“repo”:“test- terrform -modules-local”,
path: "/myns/mymodule/myprovider/1.0.0.zip",
"created": "2022-09-29T07:06:57.015Z",
"createdBy": "testuser",
"downloadUri": "https://jpd.local/artifactory/test-terraform-modules-local/myns/mymodule/myprovider/1.0.0.zip",
"mimeType": "application/zip",
"size": "253"
"checksum ": {
"sha1": "a1f8d4026ddad3026278b072b3d476e4b50bf5de",
"md5": "5f7fb91cd0849148a15ebffe48958dcf",
"sha256": "a2bc2961618ab39dc18a559e7dccf58f2b83ebc70446dcdd5cc7dcc0f9f2f9a5"
},
" originalchecksum ": {
"sha256": "a2bc2961618ab39dc18a559e7dccf58f2b83ebc70446dcdd5cc7dcc0f9f2f9a5"
},
"uri": "https://jpd.local/artifactory/test-terraform-modules-local/myns/mymodule/myprovider/1.0.0.zip"

4.在其他Terraform项目(例如客户端机器)中,使用以下代码段使用已发布的模块:$ cat main.tf
模块"mymodule" {
Source = "jpd.local/test-terraform__myns/mymodule/myprovider"

5.执行Terraform登录命令。$ terraform login jfrog.local
6.执行Terraform init命令来解决该问题。$ terraform init
初始化模块……
下载詹妮弗。本地/test-terraform__myns/mymodule/myprovider 1.0.0
- mymodule在.terraform/modules/mymodule中
初始化后端…
初始化提供商插件…
terrraform已成功初始化!
____
您现在可以开始使用Terraform了。试着运行“地球计划”看看
基础设施所需的任何更改。所有Terraform命令
现在应该工作了。

将Terraform提供程序构件部署到Artifactory:

创建一个Terraform提供者存储库。根据我们的设置指示,我们必须将一个Terraform提供程序工件上传到Artifactory。$ curl -u: - xput "https://jfrog.local/artifactory/test-terraform-provider-local////terraform-provider-___.zip" -t .zip
例子:$curl -utestuser:testpass -XPUT "https://jfrog.local/artifactory/test-terraform-provider-local/testnamespace/testprovider/1.1.0/terraform-provider-testprovider_1.1.0_darwin_amd64.zip" -T ~/Downloads/ terrform -provider-hashicup .zip

"repo": "test- terrform -provider-local",
path: "/testnamespace/testprovider/1.1.0/terraform-provider-testprovider_1.1.0_darwin_amd64.zip",
"created": " 2022-10-25t6:14:36. 099z ",
"createdBy": "testuser",
"downloadUri": "https://jfrog.local/artifactory/test-terraform-provider-local/testnamespace/testprovider/1.1.0/terraform-provider-testprovider_1.1.0_darwin_amd64.zip",
"mimeType": "application/zip",
"size": "10498660"
"checksum ": {
"sha1": "c691c8add753ed1ce71d52cb8c613b97088766bd",
"md5": "3c56559e8a51d6669ae59f5fa8cb107b",
"sha256": "d7658715b589545a0ebccf26fadb6f6be85d739e329de8e61d5ef4bff0692299"
},
" originalchecksum ": {
"sha256": "d7658715b589545a0ebccf26fadb6f6be85d739e329de8e61d5ef4bff0692299"
},
"uri": "https://jfrog.local/artifactory/test-terraform-provider-local/testnamespace/testprovider/1.1.0/terraform-provider-testprovider_1.1.0_darwin_amd64.zip"

稍后,创建以下main。Tf文件如下。猫main.tf
起程拓殖{
required_providers {
Testprovider = {
版本= "1.1.0"
Source = "testnamespace/testprovider"



这是地形图。Rc文件内容。猫~ / .terraformrc
provider_installation {
直接{
排除= ["registry.terraform.io/*/*"]

network_mirror {
Url = "https://jfrog.local/artifactory/api/terraform/test-terraform-provider-local/providers/"


执行Terraform登录。$ terraform login jfrog.local
执行terraform init$ TF_LOG=DEBUG terrraform初始化
2022-10-25T11:45:12.389+0530 [INFO]地球形态版本:1.3.1
2022-10-25T11:45:12.389+0530 [INFO]运行时版本:go1.19.1
2022-10-25T11:45:12.389+0530 [INFO] CLI参数:[]string{"terraform", "init"}
2022-10-25T11:45:12.389+0530 [INFO]正在从/Users/testuserraov/.terraformrc加载CLI配置
2022-10-25T11:45:12.390+0530 [INFO]从/Users/testuserraov/.terraform.d/credentials.tfrc.json加载CLI配置
2012-10-25 t11:45:12.392+0530 [INFO] CLI命令参数:[]string{"init"}
初始化后端…
初始化提供商插件…
-查找匹配“1.1.0”的testnamespace/testprovider版本…
-正在安装testnamespace/testprovider v1.1.0…

解决Terraform问题

中的调试器记录器,请启用JFROG_HOME美元/ artifactory / var / etc / artifactory / logback.xml文件,并且不需要重新启动日志更改即可生效:

<文件> $ {log.dir} / artifactory-terraform.log > < /文件
< rollingPolicy class = " org.m.si-fil.common.logging.logback.rolling.FixedWindowWithDateRollingPolicy " >
< FileNamePattern > $ {log.dir.archived} / artifactory-terraform. % i.log.gz < / FileNamePattern >
10 < maxIndex > < / maxIndex >
< / rollingPolicy >
< triggeringPolicy class = " ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy " >
< < MaxFileSize > 25 mb / MaxFileSize >
< / triggeringPolicy >
<编码器类= " ch.qos.logback.core.encoder.LayoutWrappingEncoder " >
<布局类= " org.m.si-fil.common.logging.logback.layout.BackTracePatternLayout " >
<模式> % {yyyy-MM-ddTHH: mm: ss。瑞士,UTC} Z [jfrt] [% 5 p] [% -16 x {uber-trace-id}] [% -30.30 (% c {3}: % L)][% -20.20线程]- m % n % > < /模式
> < /布局
< /编码器>
< / appender >
<记录器name = " org.artifactory.addon。起程拓殖”相加性= " false " >
<级别值= "调试" / >
< appender-ref ref = "起程拓殖" / >
< / logger >

请注意,记录器是资源密集型的。因此,一旦问题被复制,请删除它们。

在客户端,使用以下命令开启terrraform客户端调试:出口TF_LOG =跟踪