Ansible底层基于Python,以简单著称,配置文件格式也以INI和YAML为主,与其他管理工具相比,学习成本较低,学习曲线也很平滑,无论是基础运维人员还是资深运维工程师都可以较快上手,稍加练习便可以熟练掌握。如果具备Dev基础,熟悉Python、PHP等主流语言,基于Ansible开放API接口做二次开发,可以灵活有效地发挥其价值。Ansible自身也包括非常丰富的内置模块,从Windows系统到开源Linux系统,从文件同步到命令执行,从软件的安全升级到配置的维护变更,从商业硬件A10、F5到公(私)有云AWS、Digital、VMware、Docker等,几乎囊括了运维日常所有的技术应用。系统下所有的操作可从运维操作角度划分为两类。
·文件传输:文件的本地传输和异地传输,所有文件的空间形态、时间形态变化均构成文件传输类操作。
·命令执行:终端所有操作对系统来讲都是指令的组成,最终转换为基础硬件可接受的电信号完成任务集。对运维操作的用户行为来讲,除文件传输以外的其他操作均可称为命令执行。
从自动化工作类型角度归类如下。
(1)应用部署
现今的应用功能越来越强大,同步应用部署过程的依赖和规则也日趋复杂,但对应用运维的要求没有随之降低,有效快速正确平滑的应用部署需求日趋强烈。Ansible内置网络、应用、系统、第三方云平台扩展等完善的功能模块,协助运维快速完成应用的安装、卸载、升级、启停、配置等部署类工作,即使对跨平台或知名的商业硬件也同样支持。
(2)配置管理
配置管理(Configuration Management,CM)是通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。配置管理的目标是记录软件产品的演化过程,确保软件开发者在软件生命周期中各个阶段都能得到精确的产品配置。在日益复杂的IT环境和用户需求下,Ansible内置File、Template,结合Jinja、Lineinfile等内置模块,同时无缝结合GitHub、GitLab、Git、SVN、Jenkins等主流版本控制和CI持续集成工具,助力配置管理自动化。
(3)任务流编排
有效保证Tasks任务流按既定规则和顺序完成事先制订的目标和计划,同时Roles编排方式又能在一定程度上从书写习惯和代码层编排上保证整体项目的可架构性和规范性,协助控制项目维护成本不致过高。
如上场景适用于网络管理员、系统运维、应用运维、桌面运维、DevOps、基础架构运维等多领域运维行业,以及无运维岗但服务规模又需有一定精力投入维护的小型公司,开发人员经过简单的了解即可初步上手。同样也适用于中大型公司,可以投入人力、精力、财力对Ansible进行二次开发,使其更加适用。