第一节:Ansible简介
应用场景
- 自动化运维,批量管理架构内的主机
- 可以同时操作属于一个组的多台主机
特点
- 无客户端:不需要在客户端上安装和配置软件,随便一台主机就可以是客户端
- 无代理:Ansible通过ssh协议(远程连接),解析成python命令的形式去执行
- 跨平台支持:支持Linux、Windows、网络设备
- 配置简单,容易理解
- 基于python开发,方便二次开发,RHEL原生支持,丰富的内置模块
- 可以通过playbook实现复杂的功能(类似脚本,可以多次使用的一个方案)
- 幂等性:一个任务,如果已经处于期望的状态,就不会再执行,避免被管理的主机出错。(防止重复操作导致覆盖等问题)
注意:管理节点必须是Linux
Ansible节点分类
- 管理节点:控制节点,安装Ansible软件,负责管理其它机器的
- 托管节点:受控节点(不用安装Ansible)
Ansible组件组成
- inventory:用于指定托管节点清单、分组(路径为/etc/ansible/hosts)
- modules:模块,实现Ansible的主要功能(ping、command、shell、copy、file…)
- API:应用程序接口
- plugins:插件
Ansible两种使用形式
- ad-hoc模式:可以直接通过命令行实现管理
- playbook(剧本)模式:可以间接通过playbook剧本进行批量管理(类似脚本,可以多次使用的一个方案)
Ansible的工作流程(原理)
- 加载ansible配置文件
- 查找和加载inventory
- 加载模块
- 通过ansible将这些模块的指令生成一个python脚本文件(临时文件)
- 将python文件传输到托管节点
- 托管节点接收python文件
- 执行py文件,并返回结果
- 管理节点接收结果,删除临时文件(收到返回结果才删除是为了防止传输失败等问题)