参观工厂中的地形注册表

为什么要将Terraform模块、提供程序和后端注册表保存在一个文件中二进制存储库管理器喜欢Artifactory吗?因为,像您的构建、包和其他工件一样,您的Terraform文件是您的软件供应链.
Terraform是一个广泛使用的开源基础设施即代码(IaC)软件工具,用于管理云服务基础设施的整个生命周期。通过将云api编码为声明性配置文件,Terraform支持以统一的方式跨多个实例在云提供商中提供、调整和拆除基础设施。
通过将您的Terraform模块、提供程序和状态文件保存在Artifactory中,它们成为您的软件供应链安全信任圈的一部分,通过JFrog平台的身份验证访问、校验和验证和细粒度权限管理加以保护。Artifactory可以通过缓存代理远程Terraform模块/提供程序,使您独立于网络和远程资源。
结合你的地形工件与你的包和构建元数据在Artifactory,你获得交付到生产中的内容的最直接的可跟踪路径.
在Artifactory参观地形
在这次旅行中,我们将重点关注Artifactory中的两种类型的Terraform工件注册表:
- 起程拓殖允许用户为模块和提供程序创建存储库
- 起程拓殖模块-在单个目录下的一组或多个Terraform配置(' .tf ')文件。每个文件都使用一种声明性语言来告诉Terraform如何管理给定的基础设施集合。
- 起程拓殖提供者- Terraform插件,使用户能够管理上游API来配置云平台或服务。
- 起程拓殖的后端-具有重要管理功能的远程状态存储提供商。地形状态文件(Terraform .tfstate)将真实世界的资源映射到您的配置,跟踪元数据,并提高大型基础设施2022世界杯阿根廷预选赛赛程的性能。
Artifactory支持Terraform后端存储库的本地存储库,以及Terraform模块和Terraform提供商注册表的所有以下类型的存储库:
- 局部存储库-只能在组织的网络中访问的私有注册中心。
- 远程存储库-外部注册中心的代理(如public起程拓殖注册表),它提供了本地和可用性的缓存版本。
- 虚拟存储库—一个逻辑存储库,封装了任何一组相同包类型的本地和远程存储库,可以从单个URL访问。
人工地形资源库
在这个例子中,我们将看到如何使用Jfrog CLI将Terraform模块发布到Artifactory。
我们已经在Artifactory中建立了这些Terraform仓库:
- tf-modules-local-一个本地存储库的私人发布的Terraform模块。
- tf-providers-local-首选或自定义Terraform提供商的本地存储库。
- tf-remote-代理Hashicorp维护的公共Terraform注册表的远程存储库。
虚拟Terraform存储库tf-virtual聚合上述所有三个Artifactory存储库,通过单个URL提供对组的读写访问。虚拟存储库被配置为首先解析来自本地存储库的请求,因此,只有在本地版本不可用时,才会提供来自公共Terraform注册中心的模块或提供者。

将地形模块发布到Artifactory
在我们的开发人员工作站上,我们有一组用于AWS的Terraform模块。

使用JFrog CLI,我们可以将这些模块发布到Artifactory:
- 配置发布到tf-modules-local存储库。这将创建一个'。Jfrog’子目录,其中包含所请求的配置信息。

- 将模块从当前目录发布到Artifactory。您必须指定名称空间、提供程序和标记。

所有模块都使用JFrog CLI命令行中指定的标记发布到Artifactory。
在Artifactory中查看地形模块
在JFrog平台UI中,您可以浏览所有已发布的模块和提供程序。这里,我们可以在Artifactory中看到我们的Terraform模块。

在JFrog平台UI中,我们可以查看任何发布模块的信息,包括它的提供者和依赖项。此外,您还可以查看模块的输入、输出,甚至“Read”。我的文件。

使用发布的地形模块
为了使用我们发布的模块,我们创建了一个`main `。解析模块和提供程序的Terraform文件tf-virtualArtifactory虚拟仓库的路径:
Terraform {required_providers {aws = {source = " terradev90.jfrogdev.org/tf-virtual/aws "}}}模块" efs " {source = " terradev90.jfrogdev.org/tf-virtual__jfrog/efs/aws "}
通过虚拟回购访问AWS提供商,您可以选择该提供商的任何首选或定制版本tf-providers-local将使用存储库。方法中可用的最新版本tf-remoteHashicorp的Terraform注册表的代理。
在运行地形操作之前,我们必须通过标准` `从Artifactory获取并保存API令牌。起程拓殖登录命令Terraform CLI。你必须批准在Artifactory提示时执行Terraform CLI授权。
![]()
现在有了进入Artifactory的授权,我们可以使用起程拓殖init命令Terraform CLI执行`main `。在当前目录中。

由于没有指定EFS模块的特定版本,因此Terraform默认使用我们刚刚发布到Artifactory的最新版本(v10)。
人工地形BE注册表
Artifactory有一个本地存储库实现,支持Terraform远程后端。很容易将现有的后端解决方案迁移到Artifactory,并享受许多好处,包括:
- 支持多个工作区
- 内置状态锁定机制
- 内置安全状态加密存储
- 完整状态文件历史记录,包括发布时间和创建它的用户
- 状态文件之间的SmartDiff,轻松监控更改

将现有工作区迁移到使用人工后端
让我们看看如何迁移现有的kubernetes工作空间来使用Artifactory后端。对于本例,我们已经创建了Terraform后端存储库tf-backend在Artifactory。
首先,我们将配置后端以指向Artifactory TF后端存储库。

接下来我们将创建一个新的工作空间并运行'起程拓殖init”。注意,我们已经从之前的terraform登录中获得了Artifactory域的令牌(见上文),因此我们不需要再次登录来获取令牌。

现在我们已经准备好通过运行'地形状态推”命令。
![]()
管理状态文件和比较更改
将我们的状态文件迁移到Artifactory后,我们现在可以看到Artifactory如何使管理状态文件和比较版本之间的更改变得容易。
首先,我们将编辑现有模块,添加一个额外的RBAC规则。

然后我们用'起程拓殖计划命令预览更改,然后输入'起程拓殖应用’在我们的工作空间中应用这些更改,并在Artifactory中创建一个新的状态文件。
如果我们回到人工工厂我们现在可以看到两个state.latest.json我们当前的活动状态和state.timestamp.json我们之前的状态tf-backend资料库和jfrog-k8s-webinar工作空间

通过选择一个状态文件,我们可以看到关于该文件的重要信息,例如谁创建了它,何时创建的,并将其与其他状态进行比较


锁定状态
Artifactory提供内置的状态锁定机制。一个叫做locked的属性。添加了对工作空间执行配置更改的用户的值,在此期间,任何其他用户都将被拒绝更新工作空间,并且地形客户端将返回一个错误,其中包含当前被用户锁定的消息。一旦完成对工作区的更改,将释放锁

供应链塑造云
使用Artifactory来管理您的Terraform注册表,将使用JFrog DevOps平台经过验证的以二进制文件为中心的成功软件交付方法可以进一步加速云原生开发。
这些软件供应链管理的最佳实践可以与您的云配置管理过程一起使用,以赋予开发人员更多的权力。
不要只相信我们的话。你可以自己免费试用.

