一、概述

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操作的配置文件 。

四、Ansible 安装与基础配置

yum install epel-release
yum -y install ansible
ansible --version