随着业务系统的蓬勃发展,苦逼的运维需要管理的机器越来越多,从all in one 到 几十 、成百上千、过万都有可能,往往岗位配置就那么几个,面对无此多的设备管理、配置工作压力爆炸,为了减少重复频繁的的工作内容,运维一般会写很多脚本+定时任务,完成一定程度上的自动化,不过写脚本实现多项功能,对于脚本功底和所花的时间也不秀气,为了能够在基础平台上实现一定的自动化,不得不求助于外界的一些开源技术来弥补这一不足。
当下可选择的开源使用的自动化工具非常多,代表的有,saltstack、Puppet、Fabric、Chef、ansible等,在这些工具中,我学习使用了saltstack 、Puppet、ansible这三款,通过我个人的感受来说,从部署上来说ansible>saltstack>Puppet ,通过脚本语法来说ansible=saltstack>Puppet ,热度上来说ansible>saltstack>Puppet,功能上、效率上等方面没有过多的研究。

一、为什么选择ansible

(1)基于python开发,运维开发门槛低
(2)ansible模块丰富,基本上满足日常需求,更新也快
(3)ansible去中心化,简单的复制就可以配置管理中心的迁移
(4)ansible 无客户端,支持linux、windows
(5)ansible 可以与云对接,模块也比较丰富

二、ansible 是如何工作的

ansible没有客户端,利用linux的ssh 通信,windows基于powershell,管理端必须是linux,使用管理节点下发各种指令。

ansible组件介绍
ansible playbook:任务剧本,编排定义好的ansible任务集的配置文件,由ansible依次执行,通常是json格式的yaml文件。

inventory:ansible 管理主机的清单

modules:ansible执行命令的功能模块,多为内置核心模块,可以以自定义;

plugins:模块功能的补充,连接类插件,循环类插件,变量插件,过滤插件等,该功能不常用。

API : 提供给第三方程序调用的应用程序编程接口。

三、应用场景

(1)应用部署
ansible内置网络、应用、系统、第三方云平台扩展等完善的功能模块,协助运维完成快速的应用安装、卸载、升级、启动、配置等工作,也支持跨平台的硬件。
(2)配置管理
ansible内置的file,template,结合jinja、等内置模块,无缝对接github gitlab git svn jenkins等主流版本控制和CI持续集成工具,让配置管理自动化。
(3)任务编排
按照指定的要求,按流程、规则、循序的执行计划,达达提高效率