云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





概述

Artifactory中的Terraform注册表允许您为以下每个独特的Terraform组件创建专用存储库:

  • 供应商一组与云提供商、SaaS提供商和其他api交互的插件。
  • 模块作为一起使用的多个资源的容器。2022世界杯阿根廷预选赛赛程的集合.tf保存在一个目录中的文件。

模块和提供者对本地存储库有不同的设置,但在配置远程存储库和虚拟存储库时是相同的。

要了解更多关于JFrog平台中的Terraform存储库解决方案的信息,请参见起程拓殖存储库

页面内容


Terraform模块注册表

Terraform模块是Terraform配置,可以由其他配置调用和配置。他们服务作为多个容器2022世界杯阿根廷预选赛赛程它们一起使用。它们包含的集合.tf保存在一个目录中的文件。要创建一个模块,请打包所有的.tf文件转换为Zip归档文件并部署到Terraform本地存储库。有关更多信息,请参见创建Terraform模块

Terraform模块存储库结构

Terraform Module存储库是一个包含Zip文件集合的目录,由以下主要坐标组成:

  • 名称空间
  • 模块
  • 提供者
  • version.zip

Artifactory遵循Terraform Module目录布局约定。

命名空间/模块名称/供应商/ version.zip

例如:

terraform-aws-modules / vpc / aws / 2.0.0.zip harshicorp /高/ aws / dev - 123. - zip

Terraform提供者注册表

供应商是一组与云提供商、SaaS提供商和其他api交互的插件。

Terraform提供者存储库结构

Terraform Provider存储库是一个目录,其中包含邮政编码由这些主要坐标组成的文件:

  • 名称空间
  • 提供者
  • Version.zip
  • 操作系统
  • 体系结构

Artifactory遵循Terraform Provider目录布局约定。

命名空间/供应商/版本/ terraform-provider -{名称}_ {version} _ {OS} _{弓}. zip
例如:


/谷歌/ 3.88.0 / terraform-provider-google_3.88.0_darwin_amd64.zip

建立一个Terraform模块/提供者注册表

您可以设置以下存储库类型:

建立一个本地模块/提供者注册表

本地存储库使您能够将Terraform模块或提供程序部署为zip存档。Artifactory计算所有包的元数据,并对它们进行索引,以允许用户通过Terraform CLI下载这些包。

  1. 要创建Terraform模块/提供者本地存储库,请导航到政府模块。
  2. 导航到存储库|存储库|当地的|新建本地存储库并选择起程拓殖随着包类型
  3. 在Basic选项卡中,从起程拓殖注册表类型列表:
    • 选择模块申请terraform-module-defaulT存储库布局。
    • 选择提供者申请terraform-provider-defaulT存储库布局。

设置远程Terraform注册表

远程存储库使您能够代理和缓存远程Terraform模块和提供程序包。

要指定远程存储库支持Terraform包,需要设置其包类型起程拓殖当它创建时。

注意,提供程序和模块的远程存储库设置是相同的。



关于特定的terrraform设置,请遵循以下指南。

URL
模块存储API的基URL。
使用Smart远程存储库时,请将URL设置为< base_Artifactory_URL > / repokey。
起程拓殖设置
Git提供者

当指向官方HashiCorp Terraform Registry时,建议选择Github。

注意,不支持其他Git提供者。

注册网址

注册中心API的基URL。
使用智能远程存储库时,将URL设置为< base_Artifactory_URL > / api /起程拓殖/ repokey

提供者URL
提供者存储API的基URL。
使用Smart远程存储库时,请将URL设置为< base_Artifactory_URL > / api /起程拓殖/ repokey /提供者

有关公共远程存储库字段的信息,请参见远程存储库

设置虚拟Terraform注册表

一个虚拟存储库在Artifactory中定义的聚合来自本地和远程存储库的包。

这允许您从为虚拟存储库定义的单个URL访问本地托管的模块和提供者,以及远程代理的Terraform存储库。

要定义一个虚拟terrraform存储库,请执行以下操作:

  1. 创建一个虚拟存储库,并设置包类型起程拓殖
  2. 的底层本地和远程Terraform模块或提供程序存储库基本设置选项卡。

解决Terraform模块/提供者

Terraform模块只能从正式的Terraform注册表中解析,或者从智能远程存储库到另一个Artifactory存储库。

生成访问令牌

要将Artifactory与terrraform CLI一起使用,您需要生成一个访问令牌有以下两种方法:

使用浏览器登录生成访问令牌

  1. 本机运行Terraform登录到您的Artifactory域,以生成一个访问令牌并将其保存在凭证文件(~ / .terraform.d / credentials.tfrc.json).
    运行登录时,将打开以下页面。

    进入Terraform命令行登录过程。
  2. 您将被路由到JFrog平台登录页面,并打开以下页面。
  3. 点击批准
    系统显示如下。

  4. 关闭页面并返回到命令行以查看成功消息。

  5. 对象执行一次性编辑~ / .terraformrc文件,以确保CLI只在Artifactory中搜索提供程序。为此,我们建议只指向Terraform Virtual存储库。

手动生成身份令牌

  1. 生成一个标识令牌,您可以使用它将Artifactory连接到Terraform CLI。详情请参阅用户配置文件-身份令牌
  2. 创建一个名为'的文件credentials.tfrc.json”在您的Terraform目录中,('~ / .terraform.d / credentials.tfrc.json”)。
  3. 中生成的标识令牌credentials.tfrc.json文件,如下例所示:

    #猫~ / .terraform.d / credentials.tfrc。json {"credentials": {"ARTIFACTORY-DOMAIN": {"token": "IDENTITY-TOKEN"}}}

    如果已添加访问令牌credentials.tfrc.json,则不需要再次使用Terraform登录servername.jfrog.io

搜索Terraform包

类型,可以按类型搜索Terraform模块或提供程序工件包搜索


计算一个Terraform存储库元数据

您可以通过UI或使用REST API触发本地Terraform存储库的异步重新索引。
这也将重新索引git索引,因此也将索引远程存储库。
工件树浏览器,选择您的Terraform存储库,右键单击并选择重新计算指数从名单上。需要管理员权限。
要通过REST API重新索引Terraform存储库,请参考以下REST API。

计算地形指数

描述:计算指定存储库的Terraform模块或提供者索引。
笔记:需要Artifactory Pro。
安全:需要有效的admin用户。
使用: POST /api/terraform/{repoKey}/reindex
生产:应用程序/文本
: 7.38.4
样例输出

重建terraform存储库的索引。

使用JFrog CLI发布Terraform模块

JFrog CLI提供了对Terraform模块打包并将其部署到JFrog Artifactory的全面支持。

软件版本要求

  • JFrog CLI 2.12.0及以上版本。
  • JFrog Artifactory版本7.38.10及以上。

步骤1:设置terrraform存储库

在使用JFrog CLI将terrraform模块发布到Artifactory之前,您首先需要为项目设置部署存储库。

下面是设置存储库的方法。

  1. CD到Terraform项目的根目录。
  2. 运行摩根富林明terraform-config命令。
命令名

terraform-config

缩写

交通

——全球

(默认错误)

如果您希望配置为全局的(对于机器上的所有项目),则将其设置为true。特定的项目可以覆盖全局配置。

——server-id-deploy

(可选)

用于部署的Artifactory服务器ID。方法配置服务器Jf c add'命令。

——repo-deploy

(可选)

用于构件部署的存储库。

示例1

为这个Terraform项目设置存储库。

摩根富林明交通
示例2

为这台机器上的所有Terraform项目设置存储库。

Jf TFC—全球

步骤2:发布Terraform模块到Artifactory

起程拓殖发布命令包并将Terraform模块部署到Artifactory中指定的Terraform存储库。

在运行起程拓殖发布命令对项目进行配置时,应使用terraform-config命令。

模块按照以下布局部署到已配置的Terraform存储库。
注意moduleName是否由模块目录的名称决定

命名空间/ moduleName /供应商/ tag.zip

要发布特定的模块,请访问模块的根目录。

在运行之前起程拓殖发布, cd到包含Terraform模块的目录。请注意,这些模块稍后将在Artifactory中共享公共布局参数(名称空间、提供者和标记)。

包装模块
打包模块的规则和指南
  • 从当前工作目录扫描文件系统。

  • 包含至少一个文件的目录.tf扩展被认为是一个Terraform模块,它的所有内容将打包在一个zip文件中(包括子模块目录),并将部署到Artifactory。

  • 在模块被打包后,递归扫描不会在模块目录内运行,因此,子模块不会被打包并单独部署到Artifactory。

使用模式添加排除

有一个选项可以设置模式来排除可能包含以下内容的模块:

  • 匹配模式的目录将不会被扫描。
  • 匹配模式的文件不会打包到相关的zip文件中。

命令参数和标志如下表所示:

命令名

起程拓殖发布

缩写

tfp

——除外

(可选)

以分号分隔的排除模式列表。允许使用通配符。

命令参数

--名称空间

要发布其模块的Terraform项目的名称空间。

--提供者

Terraform项目的提供者,即发布其模块的提供者。

--标签

正在发布的模块的标记。

一个例子

先决条件

在首次对项目运行此命令之前,应使用terraform-config命令。

要打包并发布Terraform模块,请运行以下命令。

该命令将所有模块打包并部署到当前工作目录下。
模块将被发布到配置的存储库中,使用如下布局:tera / moduleName / aws / v0.1.2.zip
模块和文件,包括测验而且忽略将被排除在外(在“排除”部分阅读更多)。

Jf tf p -namespace=tera -provider=aws -tag=v0.1.2 -exclusions= " *test*;*ignore*"

想了解更多信息,试试这个Terraform项目示例

  • 没有标签
版权所有©2022 JFrog Ltd.