《Ansible权威指南》一1.4 Ansible是如何工作的

简介:

本节书摘来自华章出版社《Ansible权威指南》一书中的第一章,第X节,作者 李松涛 魏 巍 甘 捷 更多章节内容可以访问云栖社区“华章计算机”公众号查看。


1.4 Ansible是如何工作的

Ansible没有客户端,因此底层通信依赖于系统软件,Linux系统下基于OpenSSH通信,Windows系统下基于PowerShell,管理端必须是Linux系统,使用者认证通过后在管理节点通过Ansible工具调用各应用模块将指令推送至被管理端执行,并在执行完毕后自动删除产生的临时文件。Ansible具体的工作机制官方有专栏介绍httpswww.ansible.comhow-ansible-works,但整体稍过简略。我们参考从官网视频中的截图来详细了解下其工作方式,如图1-1所示。根据Ansible使用过程中的不同角色,我们将其分为:

使用者

Ansible工具集

作用对象

(1)使用者

如图1-1中Ansible工作机制所示,Ansible使用者来源于多种维度,图中为我们展示了4种方式:

第一种方式:CMDB(Configuration Management Database,配置管理数据库),CMDB存储和管理着企业IT架构中的各项配置信息,是构建ITIL项目的核心工具,运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具集完成操作者所希望达成的目标;

第二种方式:PUBLICPRIVATE方式,Ansible除了丰富的内置模块外,同时提供丰富的API语言接口,如PHP、Python、PERL等多种当下流行语言,基于PUBLIC(公有云)PRIVATE(私有云),Ansible以API调用的方式运行;

第三种方式:USERS直接使用Ad-Hoc临时命令集调用Ansible工具集来完成任务执行,Ad-Hoc将在第3章有详细介绍;

第四种方式:USERS预先编写好的ANSIBLE PLAYBOOKS,通过执行Playbooks中预先编排好的任务集按序完成任务执行。

(2)Ansible工具集

ansible命令是Ansible的核心工具,ansible命令并非自身完成所有的功能集,其只是Ansible执行任务的调用入口,大家可心理解为“总指挥”,所有命令的执行通过其“调兵遣将”最终完成。ansible命令共有哪些兵将可供使唤呢?大家看中间绿色框中有INVENTORY(命令执行的目标对象配置文件)、API(供第三方程序调用的应用程序编程接口)、MODULES(丰富的内置模块)、PLUGINS(内置和可自定义的插件)这些可供调遣。

(3)作用对象

Ansible的作用对象,不仅仅是Linux和非Linux操作系统的主机(HOSTS),同样也可以作用于各类公有云私有云,商业和非商业设备的网络设施。

d59b6c327ba5a3fd96d9960129c6136c4248c90e

同样,如果我们按Ansible工具集的组成来讲,由图1-1可以看出Ansible主要由6部分组成。

ANSIBLE PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件;

INVENTORY:Ansible管理主机的清单;

MODULES:Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义;

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

API:供第三方程序调用的应用程序编程接口;

ANSIBLE:该部分图中表示的不明显,组合INVENTORY、API、MODULES、PLUGINS的绿框大家可以理解为是Ansible命令工具,其为核心执行工具;

Ansible执行任务,这些组件相互调用关系如图1-2所示:

0f516659a5c322a014a76532643c868bdb7f1980

使用者使用Ansible或Ansible-playbook(会额外读取Playbook文件)时,在服务器终端输入Ansible的Ad-Hoc命令集或Playbook后,Ansible会遵循预先编排的规则将Playbooks逐条拆解为Play,再将Play组织成Ansible可识别的任务(Task),随后调用任务涉及的所有模块(Module)和插件(Plugin),根据Inventory中定义的主机列表通过SSH(Linux默认)将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果,如果是临时文件则执行完毕后自动删除。


相关文章
|
Web App开发 运维 Python
《Ansible权威指南 》一 导读
对比主流的自动化工具SaltStack、Puppet等,Ansible给人最直观的感觉就是比较简单,而这也是笔者选择使用Ansible最重要的理由之一。因为笔者一直认为每个人精力有限,如腾讯早期的Ops技能培训希望个人同时兼备Ops和Dev的战略,但直到现在身边真正同时具备Dev和Ops能力于一身的人凤毛麟角。
4001 0
|
Shell Apache 数据安全/隐私保护
Ansible权威指南笔记(粗略)
# 在托管节点上安装 python 解释器 ansible myhost --sudo -m raw -a "yum install -y python2 python-simplejson" # 各个平台上安装 ansible http://www.
1481 0
《Ansible权威指南 》一1.9 本章小结
Ansible是运维自动化工具的后起之秀。本章前半部分我们学习了Ansible是什么,底层通信发展史,Ansible发展历程等概念性知识。后半部分我们详细介绍了Ansible安装部署方式,同时考虑本地复杂环境可能导致的部署问题,本章后半部分我们也引申介绍了Python多环境扩展管理,以方便大家应对部署过程中可能出现的各类问题。
1470 0
《Ansible权威指南 》一 3.5 本章小结
Ansible Ad-Hoc在运维日常工作中的作用举足轻重,日常工作中的临时并发性操作均通过Ad-Hoc协助完成,因此我们花了很多篇幅为大家介绍其使用及企业实践。
833 0
|
JavaScript 算法 Linux
《Ansible权威指南 》一3.4 Ad-Hoc用户与组管理
用户权限管理是运维日常最重要的管理工作之一,如生产环境禁用开发和测试人员登录变更,但测试环境的用户权限仍需耗费精力维护,这项工作大公司也存在(将测试环境交给测试或开发管理并不是每个公司都能做到的,但未来是趋势)。
2777 0
|
Web App开发 JavaScript 关系型数据库
《Ansible权威指南 》一 3.3 Ad-Hoc组管理和特定主机变更
Ansible也提供了简洁但强大的组管理功能。同时,我们也可能遇到只针对这组主机中一台或某些主机做变更的场景,针对这些复杂多变的企业场景,本节我们将深入了解Ad-Hoc组管理和特定主机变更,进一步了解Ansible如何应对复杂多变的企业环境。
2424 0
|
JavaScript 前端开发 Linux
《Ansible权威指南 》一3.2 Ad-Hoc命令集介绍
本节介绍通过Ad-Hoc命令集查看系统设置,通过Ad-Hoc研究Ansible的并发特性,通过Ad-Hoc研究Ansible的模块使用。俗话说,磨刀不误砍柴工。开始之前做一些简单的初始化检查,如系统时间正确与否、磁盘容量是否充足等,是很有必要的。
2321 0
|
Linux Shell
《Ansible权威指南 》一第3章 Ansible Ad-Hoc命令集
第2章介绍了Ansible的各项元素、系列命令、Inventory基础,以及Ansible与正则的结合使用,这些内容是掌握Ansible的基础,请务必熟练掌握。在前两章的基础上,本章为大家介绍Ansible Ad-Hoc命令集,通过模拟真实的企业案例和应用场景更深入地了解Ansible。
1183 0
|
Web App开发 JavaScript 前端开发
《Ansible权威指南 》一2.6 Ansible与正则
正则表达式(Patterns)是各类高级语言的必定支持的方法之一,Ansible也不例外。其Patterns功能等同于正则表达式,语法使用也和正则类同,这大大便利了运维的使用。其对于Ansible的灵活性有着极大贡献,该功能同样支持Ansible-playbook。其用法也非常简单。
3380 0
|
JavaScript 前端开发 Linux
《Ansible权威指南 》一Ansible命令用法详解
Ansible命令行执行方式有Ad-Hoc、Ansible-playbook两种方式,Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于其提供的API开发类似的Web化产品。
4258 0