15个私有云上的 DevOps 开源工具

原文:http://www.sohu.com/a/136276885_262549

在可维护性,可靠性,效率和安全性方面,DevOps 为私有云在改进操作流程方面发挥着重要的作用。私有云是一个由许多硬件和软件组件组成的复杂系统。

对于任何支持的企业组织,操作流程的自动化和文档记录,规划变更和跟踪应用的更新都是强制性的要求。

同样的方法也适用于云计算的工作负载量。此外DevOps的实践也成为开发者和 QA 团队事实上的标准,特别是当使用私有云作为开发或目标平台时。当然,并不是所有的云操作方面都可以用 DevOps 来实践。

例如,许多硬件相关的操作不匹配--你不能用一个软件工具,去物理的连接服务器上的硬件开关(本人注:服务器的 IPMI 是可以做到远程控制呀。)

但即使在这种情况下,你仍可使用 DevOps 工具和实践来验证连通性和记录网络配置过程。也为不断增长的软件定义网络(SDN)的需求提供了一个机会,让 DevOps 在新的领域得以发展。

我们将回顾私有云几种类别上的15个DevOps 工具

在这篇文章中,我们将在几个类别中讨论15个针对私有云的 DevOps 工具。这几些工具类别的分选主要是人为合成的,在由工具提供的功能之间没有严格的边界,并且在某些情况下,这里所提到的工具可以做更多范畴假设。

最后,这里的一些工具没有根据具体的规则去分类,所以如果我们忘记了你认为应该包括的工具,只需给我们发个消息,我们将会讨论这个工具,并在下一次综述时将其纳入其中。

DevOps Tools

1. 配置管理工具(Configuration management tools)

配置管理工具自动完成日常操作,系统管理任务,当建立复杂的系统时,最大限度地减少人为错误。配置管理工具允许你定义的配置作为代码。(“Infrastructure as a code” 的方式)。

它可以让你追踪配置基线之间的变化(又称为配置版本控制),有效的应用它们并在必要时进行回滚更改操作。此外操作流程,如部署或发布管理可以记录并验证。

使用案例:私有云初始化部署和配置,将更改应用到私有云,应用具体的部署和配置。

1.1 Chef

Chef的配置文件使用领域专用语言(DSL)的“配方”(以.rb 为文件扩展名)。多个配方也可以整合到一个菜谱(cookbook)中。该配方定义了资源及其状态,例如:应该安装的软件包,该文件应存在,服务应该运行,等等。

Chef 验证所有定义的资源是否应具有指定的状态,如果必要,任何资源的实际状态如果与指定的状态不同,那么则应用更改。这允许你写幂等的配方,意味着你可以多次应用相同的配方,如果所有定义的资源都具有指定的状态,那么 Chef 将不会更改任何内容。

Chef 可以在 服务器/客户端 模式中使用,也可在独立的模式下运行。在任何情况下,Chef 应安装要配置的节点或VM上。

Chef 客户端是用 Ruby 语言编写的,Chef 服务器是用 Ruby 和 Erlang 语言编写的。许可:2.7版本以后的使用 Apache License,之前版本使用 GNU General Public License。

Chef 菜谱的示例:

include_recipe "apt" package ‘nginx‘ do action :install end service ‘nginx‘ do action [ :enable, :start ] end

1.2 Puppet

Puppet的配置文件使用特殊的领域专用语言,它们被称为 Puppet 清单(以.pp 为文件扩展名)。Puppet 可以使用独立的模式或者 服务器/客户端 模式。Puppet 客户端(agent)应该安装要配置的每个节点或VM上。

Puppet 客户端 通过一个名为 Facter 的工具收集 Puppet 服务器上的配置更改要求,并生成特定与服务器的目录,其应用的配置更改都会记录下来。

Puppet 可以用来配置 类 unix 系统或 Windows 节点/虚拟机。

Puppet 是用Ruby 语言编写。许可:Apache License.

Puppet 清单 的示例:

service { ‘nginx‘: ensure => running, enable => true, }

1.3 Ansible

Absible使用 模块(Modules)来定义配置任务。模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等。Ansible 剧本(YAML语言编写)角色映射到 节点/虚拟机上,以对这些节点/虚拟机 进行编排有序的执行。

Ansible 支持 ad-hoc 任务:管理任务(不必幂等)以在多个节点/虚拟机上执行。Ansible具有无代理架构:你不需要在配置的节点/虚拟机上安装Ansible(然而,这些节点必须安装 python 环境),Ansible 通过SSH或者通过 PowerShell(Windows 机器)从单个控制机器上配置管理节点/虚拟机,并且能够支持并行配置多个节点。

Ansible 可以用来配置类 unix 系统或 Windows 节点/虚拟机。

Ansible 使用 Python 语言编写。许可:GNU General Public License.

Ansible playbook 示例:

- name: Install nginx yum: name=nginx state=present- name: restart nginx service: name=nginx state=restarted enabled=yes

1.4 Salt

Salt(又叫SaltStack)同时支持服务器/客户端 和无代理模式。在后一种情况下,Salt 使用SSH连接到受管理的节点/虚拟机。Salt 使用以Python编写的执行模块,其中包含函数以定义配置任务。另外 Salt 支持 ad-hoc 命令。Salt 状态文件(以.sls 为文件扩展名)以 YAML 格式定义幂等任务。

Salt 使用 Python 语言编写。许可:Apache License.

Salt 状态描述文件示例:

nginx: pkg.installed

2. 裸机配置工具(Bare-metal provisioning tools)

裸机配置工具从中心服务器基于网络的操作系统自动安装。

使用案例:在私有云的初始部署期间提供新的裸机,增加新的裸机服务器,裸机配置作为私有云的服务。

2.1 Cobbler

Cobbler 使用 DHCP 服务器来处理引导服务器并将其引导到TFTP服务器,在那里它可以下载作为PXE引导文件和带有操作系统的可引导映像。

然后 Cobbler 使用 Linux 的 Kickstart(用于基于Red Hat的操作系统)或Pressed(用于基于Debian的操作系统)安装方法进行无人值守的操作系统安装和配置。

由配置文件来自定义要配置的系统,Cobbler 支持多个配置文件。一旦节点被配置,Cobbler 应确保该节点被引导到预配置的操作系统而不是PXE。Cobbler 包含 命令行客户端和 Web 客户端。

Cobbler 使用 Python 语言编写。许可:GNU General Public License。

2.2 Ironic

Ironic是一个OpenStack项目,它使用PXE配置裸机服务器和 IPMI以打开/关闭机器。Ironic 包含 Ansible Playbooks(bifrost项目),以独立模式安装和运行 Ironic,无需其它 OpenStack 组件。Ironic 还包含命令行客户端和 Web 客户端。

Ironic 使用 Python 语言编写。License:GNU Affero General Public License。

3. 编排工具(Orchestration tools)

编排作为配置工具的元级。

使用方案:初始化部署和配置私有云,自动扩展。

3.1 MCollective

MCollective是构建服务器编排和并行工作执行系统的框架,而不是一个工具。MCollective 支持分散库存和自动发现。

MCollective 服务端 应安装在 被管理节点/虚拟机,而 MCollective 客户端应安装在控制机上。MCollective 使用代理插件来扩展其功能。

MCollective 服务器和客户端不直接通信,而是在发布/订阅模式中使用中间件系统(通常是RabbitMQ)。这允许 MCollective 客户端向 MCollective 服务器发送广播请求,也支持直接请求/回复。

MCollective 使用Ruby语言编写. 许可:Apache License。

3.2 Juju

Juju 允许你将复杂的应用程序部署到多个云平台和裸机服务器上。Juju 使用 charms 来定义代理的行为,charm hooks 是要执行的实际任务(如:安装软件,启动或停止服务等)。

Charms 还定义了与其它 charms 的关系。Charm hooks 可以用任何语言来实现。还有配置管理工具,如Ansible,Chef,Puppet 可以在 hook 里面做服务器配置管理。

Charm bundle 允许你将一组 charms,它们的属性和关系导出到 YAML 文件中。然后,这个 bundle 可以导入到另一个 Juju 环境中,以准确的部署已部署的应用程序。Juju 包含 命令行客户端和web客户端。

Juju 使用 Go 语言编写。许可:GNU Affero General Public License, GNU Lesser General Public License

3.3 Apache Brooklyn

Apache Brooklyn允许你使用基于策略的自动化来建模,监控和管理应用程序。对于建模,Apache Brooklyn 使用蓝图(blueprint)的概念,它根据组件、配置、关系和部署场景来定义应用程序。蓝图使用 YAML 文件编写。

Apache Brooklyn 支持许多应用程序,开箱即用。并具有 Web UI 来部署,监视和管理应用程序。此外,Apache Brooklyn 支持许多位置部署,包括云平台和现有节点。

相同的蓝图可以用于将应用程序部署到不同的位置。Policies 根据应用程序传感器的读数定义对应用程序的无人值守更改。

Apache Brooklyn 使用 Java, Java, Groovy 语言编写。许可: Apache License.

3.4 Cloudify

Cloudify允许你在 YAML 文件中定义应用程序配置、服务和依赖关系。这样的文件称为蓝图。Cloudify 采用蓝图作为输入,可以部署和管理应用程序。

Cloudify 支持多种云计算平台和虚拟化环境。蓝图还定义了应用程序的生命周期。对于应用程序部署阶段,Cloudify 支持配置管理工具,如Chef和Puppet。

Cloudify 使用 Python 语言编写。许可:Apache License。

3.5 Docker Machine

Docker Machine 是一个工具,它允许你在提供的节点上安装 Docker(见下文),之后可以远程的管理这样的节点。

Docker Machine 使用Go语言编写。许可:Apache License。

4. 持续集成工具 (Continuous integration tools)

使用案例:从开发到生产,在内部云开发、安装和应用程序运行的统一平台 。

4.1 Jenkins

Jenkins是一个具有许多插件的自动化服务器。用于构建,测试和自动化部署应用程序。通常Jenkins用作软件开发的 CI/CD 工具。Jenkins 的作业(构建)可以由各种触发器启动。例如提交代码到版本控制系统,按计划事件,通过访问特定 URL 构建或者在完成其它构建之后进行触发。

Jenkins 使用 Java 语言编写. 许可:MIT License.

4.2 Docker

Docker允许你将具有所有依赖关系的应用程序软件打包到容器中,这可以很轻松的部署在基于 Linux 的平台上。在非 Linux 平台上 Docker 使用一个虚拟机来运行容器。

Docker 使用 Go 语言编写。 许可:Apache License 2.0。

5. 监控和日志记录(Monitoring and logging)

使用案例:从私有云服务和应用程序整合日志,监控分布式服务和应用程序。

5.1 Zabbix

Zabbix 是一个为应用服务,网络服务和硬件监控提供的解决方案。Zabbix 将收集的数据存储在关系数据库中,如 MySQL,PostgreSQL 等。Zabbix 允许你监控简单的服务,如 HTTP 服务。

Zabbix agent 端可以安装在 Windows 和 类 Unix 服务器上,用来检视系统参数,如 CPU 负载,内存和磁盘利用率等。

另外,agent 可用于监视标准服务和自定义应用程序。Zabbix 也支持通过 SNMP、SSH 等方式,无需在要监视的服务器上安装代理。

Zabbix 使用 C, PHP,Java 语言编写。许可: GNU General Public License version 2。

5.2 Elasticsearch, Logstash, Kibana (ELK)

ELK是 Elasticsearch,Logstash,Kibana 软件的组合,它是用于记录,日志分析,日志搜索和可视化的完整工具。Elasticsearch 是基于 Apache Lucene 的搜索工具。Logstash 是用于收集,解析和存储日志的工具,可以通过 Elasticsearch 对其进行索引。

Logstash 支持许多数据源,解析器和过滤器。Logstash 通常与 Lumberjack(一种工具)结合使用。该工具提供其 syslog 实现,并可将本地日志事件转发到 Logstash 中。

当通过网络发送日志时,Lumberjack 使用 SSL 对日志进行加密。Logstash 和 Elastcsearch 都支持 HA 配置,没有单点故障,以确保所有日志都存储在远程。Kibana 是 Elasticsearch 的可视化插件。

Elasticsearch,Logstash 使用 Java 编写。Kibana 使用 Java 编写。Lumberjack 使用C语言编写。License:Apache License 2.0。

DevOps 是一个不断增长的文化,许多组织企业正在采取。将传统IT和开发人员紧密结合在一起,为企业提供敏捷,快速响应的环境。由于许多工具来支持这些努力,以 Devops 为 IT 中心的转变,正变得更不复杂和更有益。

注:英文原文链接:http://www.stratoscale.com/blog/devops/15-open-source-devops-tools-for-the-private-cloud/

近期好文:

《腾讯:大型实时对战手游的毫秒级网络优化》

《中国人寿自动化运维自主研发之路》

《一篇文章全面了解监控知识体系》

《京东15万容器:多快好省大规模弹性云集群之道》

《携程:我们是如何利用容器实现快速弹性伸缩的?》

《支付平台架构师谈大规模高并发服务化系统设计经验》

《重塑中小企业运维价值》

时间: 2024-10-09 23:58:49

15个私有云上的 DevOps 开源工具的相关文章

DevOps开源工具的三种分类整理

原文地址:http://www.360doc.com/content/16/0322/07/31263000_544210096.shtml 随着开发运维一体化的DevOps运动在国内外蓬勃发展,DevOps相关工具也呈现热闹趋势,在这个言必谈如何实施落地引入工具.建设平台的大环境下,我们今天也来盘点一下DevOps相关工具. 先来看一下业界对DevOps工具的各种分类介绍. 一.DevOps应用交付工具链   ElasticBox是国外一个云应用管理工具,主要用于实现云应用生命周期的可视化管理

N个免费DevOps开源工具,没用过,至少应该了解!

文/华为eSDK 在介绍Devops工具之前,先跟随码花来了解下:Devops是个啥? Devops=[Development]+[Operations]. 简言之,Devops主要用于开发.测试.运维之间的沟通.协作与整合,减少开发和运营之间的摩擦,从而快速部署软件或应用程序,并且可以快速检测. 作为小白,你可能就要问了:那,Devops到底是个什么样的存在形式,是个软件还是啥? 错!!!Devops既不是软件.也不是网站.更不是代码,而是一组方法.过程与系统的统称. Devops包含了很多优

实现DevOps开源工具整合之Gitlab-ce安装

  文档OARP 序号 分类 姓名 范围要求 1 Owner 林志国   2 作者 林志国   3 审核人     4 审核人     5 审核人     6 批准人       文档修订记录 序号 版本号 修订日期 修订概述 修订人 审核人 批准人 备注 1 V1.0 2018.07.09 创建 林志国                                                                                         目录 文档OAR

C#正则表达式开源工具,为.net开源绵尽薄力

先交代一下背景,最近工作中经常用到正则表达式,而正则表达式这个东西我个人觉得很鸡肋,不用吧,有些功能实现起来会很麻烦.用吧,又不是说工作中经常用到,只是有时候有些需要求用到而已.但是正则表达式只要一段时间不用,就会被遗忘,甚至是忘的一干二净.为了一定程度上解决这个鸡肋的问题,就有了这篇博客和我打算写的这个开源的正则表达式验证工具的想法.关于正则网上的资料其实已经很多了,之所以还写这篇博客只是为了记录一些现在或者以后工作中可能会用到的正则,然后分享出来,同时也是希望为.net开源做一些事情. v0

科技公司钟爱的50款开源工具--转载

本文介绍了多款知名的开源应用软件,科技公司可以用它们来管理自己的 IT 基础设施.开发产品. 过去十年间,许多科技公司已开始畅怀拥抱开源.许多公司使用开源工具来运行自己的 IT 基础设施和网站,一些提供与开源工具相关的产品和服务,或基于开源工具而建的产品和服务,还有一些在为开源代码贡献代码或支持开源项目. Black Duck 在 2015 年的一项调查发现,78% 的企业组织使用开源软件,这个比例几乎是 2010 年时候的两倍.此外,88% 的企业表示,它们预计在今后几年,会加大为开源项目贡献

15款很棒的 JavaScript 开发工具

在开发中,借助得力的工具可以事半功倍.今天,我爱互联网向大家分享最新收集的15款非常有用的 javascript 开发工具. TestSwarm: Continious & Distributed JS Testing TestSwarm是Mozilla实验室推出的一个开源项目,它旨在为开发者提供在多个浏览器版本上快速轻松测试自己javascript代码的方法. Minimee在网络上,速度是很重要的,Minimee能帮助你将css和javascript文件进行自动压缩和打包. Doctor J

7个变革DevOps的工具

7个变革DevOps的工具 1. 简介 随着公司业务的不断迅速增长,使得管理复杂的IT基础设施需求变得更为艰难.解决应对这一复杂变幻的挑战的最佳方法是让开发团队和运维团队紧密协作,实现灵活应对.拥有一个DevOps专家团队可以实现在最少时间服务中断的情况下实现IT基础设施的动态伸缩. DevOps团队执行各种任务, 如: 新虚拟机的配置 配置网络设备和服务器 应用程序部署 收集和聚合的日志 性能监视服务.网络和应用程序 报警和自动修复的问题 服务器和服务可用性监控 如果不使用正确的工具集来执行这

MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4085684.html 联系方式:[email protected] [正文] 这一周状态不太好,连续打了几天的点滴,所以博客中断了一个星期,现在继续. 我们在之前的几篇文章中学习了JDBC对数据库的增删改查.其实在实际开发中,一般都是使用第三方工具类,但是只有将之前的基础学习好了,在使用开源工具的

Hadoop和大数据:60款顶级大数据开源工具

一.Hadoop相关工具 1. Hadoop Apache的Hadoop项目已几乎与大数据划上了等号.它不断壮大起来,已成为一个完整的生态系统,众多开源工具面向高度扩展的分布式计算. 支持的操作系统:Windows.Linux和OS X. 相关链接: http://hadoop.apache.org 2. Ambari 作为Hadoop生态系统的一部分,这个Apache项目提供了基于Web的直观界面,可用于配置.管理和监控Hadoop集群.有些开发人员想把Ambari的功能整合到自己的应用程序当