首页 > 代码库 > 15个私有云上的 DevOps 开源工具
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万容器:多快好省大规模弹性云集群之道》
《携程:我们是如何利用容器实现快速弹性伸缩的?》
《支付平台架构师谈大规模高并发服务化系统设计经验》
《重塑中小企业运维价值》
15个私有云上的 DevOps 开源工具