Puppet Saltstatck Ansible 自动化运维工具对比

最近尝试安装了一下salt statck就对自动化工具感兴趣了点所以找了一些资料入门下面总结一下希望和看到这篇文章一起探索自动化运维的世界。                              --- 小 Q

------------------------------------------------------------------------------------------------------

自动化运维就是为减少重复又枯燥的工作而建立起来的流程更能减少失误及时报警并恢复等等

但也要记住工具始终是工具不能过分依赖

传统的运维

传统运维效率低大多工作人为完成
传统运维工作繁琐容易出错
传统运维每日重复做相同的事情
传统运维没有标准化流程
传统运维的脚本繁多不能方便管理
随着it行业发展及云计算的普及企业架构不断地扩张这种情况下急需摆脱人工操作实现自动化。

自动化运维

安装自动化
部署自动化
监控自动化
发布自动化
升级自动化
安全管控自动化
优化自动化
数据备份自动化

自动化前三阶段

纯手工   仅依靠人力手工部署和运维

脚本阶段通过编写大量脚本进行软件部署和运维

工具阶段借助三方工具高效、方便的部署和运维。

目前Linux下比较好用的开源工具如下图趋势具体介绍参考链接

http://www.open-open.com/news/view/f6a20c

=============================================================

下面我们只比较相对来说比较常用的自动化运维工具puppet   saltstatck    ansible

Puppet www.puppetlabs.com

基于rubby开发c/s架构支持多平台可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版免费和企业版收费企业版支持图形化配置。
Saltstack中国用户组 www.saltstack.cn

基于python开发c/s架构支持多平台比puppet轻量在远程执行命令时非常快捷配置和使用比puppet容易能实现puppet几乎所有的功能。
Ansible www.ansible.com

更加简洁的自动化运维工具不需要在客户端上安装agent基于python开发。可以实现批量操作系统配置、批量程序的部署、批量运行命令。

【语言的比较】

puppet和chef 开发语言是rubysaltstatck和ansible 开发语言是python。

两种语言各有优势不过依现在的形式来看我还是很倾向于python语言开发出的工具。

1、Ruby的优点

1)     Ruby是一种动态面向对象语言具有很多强大的面向对象的高级特性Ruby更加贴近英语的自然语言描述和表达能力很好语法扩展能力很强

2)     拥有功能强大和完善的标准类库拥有良好的交互式运行环境:IRB方便进行开发和调试拥有一个完善的Web开发框架Rails

3)     采用虚拟机实现跨平台支持垃圾回收

2、Python的优点

1)     Python开发人员的背景丰富多彩阵营规模很大 Python的各种lib比Ruby多

2)     和Ruby相反Python的哲学是“做一件事情有且只有一种方法”There should be one-- and preferably only one --obvious way to do it.。Ruby的信徒会觉得这样非常boring但是我觉得这一点减轻了人们在开发时的认知负担和选择成本对于提高开发效率是很有帮助的。同时这个特点使得不同的人用Python写出来的代码不至于相差很大这对于团队合作也是很有用的

3)     Python解释器特别是CPython目前比现有的Ruby解释器快很多

4)     大数据方面人工智能图像处理GUI等方面python的积累还是很厚的。很少见ruby的身影

5)     强大的数据结构。默认安装的Python开发环境已经附带了很多高级数据类型如列表、元组、字典、集合、队列等无需进一步编程就可以使用这些数据类型的操作。使用这些数据类型使得实现抽象的数学概念非常简单。

6)     插件齐全可以完成绝大部分的程序设计任务。

【性能的比较】

因为现在大家都比较倾向于python开发的工具所以对saltstatck和ansible工具进行比较

Ansible基于SSH协议传输数据Saltstack使用消息队列zeroMQ传输数据.

ZMQ是什么

类似于Socket的一系列接口但区别是普通的socket是端到端的1:1的关系,而ZMQ是NM 关系

socket 是什么

socket就是套接字是源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。

【配置的比较】

saltstatck 跟zabbix类似需要在每台机器上安装客户端配置稍麻烦

ansible不需要客户端只需要在配置服务端即可

但是saltstatck有一个salt-ssh 功能可以轻易解决上述客户端安装麻烦的问题

(参考:http://www.0550go.com/automation-deployment/saltstack/saltstack-salt-ssh.html  )

而且ansible岁不需要客户端但是却需要python版本在2.6+。

【个人的选择】

结论一在超大量服务器要求高效时选择saltstatck

结论二在服务器数量少时选择ansible配置简单

主要是根据企业服务的需求还有自身的喜好总之精通一门就好

时间: 2024-12-26 21:55:52

Puppet Saltstatck Ansible 自动化运维工具对比的相关文章

Ansible自动化运维工具-上

[Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要安装客户端,ansible基于SSH远程管理,不需要为配置工作添加额外的支持: PS:很多认为Ansible工具执行效率慢,其原因是SSH服务慢,我们可以选择优化SSH连接速度以及Ansible加速模块 [Ansible自动化管理工具特点] #轻量级,更新时,需要在操作机上进行一次更新即可 #采用S

Ansible自动化运维工具部署及使用

一.Ansible介绍 1.简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inven

Linux中ansible自动化运维工具

1.ansible简介ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet,cfengine,chef,func,fabric)的优点,实现了批量系统配置,批量 程序部署,批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1)连接插件connection plugins:负责和被监控端实现通信:(2)host inventory:指定操作的主

ansible自动化运维工具使用详解

一.ansible简介 1.ansible ansible是新出现的自动化运维工具,基于Python研发.糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能.仅需在管理工作站上安装ansible程序配置被管控主机的IP信息,被管控的主机无客户端.ansible应用程序存在于epel(第三方社区)源,依赖于很多python组件 参考站点:http://www.ansible.com.cn 2.ansible特性 模块化设计,调用特定的模块来完成特定任务,本身是核

ansible自动化运维工具

简介 ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. 1.ansible的安装直接用yum安装,配置好epel源即可. 2.ansible安装目录在/etc/ansible下. 服务器环境 192.168.32.200:作为ansible管理节点 192.168.32.202:被管理节点 ansible.cfg配置文件 hostfile=/etc/ansible/hosts #指定默认hosts配置

Ansible自动化运维工具阐述及配置实现

什么是ansible ansible是一个轻量级的运维管理工具 , 基于Python研发 .可实现对系统的批量管理配置.程序的批量部署.批量的运行命令等功能. 仅需在任意管理主机安装 ansible 程序即可实现批量管理被管控主机且被管控的主机无需客户端. 我们在安装ansible时一定要依托epel源来安装(推荐阿里云),并且在线用yum安装.它基于python开发所以得解决ansible对python编程的各种依赖. ansible 特性 1.模块化:调用特定的模块,完成特定的任务: 2.基

Ansible 自动化运维工具之when条件语句

1.When语句 有时候用户有可能需要某一个主机越过某一个特定的步骤.这个过程就可以简单的像在某一个特定版本的系统上少装了一个包一样或者像在一个满了的文件系统上执行清理操作一样. 这些操作在Ansible上,若使用`when`语句都异常简单.When语句也含Jinja2表达式, 第一个例子: tasks:   - name: "shutdown Debian flavored systems"     command: /sbin/shutdown -t now     when: a

Ansible 自动化运维工具之inventory和常用模块介绍

一.inventory介绍 前面我们介绍过ansible的hosts文件是存放被管理主机的,被管理主机比较少的情况下,直接在hosts中定义即可,但是以后很定会管理多台主机,而ansible可管理的主机集合就叫做inventory.在ansible中,描述你主机的默认方法是将它们列在一个文本文件中,这个文件叫inventory文件. 一个简单的inventory文件可能只包含一组主机名的列表,如下: ftp.testansible.com samba.testansible.com mail.t

Ansible 自动化运维工具简单入门(二)

三.Ansible的使用 1.Ansible命令执行过程及状态 过程: 加载自己的配置文件,默认/etc/ansible/ansible.cfg 加载自己对应的模块文件,如command ping 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器 给文件+x权限 执行并返回结果 删除临时py文件,sleep 10 退出 状态: 绿色:执行成功并且不需要做改变的动作 黄色:执行成功并且对目标主机做变更 红色:执行失败 2.Ansible系列命令 ansible an