DevOps 正在改变全球软件开发的状态,DevOps 正以某种形式有效地提高提高全球软件公司的上市速度、可销售性、创新和产品质量。
2021 年是 DevOps 的重要一年。由于 DevOps 跨越开发、运营、IT、安全和产品团队等等,以及软件开发的不同阶段,因此有大量工具可供选择。
本文介绍目前市场上可用的一些顶级 DevOps 工具,同时牢记 CI/CD 生命周期的重要类别。本篇为配置管理、构建、源代码、部署工具,下篇主要是漏洞管理、质量、监控、协作工具。

配置管理

Puppet

Puppet
是一种开源软件配置管理和部署工具,通常用于确保所有服务器都配置为所需的状态。Puppet 是基于代理的,最常用于 Linux 和
Windows 同时控制多个应用程序服务器。Puppet 主要用于客户端/服务器配置,其中受管节点与服务器的配置保持同步。借助 Puppet
的代码管理工具 R10K,可以更轻松地对 CI/CD 代码实施自动化或手动更改、更新、审查和测试。还可以使用 R10K 和
Puppetfiles 来自动部署环境。这些基于代理的部署一般比较准确、及时,还能生成错误日志以供审查。
Puppet 还为版本控制提供了与 Git 的简单集成。
Puppet是声明式的,通常适合基线而非编制。
Puppet缺点:

  • 总体速度缓慢
  • 在不编写自定义事实的情况下,Puppet 无法检查 exec 资源之外的系统状态
  • Hiera是Puppet的键值配置数据查找系统,速度慢且排查故障困难

Ansible

Ansible
是开源配置管理和编排工具,以其简洁和性能而闻名。Ansible 在主机上运行并使用 SSH 连接到节点。Ansible 可以在任何安装了
Python 2(版本 2.7)或 Python 3(版本 3.5 及更高版本)的主机上运行,包括 Red
Hat、Debian、CentOS、macOS 和 BSD。
Ansible 让使用 YAML管理配置变得很容易。用 Ansible
做自动化跨平台任务也很有效。还可以使用 Ansible pull模式从特定文件中获取存储库和运行命令。将 Shell 脚本和配置文件转换为
Ansible Playbooks 或 Roles 也很容易,且有很多文档可用。  
Ansible 缺点:

  • 系统规模及扩展缓慢
  • 缺乏 Windows 系统的支持
  • 当数百个服务器需要数百个大规模同步时效率低下

Chef

Chef
是主要用于配置管理的开源 DevOps 工具。Chef 也基于主代理模型,因为 Chef
客户端在每台客户端机器上运行(使用“knife”工具并通过 SSH 进行通信)。Chef 与 Puppet
的不同之处在于它的额外层,称为工作站,其中包含所有配置。这些配置首先在本地机器上自动测试,然后推送到服务器上。

当存在主机依赖关系时,Chef 的表现非常出色。它能获取系统的状态(包、现有用户、目录等),并将它们与代理的实时实例进行比较,并确保对象保持同步。
在业界广为人知的是,Chef 使用 AWS OpsWorks 等服务维护更大网络的自动化功能。Chef Inspec 还有助于确保网络部署的安全性和完整性。Chef InSpec 是一个开源框架,允许对应用程序进行自动、手动测试和审计。
尽管 Chef 具有强大的 GUI,但必须了解 Ruby 才能利用 Chef 的基础架构即代码模型的真正力量,尤其是涉及复杂任务和自定义时。可以通过在 Chef 中编写脚本(被称为烹饪书和菜谱)来实现大量自定义,但在许多情况下这样做并不是最佳选择。
Chef 缺点:

  • 代理实例需要定查看主机来安装更新
  • 初学者难以理解
  • 缺乏详细的文件
  • 缺乏需求的可扩展性

构建

Jenkins

Jenkins 是用 Java 编写的开源自动化服务,它充当 CI(持续集成)工具,使开发人员可以更轻松地将新组件集成到软件中,以实现无缝集成。Jenkins 使用插件进行集成来实现这一目标。
Jenkins 听取新的拉取请求,将新的工作分支合并到主代码中,运行自动化测试套件,生成新的测试数据,报告失败,并将最新的代码更改部署到 QA 环境以进行手动测试。
Jenkins Pipeline 用于实现持续集成过程的自动化表达。可以在管道中定义构建文件,将它们加载到 SCM 并配置工作变量。
Jenkins 已经存在了很长时间,并且由于其成熟的生态系统、插件支持、文档和社区,实际上已经成为一种标准。Jenkins 在过去几年中有几次更新。它已成为许多公司的首选之一,因为它为管道和 Docker 集成提供了简单的 UX/语法。
Jenkins的缺点包括:

  • 要使用 Jenkins,需要先学 Groovy,它因其不一致性而臭名昭著。Jenkins 中的 Groovy 脚本不易编写和编辑,尤其是要大量地更改时。
  • 在许多情况下,还需要手动将构建配置到UI、硬代码配置文件和松散的访问控制中。
  • 如果没有 JenkinsFile,Jenkins 极难使用,JenkinsFile 是一个文本文件,包含 Jenkins Pipeline 的定义,且该文件由源代码控制。

TeamCity

TeamCity 是一款高级 CI 工具(提供受限的免费版本),以其易于操作的界面、流畅的配置和创新功能而闻名。TeamCity 在 Java 环境和 Apache Tomcat 服务器中运行,但也可以安装在 Windows 和 Linux 服务器上。

是否选择TeamCity
在很大程度上取决于自身需求。如果有充足预算,且主要任务包括设置固定数量的构建代理,以便用存储库快照和工件依赖项轻松建立并行构建链,那TeamCity
将非常合适。TeamCity 也有非常可靠的文档。TeamCity 的“Snapshot
Dependencies”功能允许你在整个管道中保持相同的源版本,而无需底层代码实现。
但是,TeamCity 会自动修复snowflake agents,为此,必须使用配置工具或容器技术。
TeamCity 基于模板的构建配置可以让生活更轻加松。

TeamCity 还原生支持 AWS、GCE 和 Azure 中的代理自动扩展。它还通过插件支持 VMware 和 Kubernetes,并与 GitHub 本地集成。

TeamCity 缺点:

  • 价格昂贵
  • 调试日志和错误日志难以解析和理解

Bamboo

Bamboo
是由 Atlassian 开发的持续集成和持续部署服务器。Bamboo 的主要优势之一是它能够在单个工作流中将自动化构建、测试和发布与其他
Atlassian 产品(例如 JIRA、BitBucket、Stash、Hipchat 和
Confluence)集成,从而创建一个稳固的软件开发和交付生态系统。
Bamboo 还具有可靠、易于使用的 GUI。
与 BitBucket、Confluence 和 Jira 的轻松集成是 Bamboo 的一大优势。它还可以启动类似 cron 的触发器,如果员工不在办公室,但有审核分析、自动化测试和自动化程序要运行,这些触发器会派上用场。
Bamboo 缺点:

  • Bamboo的代码分析能力不强
  • Bamboo 无法集中构建配置
  • 没有全局工具配置(必须在代理器上手动安装工具)
  • Bamboo 缺乏凭据插件和支持,这意味着每个 Bamboo 相关的项目都必须推出密码更改功能

源代码管理

GitHub

GitHub 是全球数百万人使用的最流行的源代码管理工具之一。GitHub 的主要优势包括:易操作的 UI、智能功能如意外删除的存储库恢复功能、 防止成品删除、集成多样化和安全性。GitHub 几乎没有中断或停机,这使得它非常可靠。
GitHub 拥有庞大的社区,非常适合开源项目。由于 Microsoft 拥有 GitHub,所以 Azure DevOps 和Microsoft的工具可以进行紧密集成。GitHub 让你能更好地控制 CI/CD 过程。
但是,GitHub 只为每个存储库最多3个协作者提供免费的私人存储库。

GitLab

GitLab
基于 Git,为软件开发提供版本控制、CI 服务、部署和管道功能。由于其强大的 CI 服务,大多数公司更喜欢使用 GitLab
进行源代码管理。如果你想在自己的服务器上集成 CI/CD,GitLab 是一个可行方法,因为你其实可以在服务器上托管 GitLab。GitLab
免费且开源,并提供无限数量的免费私人存储库。
GitLab 还允许你安装私有实例,还提供容器注册服务。

部署

Spinnaker

Spinnaker
是一个开源 CD 软件平台,可与 Kubernetes、Google Cloud Platform、AWS、Microsoft Azure 和
Oracle Cloud 配合使用。它主要是一个部署和交付平台,用于获取工件并将其部署到生产中。
Spinnaker
的仪表板和界面都非常易于使用。开发人员可以轻松地将他们的代码推送到发布分支,该工具会自动构建、测试、验证并将代码推送到生产环境。借助
Spinnaker,你可以使用 Seamless Kubernetes、 Github 和 Google
的云构建集成,轻松交付、部署对软件的更改。
Spinnaker 可以本地构建 EC2 AMI、配置 ASG 和设置负载均衡器。
Spinnaker 缺点:

  • 缺乏有效的可扩展性
  • 文件稀缺
  • 自动化任务困难

Octopus Deploy

Octopus
Deploy 是一个用于自动化部署的 CD 工具。它可以在代理机器或“触手”上自动部署应用程序和服务。Octopus Deploy 适用于
ASP.NET Web 应用程序、Java 应用程序、NodeJS 应用程序,并将自定义脚本运行到多种环境,包括 AWS 和
Azure。大多数情况下,它与 AzureDevOps 一起使用,并受到使用 Microsoft 生态系统的公司的青睐。
Octopus Deploy 可以集成流水线的 CI 基础设施。可以向 Octopus 发起 API 调用,以创建新版本,并通过CI管道推送二进制文件。
Octopus的缺点如下:

  • 价格昂贵
  • 无法在项目之间导出变量

Argo CD

Argo CD 是一个声明式的 GitOps 持续部署工具,主要用于 Kubernetes 集群中部署应用程序。

Argo CD 强制同步 Kubernetes 清单,这些清单在 Git 存储库中记录你的应用程序。Argo CD
可以自动应用已更新的清单以提交对集群的更改。ArgoCD 服务器可以跟踪主项目的部署分支。Argo CD
还可以自动检测何时将构建分支合并到部署分支中。Argo CD 通过首先部署新版本的清单来防止停机。
Argo CD 缺点:

  • Argo CD 不支持 CI,这意味着如果你想要一个完整的 CI/CD 管道,那就需要借助其他工具,如 Jenkins、Travis、Circle CI 或 Gitlab CI。

众多的可用工具可能令人望而生畏,但选择本身是一件好事。缺乏标准化和自动化可能会在入职或交接过程中产生极高的学习曲线。选择原则是不要投资于相似、重叠的工具而浪费时间和财务资源。

2021 年 25 大 DevOps 工具(上)的更多相关文章

  1. [备忘] DevOps 工具上的准备清单(不断补充中……)

    目录 概念 发展历程 工具清单 规划 概念 从字面上来看,"DevOps"一词是由英文 Development(开发)和 Operations (运维)组合而成,但它所代表的理念和 ...

  2. 如何选择正确的DevOps工具

    坦白的讲:世界上没有哪种工具能够像DevOps这么神奇(或敏捷,或精益).DevOps在开发和运营团队之间建立了完美的合作与沟通,因此与其说这是一种神奇的工具,不如说是一种文化的转变. 然而,团队之间 ...

  3. Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾

    Fbric.Ansible.Docker.Chaos Monkey:DevOps工具的年中回顾 [编者按]近日,Cyber Engineering Solutions Group 技术经理 Hasan ...

  4. Web Scale IT 与 6 种 DevOps 工具

    新年伊始,在总结过去一年 IT 行业变化和发展的同时,不少企业更关注未来一年甚至几年的行业趋势.Gartner 于 2014 年发表了文章 Gartner Says By 2017 Web-Scale ...

  5. 研发过程及工具支撑 DevOps 工具链集成

    https://mp.weixin.qq.com/s/NYm63nkCymIV3DbL4O01dg 腾讯重新定义敏捷 |Q推荐 小智 InfoQ 2020-09-03 敏捷开发奠基人 Robert C ...

  6. 再聊我们自研的那些Devops工具

    两年前我写了篇文章『我们自研的那些Devops工具』介绍了我们自研的一些DevOps工具系统,两年过去了这些工具究竟还有没有在发光发热,又有哪些新的变化呢,我将通过这篇文章来回顾一下这两年的发展与变化 ...

  7. [转载]Java程序员使用的20几个大数据工具

    最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具. 这是一个系列,主题为: 语言web框架应用服务器SQL数据访问工具SQL数据库大数据构建工具云提供商今天我们就要说说大数据 ...

  8. [转载] 一共81个,开源大数据处理工具汇总(下),包括日志收集系统/集群管理/RPC等

    原文: http://www.36dsj.com/archives/25042 接上一部分:一共81个,开源大数据处理工具汇总(上),第二部分主要收集整理的内容主要有日志收集系统.消息系统.分布式服务 ...

  9. Java程序员使用的20几个大数据工具

    最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具. 这是一个系列,主题为: 语言 web框架 应用服务器 SQL数据访问工具 SQL数据库 大数据 构建工具 云提供商 今天我 ...

  10. Java程序员在用的大数据工具,MongoDB稳居第一!

    据日前的一则大数据工具使用情况调查,我们知道了Java程序猿最喜欢用的大数据工具. 问题:他们最近一年最喜欢用什么工具或者是框架? 受访者可以选择列表中的选项或者列出自己的,本文主要关心的是大数据工具 ...

随机推荐

  1. 常用Windows控制台命令

    查看网络连接信息 1.查看所有网络连接 netstat -ano -a 显示所有连接和侦听端口. -n 以数字形式显示地址和端口号. -o 显示拥有的与每个连接关联的进程 ID. 详细的使用方式使用n ...

  2. MySQL Boolean类型的坑

    MySQL中,Boolean只是 tinyint(1) 的别名,也就是说,MySQL中并没有真正的bool类型. 而SQLAlchemy生成SQL的时候并没有检测到 这一点,这就导致一个问题,当使用 ...

  3. gorm入门学习

    文档 https://learnku.com/docs/gorm/v2/v2_release_note/9756 https://gorm.cn/zh_CN/docs/ 下载安装 go get -u ...

  4. 【Azure 云服务】云服务(经典) 迁移至云服务(外延支持) 的相关疑问

    问题描述 根据微软官方文档说明,云服务(经典)已弃用.所以关于它有以下的一些疑问: 一:迁移时候的停机时间问题? 二:云服务(经典) 与 云服务(外延支持) 的区别是什么? 三:注意事项有那些呢?如 ...

  5. [Python] 协程学习过程

    开始 ​ 之前一直在做那个rProxy的项目,后来发现,服务端不用协程或者异步编程这样的手段是不行的,最主要的问题就是对于每个http请求都对应一个线程,这个开销非常大.对于一个网页而言,四五十个ht ...

  6. docker 部署prometheus和grafana

    prometheus(普罗米修斯):天生为采集存储监控数据而生的时序数据库.prometheus通过各种Exporter采集到监控数据,然后存储进prometheus中,以供查询展示. grafana ...

  7. 正则表达式 <h2>kk</h2> 替换为 <h2 id="kk">kk</h2>

    `<h2>kk</h2><h2>k333k</h2>`.replace(/\<h2>(.*?)<\/h2>/g, `<h2 ...

  8. 使用pymysql库,将tushare股票信息保存入本地MySQL数据库

    使用pymysql库,将tushare股票信息保存入本地MySQL数据库 1.前言 由于tushare存在积分权限限制,高频读取tushare数据容易挤占服务器带宽,因此对于常用的tushare数据, ...

  9. 泰凌微TLSR8258芯片解决方案开发之串口打印级别设置

    一  TRSR8258简介 该芯片是泰凌微推出来的一款纯ble的芯片,接口丰富,功耗低,资源丰富,非常适合做可穿戴物联网设备,笔者拿这颗芯片做了不少方案,感觉非常好用,所以这里写一下使用心得. 二 串 ...

  10. Django使用Bootstrap的经典方法

    前面的话 Bootstrap是简单.灵活的用于搭建WEB页面的HTML.CSS.Javascript的工具集.Bootstrap基于HTML5和CSS3,具有漂亮的设计.友好的学习曲线.卓越的兼容性, ...