原文:http://www.sohu.com/a/136276885_262549python
在可维护性,可靠性,效率和安全性方面,DevOps 为私有云在改进操做流程方面发挥着重要的做用。私有云是一个由许多硬件和软件组件组成的复杂系统。nginx
对于任何支持的企业组织,操做流程的自动化和文档记录,规划变动和跟踪应用的更新都是强制性的要求。web
一样的方法也适用于云计算的工做负载量。此外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万容器:多快好省大规模弹性云集群之道》
《携程:咱们是如何利用容器实现快速弹性伸缩的?》
《支付平台架构师谈大规模高并发服务化系统设计经验》
《重塑中小企业运维价值》