在Artifactory参观Terraform注册

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

发布Terraform模块到Artifactory
在我们的开发人员工作站上,我们有一个与AWS一起使用的Terraform模块的单储备。

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

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

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

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

使用已发布的Terraform模块
为了使用我们发布的模块,我们创建了一个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注册表的代理。
在我们可以运行terrform动作之前,我们必须通过标准`从Artifactory获取并保存API令牌。起程拓殖登录terrraform CLI命令。你必须批准在Artifactory提示时执行Terraform CLI授权。
![]()
现在获得了访问Artifactory的授权,我们可以使用'起程拓殖init命令执行“main. exe”。Tf '在当前目录下。

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

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

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

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

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

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


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

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