一 简介
Ansible 是一款极其简单的自动化运维工具, 基于 Python 开发, 集合了众多运维工具 (Puppet, cfengine, Chef, func, fabric) 的优点. 实现了批量系统配置, 批量程序部署, 批量运行命令等功能.
Ansible 是基于模块工作的, 本身没有批量部署的能力. 真正具有批量部署的是 ansible 所运行的模块, Ansible 只是提供一种框架. 主要包括:
Play books: 任务剧本(任务集), 编排定义 Ansible 任务集的配置文件, 由 Ansible 依次执行多个任务, 通常是 JSON 格式的 YAML 文件;
Host inventory: Ansible 管理主机的清单, 指定操作的主机, 是一个配置文件里面定义监控的主机;
Modules: 各种模块核心模块, command 模块等, 也包括自定义模块;
Connection plugins: 负责和被监控端实现通信;
Plugins: 模块功能的补充, 如连接类型插件, 循环插件, 变量插件等, 可借助于插件完成更丰富的功能.
二 工作机制
用户使用 Ansible 或 Playbook, 在服务器中断输入 Ansible 的 Ad-Hoc 命令集或 Playbook;
Ansible 遵循预先编排的规则将 Playbooks 逐条拆解为 Play;
Play 组织成 Ansible 可识别的任务(Task);
Task 会调用任务所涉及的所有模块 (Module) 和插件(Plugin);
读取 Inventroy 中定义的主机列表;
通过 SSH 认证 (默认) 将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果.
三 特性
no agents: 不需要在被管控主机上安装任何客户端, 只需 SSH,Python 即可, 建议 Python 版本为 2.6.6 以上;
no server: 无服务器端, 使用时直接运行命令即可;
modules in any languages: 基于模块工作, 丰富的内置模块, 可使用任意语言开发模块;
YAML, not code: 使用 YAML 语言定制剧本 playbook, 易于管理, API 简单明了;
SSH by default: 基于 SSH 工作, 整个过程简单, 方便, 安全, 建议使用公钥方式认证;
strong multi-tier solution: 可实现多级指挥.
四 优点
(1). 轻量级, 无需在客户端安装 agent, 更新时只需在操作机上进行一次更新即可;
(2). 批量任务执行可以写成脚本, 而且不用分发到远程就可以执行;
(3). 使用 python 编写, 维护更简单, Ruby 语法过于复杂;
(4). 支持 sudo.
五 应用场景
5.1 操作角度划分
文件传输: 文件的本地传输和异地传输, 所有文件的空间形态, 时间形态变化均构成文件传输类操作;
命令执行: 终端所有操作对系统来说都是指令的组成, 对运维操作的用户行为来说, 除文件传输以外的其他操作均可称为命令操作.
5.2 工作类型划分
应用部署
配置管理
任务流编排
来源: https://www.cnblogs.com/itzgr/p/10297231.html