Ansible是什么
Posted 射手座IT俱乐部
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible是什么相关的知识,希望对你有一定的参考价值。
说起ansible,首先我们要从运维自动化说起,现在的运维自动化是且不限于将我们日常重复性的工作通过规则设定使其遵从预先既定规则,在指定的范围时间内自动完成,且整个过程无需我们人工干预。相当长的理论概念,回头看看ansible,它就是帮助我们运维人员实现这一目标的工具之一。
它能达到一个什么效果呢?
帮助我们运维实现了工作的自动化
降低人为操作失误
提高了运维工作的自动化率
提升了我们运维的工作效率
ansible的特点是什么,除了拥有运维自动化软件特点以外,最大的特点就是简单,这个简单是我们运用简单,其功能并不简单。
其自身内置模块数量据称高达500多个,目前还在不断增加新模块中,我们来大体看看这些模块的覆盖面:
系统层:它的acl、cron、pip、easy_install、yum、anthorzed_key等内置模块可以在Linux、Windows及AIX等系统中使用。
第三方平台:它的ec2、azure_rm_deployment、cloudflare_dns、clc_aa_plicy等模块可支持AWS、openstack、Google等云平台。
另外还有大量模块支持在虚拟化、商业化硬件(F5、ASA等)及系统应用层方面(apache、zabbix等)的应用。我们就不再一一列举了。
ansible的工作方式
根据其使用过程中的不同角色,我们将其分为:
使用者
ansible工具集
作用对象
使用者
这里有4种方式实现这一角色:
CMDB(Configuration Management DataBase),即配置管理数据库。它存储和管理IT架构中的各项配置信息,是构建ITIL(Information Technology Infrastructure Library,信息技术基础架构库))的核心工具。我们可以将其与ansible组合,通过CMDB直接下发指令调用ansible工具集完成操作者所希望完成的目标。
USERS直接使用Ad-Hoc临时命令集调用ansible工具集来完成任务的执行。
USERS预先编写好ansible playbooks,通过执行其中预先编好的任务集完成任务的执行。
public/private方式,ansible可以提供丰富的API语言接口(如Python、Perl等语言),基于(public公有云、private私有云)云,以API调用方式运行。
工具集
ansible命令是ansible的核心工具。但ansible命令其自身并不直接完成所有的功能。它仅仅起到一种指挥调度的作用,指挥调度如下四种方式完成任务:
INVENTORY(命令执行的目标对象配置文件)
API(供第三方程序调用的应用程序接口)
MODULES(多样的内置模块)
PLUGINS(内置/可自定义的插件)
作用对象
包括Linux、非Linux操作系统的主机,也可作用于各类云,(非)商业设备等设施。
总体来说,我是这样理解的:我们使用 “使用者” 通过 “工具集” ,将其作用于 “作用对象” 。
另一方面,如果我们围绕ansible的工具集来划分的话:
ansible命令可以看做是一个集合,包括了:
inventory:ansible管理的主机清单
modules:功能模块,多数为ansible内置,当然也可自定义。
plugins:该功能不常用,是模块功能的一个补充。例如:连接类型插件、循环插件、变量插件、过滤插件等等。
API:共第三方程序调用的接口。
playbook:任务剧本,顾名思义,它编排定义了一个任务集的配置文件,有ansible顺序执行,其格式是json格式的yml文件。
总体概况其工作流程的话:
我们使用ad-hoc命令集或playbook后,ansible按照编排的规则,将playbook逐条拆解为单个play,再将play组成ansible可识别的task。然后调用此task涉及的module、plugin,依据inventory中定义的主机列表,使用SSH将任务集以临时文件或命令的形式传输到远程客户端执行,同时返回该执行的结果。当执行完成后(如果是临时文件)删除临时文件。
转载请注明出处。
了解更多,请关注我们的微信公众号:
射手座IT俱乐部
以上是关于Ansible是什么的主要内容,如果未能解决你的问题,请参考以下文章