使用Chef和Artifactory作为二进制的基础设施:五个最佳实践

作为二进制文件的基础设施:5个最佳实践

二进制基础设施几个星期前,我们宣布Artifactory支持Chef等基础设施管理平台。我们JFrog和Chef的基础架构拥护者都认为,为公司基础架构中使用的所有工件(如Ruby Gems、NuGet包、rpm,尤其是Chef Cookbooks)建立一个规范的Artifactory存储库,对于在保持安全性的同时实现DevOps速度至关重要。因此,我们想提供以下五个最佳实践,您应该遵循这些实践,以充分利用Artifactory和Chef之间的集成。

1.确保在社区厨师超市获得一致和可靠的烹饪书

在创建自己的Cookbooks时,您可能会使用从社区下载的Cookbooks厨师超市作为依赖项。但是,直接使用Chef Supermarket会使您依赖于这个公共存储库始终处于启动状态,并且还依赖于必须始终可用的外部网络。如果这些资源中的任何一个变得不可用,您2022世界杯阿根廷预选赛赛程的工作可能会陷入停顿。

您可以通过使用远程厨师烹饪库在Artifactory代理公众厨师超市。这消除了你对公共Chef Supermarket和web的依赖,因为Artifactory中的远程Chef Cookbook存储库可以按需下载Cookbook,然后在本地缓存它们。一旦烹饪书被下载,它就可以在你的本地网络上使用,而不受社区厨师超市或外部网络的影响。

二进制基础设施:访问厨师超市

2.使用本地存储库来分发内部cookbook和其他工件

您想要启动的一些环境是在DevOps团队编写的内部cookbook中定义的。这些可能还需要应用程序二进制文件、jar、war、RubyGems和其他内部工件的tarball,这些通常是运行Chef所需要的。使用文件系统来分发这些工件是冗长、不可靠和不安全的。在Chef的情况下,将大型工件放在Cookbook的“files”目录中会使它们难以审计和更新,并将它们的变更管理与Cookbook的变更管理联系起来。共享这些内部构件的正确方法是使用本地存储库。

一个本地存储库in Artifactory是一个物理的、特定类型的、本地管理的存储库,您可以将工件部署到其中。它为您提供了一个中央位置来存储内部二进制文件,以便访问细粒度访问控制)通过一个URL链接到其他团队。Artifactory支持所有常见的包格式,现在,通过Artifactory对Chef Cookbook存储库的支持,您可以构建自己的内部包格式本地厨师超市在Artifactory。根据您定义的权限,您的Chef客户端可以访问存储在本地Chef Cookbook存储库中的内部Cookbook,并且您的Cookbook可以通过Chef资源访问其他内部工件,例如2022世界杯阿根廷预选赛赛程remote_filefnece年代年代一个ry你可以使用参数进行HTTP基本认证。如果你想更进一步,你可以使用Artifactory的复制向地理位置遥远的团队分发工件和内部cookbook的能力。通过复制这些存储库,全局分布的团队可以轻松地协作,同时保持所有集体资源的同步。2022世界杯阿根廷预选赛赛程

3.使用虚拟存储库提供内部和社区cookbook的单一统一视图

使用单一资源上传内部cookbook和访问远程公共存储库上托管的cookbook非常方便。您的开发人员只需要知道他们需要使用的一个URL。Artifactory中的虚拟存储库提供了这种功能。

与一个虚拟厨师超市在Artifactory中,您可以聚合想要访问社区Chef Cookbooks的所有远程站点,添加本地Chef Supermarket,开发人员可以在其中上传内部Cookbooks,并将它们全部呈现在单个逻辑视图下。

4.为了维护安全性和访问控制,禁用对Artifactory中的本地Chef Cookbook存储库的匿名访问

无论您的组织是大还是小,您都可能希望为组织中的不同用户提供对内部cookbook的不同访问权限。例如,开发人员可能能够将cookbook上传到开发存储库,但是只有QA团队成员可以将cookbook从开发存储库提升到staging存储库。

要启用细粒度访问控制,请禁用对Chef Cookbook存储库的匿名访问。这将应用Artifactory提供的几个安全层。您的第一道防线是我们在前面的最佳实践中提到的虚拟存储库,因为您可以确保开发人员只访问已批准的外部资源,例如社区Chef Supermarket。2022世界杯阿根廷预选赛赛程然后,Artifactory允许您使用带有通配符的命名模式来定义下载的“包括”和“排除”。这种灵活的机制允许您定义从整个存储库排除访问的任何内容,直到包含可能对您的开发至关重要的单个Cookbook。一旦控制了可以下载的内容,您现在就拥有了一个灵活的、基于权限的授权系统,该系统允许您定义哪些用户可以访问哪些存储库或工件,以及他们可以对它们执行什么操作(下载、上传、删除、移动等)。最后,通过与常见的访问协议(如LDAP、Active Directory、SAML、Crowd等)集成,您可以在服务器级别控制访问。

要对Artifactory中的Chef Cookbook存储库应用访问控制,首先要禁用匿名访问。然后,您的用户安装knife-art。宝石插件使用:

Chef gem installknife-art

访问您的存储库将需要基本的身份验证,这意味着Artifactory提供的所有安全层都要发挥作用。

5.使用Chef的Artifactory RubyGem与Cookbook中的Artifactory进行通信

您的一些cookbook在执行过程中可能需要与Artifactory进行通信。例如,他们可能需要下载受保护的工件,或者在Artifactory的一个存储库中修改工件的元数据。这正是Artifactory广泛的REST API的作用。

大厨创造了Artifactory RubyGem它对您进行身份验证,并从您的Cookbook中对Artifactory进行REST API调用。一定要阅读文档,因为它没有提供Artifactory REST API的完整覆盖。您还应该考虑到Artifactory的许多REST API端点仅在Pro版本中可用。另外,您还可以在Chef之外使用这个gem与任何Ruby程序中的Artifactory进行交互。

作为二进制文件的基础设施——受控的、可审计的和可靠的

使用工件存储库是高效的现代DevOps团队必不可少的组成部分,特别是当工件必须进行变更控制、版本控制和审计时。现在,有了Artifactory对基础设施管理的支持,它是存储和管理Chef cookbook以及cookbook所依赖的所有其他构件的理想场所。通过使用Chef和Artifactory并遵循这些最佳实践,您的基础架构的整个生命周期将得到适当的控制、审计和独立于互联网。

准备好开始以二进制文件的形式管理基础设施了吗?

在我们的网络研讨会上学习所有关于与Artifactory管理厨师烹饪书的知识。现在注册