一、初识Ansible

一、Ansible介绍

Ansible是一个简单的自动化引擎,可完成配置管理,应用部署,服务编排以及其他各种IT需求。Ansible也是一款使用Python语言开发实现的开源软件,其依赖Jinja2,Paramiko和PyYAML这几个库。Ansible的作者是Michael Dehaan,Michael Dehaan同时也是知名软件Cobber的作者和Func的共同作者。Michael DeHaan于2012年创建了Ansible Works公司,之后改名为Ansible的优点。Ansible公司于2015年10月被红帽公司(Red Hat)收购。

二、Ansible的特点

Ansible作为配置管理工具,通常与Puppet,Chef和Salt进行比较。这其中,Puppet发布于2005年,Chef发布于2008年,Saltstack发布于2012年,Ansible发布于2013年。从发布时间来说,Ansible完全没有任何优势,那么,是什么特性让Ansible进入了工程师的视野并逐渐获取青睐的呢?

Ansbile的优点:

  • 安装部署简单: Ansible只需要在主控端部署Ansible环境,被控端无须任何操作。换句话说,在安装Ansible时,远程服务器无须安装任何依赖。因此,相对于其他配置管理器,Ansible安装部署非常简单。省去了客户端的安装,在数千台规模的大型数据中心意味少了一些路由和安全策略的配置,省去了很多不必要的麻烦;
  • 基于SSH进行配置管理,充分利用现成的机制。Ansible不依赖于客户端,直接使用SSH进行配置管理,在Ansible早期版本中,默认使用paramiko进行配置管理,从Ansible1.5版本开始,Ansible默认使用OpenSSH实现各服务器间通信;
  • Ansible不需要守护进程。因为Ansible依赖OpenSSH进行通信,不需要安装客户端,因此,服务端也不需要像其他配置管理一样使用一个守护进程。Ansible的安装和维护都变得更加简单,系统更加安全可靠;
  • 日志集中存储。所有操作日志都存储在Ansible发起服务器,可以采用自定义的格式,这样可以很方便地知晓那些服务器操作有问题,那些已经成功,也便于日后追溯;
  • Ansible简单易用。Ansblie和其他配置管理工具一样,运行一个部署命令就可以完成应用的部署,使用非常简单。此外,Ansible使用YAML语法管理配置,YAML本身是一种可读性非常强的标记语言,工程师几乎像阅读英文一样阅读YAML的配置文件。因此Ansible使用YAML管理配置,所以,使用Ansbile不需要使用者具有任何编程背景。运维自动化工具本身是用来简化运维工作的,如果其本身比较复杂(如Puppet),甚至需要一定的程序开发能力,那么就会增加使用者的使用难度和犯错的概率;
  • Ansible功能强大,Ansible通过模块来实现各种功能,目前,Ansible已经有了950多个模块,工程师也可以使用任何语言自定义Ansible模块;
  • Ansblie设计优秀,便于分享。Ansible使用role组织Playbook并提供了分享role的平台(galaxy.ansible.com),便于大家分享和复用。充分使用role,可以编写可读性更强的配置文件。使用开源的role,能顾有效节省编写Playbook的时间;
  • Ansible对云计算和大数据平台都有很好的支持。从Ansible的模块列表可以看到,Ansible包含了大量与云服务,AWS,OpenStack,Docker等相关的模块。并且,Ansible便于扩展,当出现新的事物时可以根据需求编写自定义的模块。

Ansible作为自动化系统运维的一大利器,在构建整个体系过程中有着举足轻重的地位。其简单易用,易于安装,功能强大,便于分享,内含大量模版等都是它的魅力所在,再加上易封装,接口调用方便,Ansible正在被越来越多的大公司采用。

三、Ansible与SaltStack之间比较

SaltStack是一个集中化的管理平台,具备服务器部署,配置管理,远程执行等功能,被很多工程师看作简单化版的puppet。Stltstack与Ansible都是使用Python语言实现的,可以部署到不同的系统环境中,且都具有良好的二次开发特性。在执行命令时,Ansible和Saltstack都支持Ad-hoc操作模式,也可以将命令写入YAML格式文件中再批量执行。此外,Ansible和Saltstack的返回结果都是JSON格式,便于后续处理。Saltstack与Ansible都具有强大的功能,使用灵活等特性,两者都提供丰富的模版及API,对云计算和大数据平台都有很好的支持。Saltstack与Ansible具有如此多的相似性,因此,在公司和个人进行技术选型时,Saltstack最常拿来与Ansible进行比较。

Ansible和Saltstack之间的区别:

  • Ansible安装部署简单。默认情况下,SaltStack需要安装客户端接收服务端发送过来的命令。Ansible无须在被控服务器部署任何客户端代理,直接通过SSH通道进行远程命令执行或下发配置。因此,Ansible安装和部署更加简单;
  • SaltStack响应速度更快。默认情况下,Ansible使用标准SSH连接,而SaltStack使用ZeroMQ进行通信和传输。因此,仅相依速度来讲,SaltStack比Ansible快很多,甚至快十几倍;但是,在一般的运维场景下,Ansible的响应速度完全可以满足需求;
  • Ansible更安全。Ansible使用标准SSH连接传输数据,不需要在远程主机上启动守护进程。此外SSH数据传输本身就是加密传输,远程主机不易被攻击;
  • 对windows的支持。SaltStack对windows的支持比较友好,Ansible从1.7版本才加入windows支持。由于Windows默认没有SSH,而Ansible又依赖SSH进行通信,所以在Windows下Ansible需要依赖Power Shell来实现远程管理。Ansible要求必须使用Linux系统来运行控制端;
  • Ansible自身运维比较简单。SaltStack需要在Master和Minion主机启动一个守护进程,自身需要检测守护进程的运行状态,增加了运维成本。Ansible和服务器之间用SSH进行通信。服务器撒谎你难过只需要运行SSH进程就可以进行运维操作。因此,从工具本身的运维角度来说,Ansible要比SaltStack简单很多。
posted @ 2018-06-10 19:29  云原生运维社区  阅读(603)  评论(0编辑  收藏  举报