一、概述
Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
Ansible 特点:
- 部署简单,只需要在主控端部署Ansible环境,被控端无需作任何操作
- 默认使用SSH协议对设备进行管理
- 主从集中化管理
- 配置简单、功能强大、扩展性强
- 支持API及自定义模块、可以通过Python轻松扩展
- 通过Playbooks来定制强大的配置、状态管理
- 对云计算平台、大数据都有很好的支持
官方文档:https://docs.ansible.com/ansible/latest/GitHub地址:https://github.com/ansible/ansible
二、Ansible 架构
上图为ansible的基本架构,从上图可以了解到其由以下部分组成:
- 核心:ansible
- 核心模块(Core Modules):这些都是ansible自带的模块
- 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
- 插件(Plugins):完成模块功能的补充
- 剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
- 连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
- 主机清单(Host Inventory):定义ansible管理的主机
三、Ansible 工作原理
从上面的图上可以了解到:
- 管理端支持local 、ssh、zeromq 三种方式连接被管理端,默认使用基于ssh的连接,这部分对应上面架构图中的连接模块;
- 可以按应用类型等方式进行Host Inventory(主机清单)分类,管理节点通过各类模块实现相应的操作,单个模块,单条命令的批量执行,我们可以称之为ad-hoc;
- 管理节点可以通过playbooks 实现多个task的集合实现一类功能,如web服务的安装部署、数据库服务器的批量备份等。playbooks我们可以简单的理解为,系统通过组合多条ad-hoc操作的配置文件 。