基于Chef和Artifactory的二进制基础设施:五个最佳实践

作为二进制的基础设施几周前,我们宣布Artifactory支持基础设施管理平台,如Chef。我们在JFrog和我们在Chef的基础设施支持人员都认为,为公司基础设施中使用的所有工件(如Ruby Gems、NuGet包、rpm,特别是Chef Cookbooks)建立一个规范的Artifactory存储库,对于在保持安全性的同时实现DevOps速度至关重要。因此,我们想提供以下5个最佳实践,您应该遵循这些实践来充分利用Artifactory和Chef之间的集成。
1.确保在社区厨师超市上始终可靠地访问烹饪书
在创建自己的烹饪书时,您可能会使用从那里下载的社区烹饪书厨师超市作为依赖项。但是,直接使用Chef Supermarket会使您依赖于这个公共存储库始终处于正常状态,并且还需要始终可用的外部网络。如果这些资源中的任何一个变得不可用,您2022世界杯阿根廷预选赛赛程的工作可能会逐渐停止。
您可以通过使用来降低这种风险远程厨师食谱库在Artifactory代理公共厨师超市。这基本上消除了您对公共Chef Supermarket和web的依赖,因为Artifactory中的远程Chef Cookbook存储库根据需要下载Cookbook,然后在本地缓存它们。一旦食谱被下载,它就可以在您的本地网络上使用,而不受社区厨师超市或外部网络的可用性的限制。

2.使用本地存储库来分发内部烹饪书和其他工件
您希望启动的一些环境是在DevOps团队编写的内部cookbook中定义的。这些可能还需要应用程序二进制文件、jar、WARs、RubyGems和其他内部工件的tarball,这些都是Chef运行时经常需要的。使用文件系统来分发这些工件是乏味、不可靠和不安全的。以Chef为例,将大型工件放在Cookbooks的“files”目录中会使它们难以审计和更新,并将它们的变更管理与Cookbook的变更管理联系起来。共享这些内部构件的正确方法是使用本地存储库。
一个本地存储库在Artifactory中是一个物理的、类型特定的、本地管理的存储库,您可以在其中部署工件。它为您提供了一个中央位置来存储内部二进制文件细粒度访问控制)通过一个URL链接到其他团队。Artifactory支持所有常见的包格式,现在,通过Artifactory对Chef Cookbook存储库的支持,您可以构建自己的内部包本地厨师超级市场在Artifactory。根据您定义的权限,您的Chef客户端可以访问存储在本地Chef Cookbook存储库中的内部Cookbook,而您的Cookbook可以通过Chef资源访问您的其他内部构件,例如2022世界杯阿根廷预选赛赛程remote_file.我fnece年代年代一个ry,您可以使用头参数执行HTTP基本认证。如果你想更进一步,你可以使用Artifactory的复制将工件和内部cookbook分发到地理位置遥远的站点的团队的能力。通过复制这些存储库,全球分布的团队可以轻松地进行协作,同时保持所有集合资源的同步。2022世界杯阿根廷预选赛赛程
3.使用虚拟存储库提供内部和社区烹饪书的单一统一视图
使用单一资源来上传内部烹饪书和访问托管在远程公共存储库上的烹饪书非常方便。您的开发人员只需要知道他们需要使用的一个URL。Artifactory中的虚拟存储库提供了这种功能。
与一个虚拟厨师超市在Artifactory中,您可以聚合您想要访问社区Chef Cookbooks的所有远程站点,添加本地Chef Supermarket,您的开发人员可以在其中上传内部Cookbooks,并在单个逻辑视图下显示它们。
4.为了维护安全性和访问控制,在Artifactory中禁用对本地Chef Cookbook存储库的匿名访问
无论您的组织是大是小,您都可能希望为组织中的不同用户提供对内部cookbook的不同访问权限。例如,开发人员可能能够将cookbook上传到开发存储库,但是只有QA团队成员可以将cookbook从开发存储库提升到登台存储库。
若要启用细粒度访问控制,请禁用对Chef Cookbook存储库的匿名访问。这将应用Artifactory提供的几层安全性。您的第一道防线是我们在前面的最佳实践中提到的虚拟存储库,因为您可以确保开发人员只访问已经批准的外部资源,例如社区Chef Supermarket。2022世界杯阿根廷预选赛赛程然后,Artifactory允许您使用带有通配符的命名模式来定义“Includes”和“excluded”以供下载。这种灵活的机制允许您定义整个存储库中不允许访问的任何内容,甚至包括对您的开发可能至关重要的单个Cookbook。一旦您控制了可以下载的内容,您现在就拥有了一个灵活的、基于权限的授权系统,该系统允许您定义哪些用户可以访问哪些存储库或工件,以及他们可以对它们做什么(下载、上传、删除、移动等)。最后,通过与常见访问协议(如LDAP、Active Directory、SAML、Crowd等)的集成,您可以在服务器级别上控制访问。
要对Artifactory中的Chef Cookbook存储库应用访问控制,首先禁用匿名访问。然后,您的用户安装knife-art。宝石插件使用:
厨师宝石安装knife-art
然后访问您的存储库将需要基本的身份验证,这意味着Artifactory提供的所有安全层都将发挥作用。
5.使用Chef 's Artifactory RubyGem与来自烹饪书的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管理厨师烹饪书的所有信息。现在注册.
