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下载这些包。
- 要创建Terraform模块/提供者本地存储库,请导航到政府模块。
- 导航到存储库|存储库|当地的|新建本地存储库并选择起程拓殖随着包类型.
- 在Basic选项卡中,从起程拓殖注册表类型列表:
- 选择模块申请
terraform-module-defaul
T存储库布局。 - 选择提供者申请
terraform-provider-defaul
T存储库布局。
- 选择模块申请
设置远程Terraform注册表
远程存储库使您能够代理和缓存远程Terraform模块和提供程序包。
要指定远程存储库支持Terraform包,需要设置其包类型来起程拓殖当它创建时。
注意,提供程序和模块的远程存储库设置是相同的。
关于特定的terrraform设置,请遵循以下指南。
URL |
模块存储API的基URL。 使用Smart远程存储库时,请将URL设置为 < base_Artifactory_URL > / repokey。 |
起程拓殖设置 |
|
Git提供者 |
当指向官方HashiCorp Terraform Registry时,建议选择Github。 注意,不支持其他Git提供者。 |
注册网址 |
注册中心API的基URL。 |
提供者URL |
提供者存储API的基URL。 使用Smart远程存储库时,请将URL设置为 < base_Artifactory_URL > / api /起程拓殖/ repokey /提供者 |
有关公共远程存储库字段的信息,请参见远程存储库.
设置虚拟Terraform注册表
一个虚拟存储库在Artifactory中定义的聚合来自本地和远程存储库的包。
这允许您从为虚拟存储库定义的单个URL访问本地托管的模块和提供者,以及远程代理的Terraform存储库。
要定义一个虚拟terrraform存储库,请执行以下操作:
- 创建一个虚拟存储库,并设置包类型是起程拓殖.
- 的底层本地和远程Terraform模块或提供程序存储库基本设置选项卡。
解决Terraform模块/提供包
生成访问令牌
要将Artifactory与terrraform CLI一起使用,您需要生成一个访问令牌有以下两种方法:
使用浏览器登录生成访问令牌
- 本机运行Terraform登录到您的Artifactory域,以生成一个访问令牌并将其保存在凭证文件(
~ / .terraform.d / credentials.tfrc.json
).
运行登录时,将打开以下页面。
进入Terraform命令行登录过程。 - 您将被路由到JFrog平台登录页面,并打开以下页面。
- 点击批准.
系统显示如下。 - 关闭页面并返回到命令行以查看成功消息。
- 对象执行一次性编辑
~ / .terraformrc
文件,以确保CLI只在Artifactory中搜索提供程序。为此,我们建议只指向Terraform Virtual存储库。
手动生成身份令牌
- 生成一个标识令牌,您可以使用它将Artifactory连接到Terraform CLI。详情请参阅用户配置文件-身份令牌.
- 创建一个名为'的文件
credentials.tfrc.json”
在您的Terraform目录中,('~ / .terraform.d / credentials.tfrc.json
”)。 中生成的标识令牌
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之前,您首先需要为项目设置部署存储库。
下面是设置存储库的方法。
- CD到Terraform项目的根目录。
- 运行
摩根富林明terraform-config
命令。
命令名 |
|
缩写 |
|
——全球 |
(默认错误) 如果您希望配置为全局的(对于机器上的所有项目),则将其设置为true。特定的项目可以覆盖全局配置。 |
——server-id-deploy |
(可选) 用于部署的Artifactory服务器ID。方法配置服务器 |
——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项目示例.