Ansible发展史
作者:Michael DeHaan( Cobbler 与 Func 作者)
Ansible 的名称来自科幻小说《安德的游戏》中跨越时空的即时通信工具,使用它可以在相距数光年的距离,远程实时控制前线的舰队战斗。
2012-03-09,发布0.0.1版。
2015-10-17,Red Hat宣布1.5亿美元收购。
官网:https://www.ansible.com/
官方文档:https://docs.ansible.com/
Ansible 功能
- 批量执行远程命令,可以对远程的多台主机同时进行命令的执行
- 批量安装和配置软件服务,可以对远程的多台主机进行自动化的配置和管理
- 编排高级的企业级复杂的IT架构任务, Ansible的Playbook和role可以轻松实现大型的IT复杂架构
- 提供自动化运维工具的开发API, 有很多运维工具,如jumpserver就是基于 ansible 实现自动化管理功能
Ansible 特性
- 模块化:调用特定的模块完成特定任务,支持自定义模块,可使用任何编程语言写模块
- Paramiko(python对ssh的实现),PyYAML,Jinja2(模板语言)三个关键模块
- 基于Python语言实现
- 部署简单,基于python和SSH(默认已安装),agentless,无需代理不依赖PKI(无需ssl)
- 安全,基于OpenSSH
- 幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况(此特性非绝对)
- 支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构
- 较强大的多层解决方案 role
Ansible 架构
Ansible 组成
组合INVENTORY、API、MODULES、PLUGINS的绿框,为ansible命令工具,其为核心执行工具
- INVENTORY:Ansible管理主机的清单/etc/ansible/hosts
- MODULES:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义
- PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等(该功能不常用)
- API:供第三方程序调用的应用程序编程接口
注意事项
- 执行ansible的主机一般称为管理端,,主控端,中控,master或堡垒机
- 主控端Python版本需要2.6或以上
- 被控端Python版本小于2.4,需要安装python-simplejson
- 被控端如开启SELinux需要安装libselinux-python
- windows 不能做为主控端