Ansible基础入门

目录

  1. Ansible是什么
  2. Ansible发展史
  3. 为什么选择Ansible
  4. Ansible是如何工作的
    1. 按角色
      1. 使用者
      2. Ansible工具集
      3. 作用对象
    2. 按Ansible工具集组成
      1. ANSIBLE PLAYBOOKS
      2. INVENTORY
      3. MODULES
      4. PLUGINS
      5. API
  5. Ansible通信发展史
    1. Ansible SSH工作机制
    2. Ansible通信方式发展历程
      1. Paramiko通信模块
      2. OpenSSH
      3. 加速模式
      4. Faster OpenSSH in Ansible 1.5+
  6. Ansible应用场景
    1. 运维操作角度
      1. 文件传输
      2. 命令执行
    2. 自动化工作类型角度
      1. 应用部署
      2. 配置管理
      3. 任务流编排
  7. Ansible安装部署
    1. PIP
  8. Python多环境扩展管理
    1. Pyenv
    2. Virtualenv

Ansible是什么

Ansible是一种IT自动化工具。它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署或零停机滚动更新。

Ansible发展史

Ansible第一个版本是0.0.1,发布于2012年3月9日,创始人是Michael DeHaan。

为什么选择Ansible

  1. 完全基于Python开发,而DevOps在国内已然是一种趋势,Python被逐步普及,运维人员自己开发工具的门槛逐步降低,得益于此,方便对Ansible二次开发。
  2. Ansible丰富的内置模块,甚至还有专门为商业平台开发的功能模块。
  3. 在Ansible去中心化概念下,一个简单的复制操作即可完成管理配置中心的迁移。
  4. Agentless(无客户端),客户端无需任何配置,由管理端配置好后即可使用。

Ansible是如何工作的

Ansible没有客户端,因此底层通信依赖于系统软件,Linux系统下基于OpenSSH通信,Windows系统下基于PowerShell,管理端必须是Linux系统。使用者认证通过后,在管理节点通过Ansible工具调用各应用模块,将指令推送至被管理端执行,并在执行完毕后自动删除产生的临时文件。

按角色

根据Ansible使用过程的不同角色,将其分为:

  • 使用者
  • Ansible工具集
  • 作用对象
使用者

Ansible使用者来源于多种维度,有4种方式。

  1. CMDB(Configuration Management Database,配置管理数据库)。CMDB存储和管理着企业IT架构中的各项配置信息,是构建ITIL(IT基础架构库)项目的核心工具。运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具集完成操作者所希望达成的目标。
  2. PUBLIC/PRUVATE方式。Ansible除了丰富的内置模块外,同时提供丰富的API语言接口,如PHP、Python、PERL等语言,基于PUBLIC(公有云)/PRIVATE(私有云),Ansible以API调用的方式运行。
  3. USERS直接使用Ad-Hoc临时命令集调用Ansible工具集来完成任务。
  4. USERS预先编写好的ANSBILE PLAYBOOKS,通过执行playbooks中预先编排好的任务集按序完成任务。
Ansible工具集

ansible命令是Ansible的核心工具,ansible工具集包括,INVENTORY(命令执行的目标对象标配文件)、API(供第三方程序调用的应用程序编程接口)、MODULES(丰富的内置模块)、PLUGINS(内置和可自定义的插件)。

作用对象

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

按Ansible工具集组成

ANSIBLE PLAYBOOKS

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

INVENTORY

Ansible管理主机的清单。

MODULES

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

PLUGINS

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

API

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

Ansible通信发展史

Ansible SSH工作机制

Ansible通信方式发展历程

Paramiko通信模块
OpenSSH
加速模式
Faster OpenSSH in Ansible 1.5+

Ansible应用场景

运维操作角度

文件传输

文件的本地传输和异地传输,所有文件的空间形态、时间形态变化均构成文件传输类操作。

命令执行

终端所有操作对系统来讲都是指令的组成,最终转换为基础硬件可接受的电信号完成任务集。对运维操作的用户行为来讲,除文件传输的其他操作均可以成为命令执行。

自动化工作类型角度

应用部署
配置管理
任务流编排

Ansible安装部署

PIP

  1. 安装python-pip及python-devel。

    1
    yum install python-pip python-devel -y
  2. 安装Ansible服务。

    1
    2
    3
    yum install gcc glibc-devel zlib-devel rpm-build openssl-devel -y
    pip install --upgrade pip
    pip install ansible -upgrade

Python多环境扩展管理

Pyenv

Virtualenv