使用二进制存储库管理器保护私有流浪箱和更多

团队成员之间统一开发环境的重要性不容低估。由环境变量、基础架构版本和其他与代码本身无关的原因引起的错误通常是最难追踪和解决的。任何听过其他开发人员说“……但它在我的机器上工作”的开发人员都理解这一点。但是让一台机器和其他机器一样是一个复杂的过程。配置操作系统、数据库、开发工作区和大量云服务有时会拖上一周甚至更长时间。

这些正是《Vagrant》所解决的问题。

自从Vagrant加入虚拟化领域以来,这些问题都已成为过去。现在,开发人员所要做的就是输入vagrant和正确的框,并在几分钟内开始编码。但问题仍然存在,什么是正确的盒子?一个开发组织可能需要许多不同的盒子。

对于项目所在的环境,团队可能有不同的需求

正在开发中,并且经常,团队源代码的一个版本可能与基础设施一起驻留在Vagrant盒子中。因此,组织需要同时维护和管理数百个盒子。Vagrant确实在其云存储库Atlas上提供了私人盒子,但企业通常需要一个更安全的环境来存放公司的源代码。

Artifactory对Vagrant的支持意味着您可以轻松地为Vagrant盒子设置本地存储库。本白皮书介绍了将您的Vagrant客户端指向Artifactory以取代Atlas作为企业软件开发组织中Vagrant盒子的源和目标的好处。

1.在您的组织中分发和共享方框

为了最大限度地重用代码库,并确保开发人员在相同的环境下工作,您需要一种简单的方法在您的团队和整个组织中共享Vagrant Boxes。

使用局部存储库, Artifactory为您提供了一个部署和存储软件工件的中心位置-有效地,
一个安全的,私人的仓库为您的流浪者盒子。当所有团队都知道可以从单个URL访问任何框时,管理不同团队之间对框的访问就变得非常容易了。但是,对于开发团队可能分布在世界各地的全球性企业来说,这可能还不够。

为了在地理位置偏远的组织站点之间启用共享框,您可以将存储库复制到本地网络之外的另一个Artifactory实例。复制的存储库会周期性地自动与它们的源同步,因此您的盒子可以供不同的团队使用,无论他们位于哪里。

局部存储库

本地存储库是物理的、本地管理的存储库,通常用于部署内部和外部发布以及开发构建。通过将所有图像存储在本地存储库中,可以通过一个公共URL从整个组织的单个访问点使用它们。

2.安全及访问控制

每个组织都需要实现安全策略,以便开发人员只能在授权的位置存储盒子,并访问他们被授权使用的盒子。

Artifactory使用一组您可以配置的权限来为Vagrant盒子提供安全性和访问控制。通过定义适当的用户和组,您可以控制开发人员可以在哪里访问或部署框,是否可以注释元数据,或删除框等等。Artifactory还通过与最常见的访问协议(如LDAP、SAML、Crowd等)的完全集成来控制对服务器的访问。通过提供全面的安全和访问控制功能,Artifactory帮助您管理开发过程,确保开发人员只能访问他们被授权的存储库。例如,您可以配置Artifactory来授权您的DevOps团队将特定的盒子上传到或删除到开发团队的Vagrant存储库中,而开发人员只被授权从存储库中下载盒子。

Artifactory为本地存储库提供的这种细粒度的安全和访问控制远远超过Atlas上的私有盒子目前提供的安全性和访问控制。Artifactory有效地取代了Atlas,让您可以在组织中管理任意数量的安全和私有盒子。

3.全面支持Docker

随着Docker技术的不断发展,它的使用也在不断增长。如果您还没有在您的组织中使用Docker,可能很快就会这样做。所以现在,除了管理Vagrant箱子,你还需要管理Docker映像。但是没有必要安装和维护另一个工具。Artifactory是一个成熟的Docker存储库,支持所有Docker Registry api。这允许Docker客户端直接与Artifactory合作,为企业Docker用户带来了几个好处。

使用本地存储库就可以分发和共享图像在组织内轻松管理不同团队之间的映像。您甚至可以将您的Artifactory Docker存储库复制到Artifactory的远程实例中,以便与地理位置遥远的站点的同事共享映像。

Artifactory提供细粒度访问控制为您组织的映像提供安全的“docker push”和“docker pull”有效提供安全、私有的Docker存储库超出Docker可信注册表提供的安全性。

使用Artifactory,而不是私有存储库码头工人中心,消除了与互联网连接相关的任何问题可靠且一致地访问图像.并与Artifactory运行在一个高可用性配置您的Docker映像具有业界无可比拟的系统稳定性和可用性。

Artifactory的智能搜索可以很容易地找到存储在系统中的任何Docker映像。Docker Registry API支持Docker客户端的基本搜索,但Artifactory提供了更多。内置搜索通过单击操作来回答常见需求,自定义属性提供了满足各种特定需求的灵活性,Artifactory Query Language提供了一种简单的方法来制定复杂的查询,让您可以根据任何标准集找到图像。

无论你是已经开始使用Docker,还是只是在评估如何将它引入到你的组织中,一旦你使用Artifactory来管理你的Vagrant盒子,你就已经覆盖了Docker映像。

4.与您的构建生态系统完全集成

虽然让开发人员能够轻松高效地访问二进制构件非常重要,但对于您的构建系统来说,这一点更为重要,因为您的构建系统可能每天运行多次构建。

通过一组插件,Artifactory提供了与当今流行的CI系统(如Jenkins、Bamboo和TeamCity)的紧密集成。这些系统在创建构建时使用Artifactory来提供工件和解决依赖关系,并且还将其作为将构建输出部署到相应的本地存储库的目标。

通过Artifactory运行构建的主要好处之一是完全可重复的构建。Artifactory存储详尽的构建信息,包括特定的工件版本、模块、依赖关系、系统属性、环境变量、用户信息、时间戳等等。有了这些信息,就很容易在任何时候忠实地重新生成一个构建。此外,使用内置的“Diff”工具,您可以比较构建,从而确切地知道从一个版本到另一个版本引入了哪些更改。当试图追踪发布的特定版本中报告的错误时,这些功能是非常宝贵的。

Artifactory还简化了发布管理。一系列简单的设置配置了一些事情,比如分期、构建推广、VCS标记等等,基本上自动化了发布管理过程。

但是,如果您使用的是基于云的CI系统,而不能应用插件,会发生什么呢?在这种情况下,Artifactory直接为构建工具本身(如Maven和Gradle)提供插件,最终提供相同级别的构建信息。本质上,由于Artifactory是平台不可知的,它可以与组织内所有构建生态系统中的通用工具集成。最后,一旦您的构建被自动化,Artifactory将根据您组织的维护策略清理旧的构建,从而使您的系统免于混乱。

Vagrant_scheme_1

5.智能搜索框使用自定义属性和AQL

考虑到系统中有大量的框,找到特定的东西有时会非常复杂。

Artifactory通过UI和使用广泛的REST API为您提供了灵活的搜索功能。您可以根据名称、版本、时间戳、校验和等固有属性的任何组合来查找框。为了方便,通用搜索内置在Artifactory中。例如,您可以要求任何方框的“最新”版本,而不必指定特定的构建号。Artifactory知道如何比较任何存储库中一个盒子的所有不同版本,并提供可用的最新版本。

为了提供更大的灵活性,Artifactory允许您定义可以分配给框的自定义属性,然后在搜索中使用。例如,您可以定义一个属性来区分开发、QA和生产环境中使用的盒子。

Checksum-based搜索

通过校验和搜索框是Artifactory支持的强大功能,这得益于其独特的基于校验和的存储。即使映像已被重命名、移动或部署到组织之外,您也可以将其追溯到原始版本。只需通过校验和工具(支持MD5和SHA1)运行图像,并在Artifactory中运行“校验和”搜索来检索原始版本。

但智能搜索的全部功能也随之而来Artifactory查询语言(AQL)。在如何搜索工件方面,AQL为您提供了前所未有的灵活性。它提供了一种简单的方法来制定复杂的查询,指定任意数量的搜索条件、过滤器、排序选项和输出字段。这使您可以深入到存储库的最远范围,并提取出否则永远无法找到的信息金矿。

人工查询语言(AQL)

AQL是一种灵活的查询语言,它为您提供了前所未有的灵活性,可以使用任意数量的搜索条件、过滤器、排序选项和输出字段来搜索工件。作为一个流输出数据的RESTful API, AQL具有无与伦比的响应时间和低内存消耗,非常快速和高效。AQL为您提供了无限的自由度,可以精确地制定正确的查询来查找您正在搜索的非常特定的工件。基于Artifactory独特架构下的数据库,AQL与众不同二进制存储库管理器可以提供。

6.用户插件

虽然Artifactory提供了一组广泛的特性来管理框,但它不可能满足不同组织可能有的所有需求。输入用户插件。

用户插件提供了一个很长的入口点列表,它有效地扩展了Artifactory REST API,提供了一种实现复杂行为的简单方法。这为您提供了极大的自由,可以支持工作流中的任何自定义需求,包括调度任务、管理安全和身份验证、部署、维护和清理等等。例如,您可以编写一个用户插件,在每个Vagrant盒子上传到存储库之前扫描病毒。为了保持简单,用户插件被编写为Groovy脚本,并使用简单的DSL将它们包装为扩展点中的闭包。这些插件可以动态地更改和重新部署,甚至可以在您最喜欢的IDE中进行调试。

二进制存储库管理器在盒的管理中扮演着如此重要的角色,它可以成为组织的关键组件。任何停机时间都可能对你的工作效率造成严重影响,你需要确保开发者可以随时访问你的Vagrant盒子。

Artifactory支持高可用性网络配置,在同一个局域网上有2个或更多Artifactory服务器集群。冗余网络架构意味着不存在单点故障,只要Artifactory节点中至少有一个处于运行状态,您的系统就可以继续运行。这最大限度地提高了您的正常运行时间,并可以将其提高到“五个九”的可用性水平。此外,您的系统可以在不影响性能的情况下适应更大的负载突发。通过水平服务器可伸缩性,您可以轻松地增加容量,以满足组织增长时的任何负载需求。最后,通过使用具有多台服务器的架构,Artifactory HA允许您在没有系统停机的情况下执行大多数维护任务。

高可用性系统

对于组织来说任务关键的系统可以部署在高可用性配置中,以增加稳定性和可靠性。这是通过复制系统中的节点并将它们部署为冗余集群来实现的,从而消除任何单个节点上的完全可靠性。在高可用性配置中,不存在单点故障。如果任何特定节点宕机,系统将通过剩余的冗余节点继续无缝地、透明地对用户运行,不会停机或整体系统性能下降。

Vagrant_scheme_2

7.许可证遵从性和开放源码治理

是否曾经因为某人突然意识到你必须遵守一堆许可要求而被耽搁?

Artifactory可以帮助防止这种情况。在将任何二进制文件部署到存储库时,Artifactory对工件和所有后续依赖项执行许可检查,并就所有许可要求提供即时反馈。这可以让你提前做好准备,以确保在开发周期的早期遵循,避免在你想要发布的“关键时刻”出现不必要的延迟。通过与BlackDuck Code Center集成,您可以利用全面的许可证遵从性和开源治理特性,同时通过Artifactory管理所有二进制文件上传。

8.维护和监控

随着自动化软件交付系统的增长,您生成的盒子的数量可以快速增长。如果没有适当的管理,您的系统很快就会被旧的和不相关的盒子堵塞。

Artifactory通过自动定时清理过程使您的系统有条理,没有杂乱。通过一些简单的设置,您可以安排任务来清理旧的构建和未使用的盒子。您可以对磁盘空间使用设置限制并监视磁盘空间使用情况,或者定义“监视”以便在最关键的计算机发生更改时接收警报。通过广泛的REST API, Artifactory几乎可以支持您希望在组织的脚本中实现的任何基于规则的清理协议。

9.为所有二进制文件提供通用的端到端解决方案

没有单一的工具或技术足以支持现代组织中的开发。有大量的打包格式、各种各样的构建工具、不同的持续集成系统和其他技术用于构建灵活且可维护的软件开发生态系统。管理所有不同打包格式的二进制文件并与生态系统的所有移动部分集成可能成为维护的噩梦。

Artifactory从头开始设计,以适应任何开发生态系统。Artifactory独特地构建在基于校验和的存储上,支持任何存储库布局,因此可以为任何打包格式提供本地级支持。本质上,无论您使用何种打包格式,Artifactory都可以存储和管理二进制文件,并且对相应的打包客户端是透明的。客户端使用Artifactory的方式与使用本机存储库的方式完全相同。例如,如果你正在使用Docker, Artifactory代理Docker Hub(或任何其他公共Docker注册中心),让你在本地Docker存储库中存储和管理自己的映像,并透明地与Docker客户端一起工作。如果您正在使用Vagrant, Artifactory代理Atlas(或任何其他公共Vagrant存储库),允许您在本地Vagrant存储库中存储自己的盒子,并透明地与Vagrant客户端一起工作。类似的Npm NuGet, Ruby, Debian, YUM, Bower, Python等。

但是开发只是软件交付管道的一端。在一个包成为一个产品之前,它需要经历构建和集成的过程。市场上有许多构建和集成工具,但只有一种产品可以与所有工具一起工作。通过一组插件,Artifactory提供了与当今流行的CI系统(如Jenkins、Bamboo和TeamCity)的紧密集成。这些系统在创建构建时使用Artifactory来提供工件和解决依赖关系,并且还将其作为部署构建输出的目标。为了支持您无法应用插件的基于云的CI系统,Artifactory为您使用的构建工具(如Maven和Gradle)提供了插件,这些工具最终提供了相同级别的构建自动化。这涉及到开发和部署,但是一旦软件准备好供使用,如何分发软件呢?这就是Bintray的用武之地。

Bintray是JFrog的云下载中心,提供快速下载、细粒度访问控制、详细的统计数据和日志以及广泛的REST API。从Artifactory推广发行版本只是一个单击或API调用的问题。像Artifactory一样,Bintray与包无关,可以与所有不同的包客户端无缝地工作,因此它可以完全集成到任何持续集成/持续交付生态系统中。

Artifactory是一个通用存储库。它是位于开发生态系统中心的单一工具,与所有不同的技术“对话”,提高了生产力,减少了维护工作,并促进了不同部分之间的自动化集成。Artifactory和Bintray是一个完全自动化的软件分发管道的中心组件。

总结

本文展示了二进制存储库管理器,如Artifactory可以通过管理和优化对Vagrant盒子的访问来提高组织开发和DevOps团队的生产力。通过具有安全性和访问控制的本地存储库,Artifactory可以取代Vagrant的Atlas,并提供组织可以管理安全的私有盒子的设施。由于Artifactory对其管理的二进制类型是不确定的,它可以与Linux包、RubyGems、NuGet Gallery和几乎任何二进制包格式一起工作,以支持您的组织使用的不同平台,并在上传构建和下载工件时对所有二进制文件提供集中控制。

要么快速释放,要么死亡