上两节中,分别介绍了Ansible执行的两种方式。那Ansible的执行过程、或者说工作原理是怎样的呢?这是本节所要介绍的内容。

一、整体架构

Ansible使用基础之工作原理
如上图所示,Ansible的架构并不复杂。主要由以下几部分构成

组成部分 作用
Host Inventory 主机清单。定义所要控制的主机,并将其进行分组
Playbooks 剧本。将复杂任务分解为一个个子任务,并按照预定的处理过程进行编排
Modules 模块。包括众多的内置模块和用户自定义模块
Connection Plugins 连接插件。与被控主机建立ssh连接,通过paramiko实现
Host1,Host2… 被控主机
Ansible.cfg Ansible的全局配置文件,图中未标出
Ansible 统筹整个架构,包含Ansible的一系列命令行工具

二、工作流程

要弄懂Ansible的工作流程,其实只要弄清楚几个问题。操作对象是什么?被控主机嘛。从哪来呢?读主机清单文件呗。主机清单文件在哪呢?读配置文件呗。怎么操作呢?按剧本写的做!没有剧本?那一行命令不就完了嘛…问个没完没了,直接看下面步骤吧

  1. 查找配置文件,一般使用默认的 /etc/ansible/ansible.cfg。加载一些全局配置及找到主机清单文件位置,然后解析主机清单文件。
    Ansible使用基础之工作原理

  2. 建立ssh连接,进入与被控端当前所用用户对等的用户家目录下,建立临时文件夹
    Ansible使用基础之工作原理

  3. 查找被控主机上的python解释器
    Ansible使用基础之工作原理

  4. 加载编写的剧本xxx.yml或命令行模式中用到的模块,将本地生成的临时文件通过 sftp 发送到 第二步 所生成的临时文件夹下,并重命名为xxx.py文件
    Ansible使用基础之工作原理

  5. xxx.py文件加执行权限
    Ansible使用基础之工作原理

  6. 在被控主机上,使用第三步查找到的python解释器执行第四步生成的xxx.py文件,并返回结果
    Ansible使用基础之工作原理

  7. 删除临时xxx.py文件,退出
    Ansible使用基础之工作原理

注:查看Ansible的详细执行流程,可通过-vvv-vvvv参数。
eg: ansible all -m ping -vvv

相关文章: