什么是ansible?
简介
基于Python开发,集合众多运维工具(puuppet、cfengine、chef、func、fabric)的优点,实现批量系统配置、程序部署、运行命令等功能的自动化运维工具。
工作原理
ansible本身是没有批量部署能力的。真正具有批量部署的是ansible上运行的模块,ansible只是提供一种框架。
主要包括:
- 连接插件(connection plugins):负责与被监控端实现通信
- host inventory:指定需要远程/批量操作的主机,本质是在一个配置文件中定义监控的主机
- 包含各种核心模块,命令模块,以及自定义模块等
- 剧本(playbook):需要让所监控节点一次性执行多个任务,类似shell脚本
*ansible仅仅作为一个框架,解析yml文件,自定义的主机清单,*并调用ansible模块ssh批量连接远程主机,*指定特定模块工作落地。
总体架构
特性
- 不需要再被监控端主机上安装客户端
- 无服务器端,使用直接运行命令(区别于其他工具的C/S模式)
- 基于模块工作,可以使用任意语言开发模块。
- 使用yaml语言编写playbook,易懂
- 基于ssh工作,并发执行,加速模块
- 实现多级指挥
优点
- 轻量级,无需安装客户端,更新只需操作监控端主机
- 批量任务执行可以写成脚本,并且不需要分发到远程就能执行
- 使用python编写,维护简单
- 支持sudo提权