1、运维工作介绍

运维工作的全部流程:

系统安装(物理机、虚拟机)--> 程序包安装、配置、服务启动 --> 批量操作 --> 程序发布  --> 监控

    随着一些大公司的IT系统架构越来越复杂,服务器数量越来越多,标准化和自动化已经是运维工作的基本要素。

自动化运维经历了4个阶段:人工,这个阶段基本上是全部需要到机器上一步步操作;脚本,使用计划任务完成一些重复性工作;工具,这个阶段一个人可以管理大量的机器,常见的工具:puppet,saltstack,ansible;平台化,这时运维人员已经深入研究操作系统的很多组件的代码并且进行优化,开发运维工具实现流程化标准化。

运维工具的介绍:

运维工具的分类:

    agent: 需要植入代理程序采集响应的信息

    代表性运维工具:puppet, func

    agentless: 不需要植入代理程序采集响应的信息

    代表性运维工具:ansible, fabric

    ssh:基于ssh协议

    代表性运维工具:ansible

正因为ansible具有agentless和ssh特性,所以ansible是轻量型的运维工具。而且相对于puppet和saltstack运维工具,ansible在部署和使用上更加简单,更容易入门。


2、ansible简介

ansible是一个轻量级的运维管理工具 , 基于Python研发 。可实现对系统的批量管理配置、程序的批量部署、批量的运行命令等功能。 仅需在任意管理主机安装 ansible 程序即可实现批量管理被管控主机且被管控的主机无需客户端。 我们在安装ansible时一定要依托epel源来安装(推荐阿里云),并且在线用yum安装。它基于python开发所以得解决ansible对python编程的各种依赖。

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)连接插件connection plugins:负责和被监控端实现通信;

(2)host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)各种模块核心模块、command模块、自定义模块;

(4)借助于插件完成记录日志邮件等功能;

(5)playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。



3、ansible特性

(1)no agents:不需要在被管控主机上安装任何客户端;

(2)no server:无服务器端,使用时直接运行命令即可;

(3)modules in any languages:基于模块工作,可使用任意语言开发模块;

(4)yaml,not code:使用yaml语言定制剧本playbook;

(5)ssh by default:基于SSH工作;

(6)strong multi-tier solution:可实现多级指挥。


4、ansible的基本架构

对上图组件的说明:

(1)Host Inventory:

Inventory是被管理主机的清单,由/etc/ansible/hosts中定义,可以实IP或主机名

(2)Playbooks:

Playbooks是任务集,类似于脚本,由ansible调度大量主机执行其中的任务,调用直接使用ansible-playbook命令

(3)Modules:

MODULES是Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义,使用ansible-glaxy加载别人定义的模块。

Core Modules 核心模块 
Customed Modules 自定义模块

(4)Plugins:

API 和PLUGINS是第三方提供的管理接口和模块功能的补充,基本不会使用,使用需要一定的技术门槛

Users直接和ansible交互使用ansible命令。

Connection Plugins:连接插件,主要连接各管控主机


5、任务执行流程

wKiom1Rsx2uQYJZ5AAJplY08vOQ976.jpg


关于ansible的安装配置使用见下一篇文档:

http://afterdawn.blog.51cto.com/7503144/1892658