1.1.2 Ansible的模块
Ansible基于模块化工作,其本身没有批量部署的能力。真正具有批量部署功能的是Ansible所运行的模块,Ansible只是提供一种框架,如图1.2所示。
作者:云计算磊哥 链接:https://zhuanlan.zhihu.com/p/383180049 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
图1.1 Ansible框架
从图1.2中可以看到,Ansible主要由以下几个核心组件构成。
l Ansible主体:Ansible的核心程序,提供一个命令行接口给用户对Ansible进行管理操作。
l 主机清单(HostInventory):为Ansible定义了管理主机的策略。一般小型环境下只需要在host文件中写入主机的IP地址即可,但是到了中大型环境有可能需要使用静态主机清单或者动态主机清单来生成所需要执行的目标主机。
l 核心模块(CoreModules):Ansible执行命令的功能模块,多数为内置的核心模块。
l 拓展模块(CustomModules):用户可自定义相应的模块。
l 连接插件(ConnectionPlugins):模块功能的补充。
l 任务剧本(Playbook):编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YAML文件。
l API:供第三方程序调用的应用程序编程接口。
1.1.1 Ansible的工作原理
Ansible是基于paramiko开发的(paramiko是一个纯Python实现的SSH协议库),因此Ansible基于SSH就可以与远程主机进行通信,其工作原理如图1.2所示。
图1.1 Ansible工作原理
如图1.3所示,Ansible的管理端支持local、ssh、zeromq三种方式连接被管理端,默认基于SSH连接。它可以按应用类型对Host Inventory(主机清单)进行分类,在管理节点通过各类模块实现相应的操作。其中,单个模块或单条命令的批量执行被称为ad-hoc;多个任务的集合被称为playbook。也就是说Ansible执行自动化任务,主要分为以下两种执行模式:
1、ad-hoc:单个模块,单条命令的批量执行。
2、playbook:可以理解为系统组合的多条ad-hoc操作的配置文件,将把多个想要执行的任务放到一个playbook中,如Web服务的安装部署、数据库服务器的批量备份等,通过多个任务可以完成一个总体的目标。