Ansible 简介
Ansible 基于python2-paramiko模块开发,具备众多运维工具的优点,可以实现系统的批量配置、程序批量部署和批量运行命令。Ansilbe 基于模块实现自动化输出能力,本质上是一个框架,本身没有批量部署能力,真正具有批量部署能力的是Ansilbe中所运行的模块。
- 能力
- 模块管理
- 负责内部插件之间的通信和监控
- 负责管理资源清单
- 负责内部模块额管理;
- 具备多任务模式、并可以进行参数优化配置(核心功能)
- 特性
- 无客户端模式,不需要再被管理主机上安装客户端软件。
- 无server端概念,通过命令方式打通管道;
- 通过模块实现多语言支持能力;
- 使用YAML语言定制playbook;
- 可以实现多级指挥
- 轻量级和易用性。
Ansible的playbook
Ansible 有两种使用方式:playbook和AdHoc。
playbook 是一个配置管理系统,依托ansible 的框架实现批量机器的交互,它具有一些有点和特性。可以对执行过程进行编排,有序执行,对象分类和编组,有同步和异步的方式发起。
AdHoc,用/usr/bin/ansible 程序执行任务,使用playbook主要是将执行计划通过源码进行控制,进行配置的规范审核,同时进行配置的推送。
playbook的语言格式是YAML,避免让playbook 变成一种编程语言或者脚本。
由一个或者多个play构成,每个play中,角色通过映射的方式来定义,如有一组机器被映射成已知定义的角色。play中的内容称为task,,每一次task就是对ansible模块的一次调用。
主机和用户
play中基本都包含主机(hosts)和用户(remote_user)。
task列表
每一个play都包含一个任务列表,也就是task列表,每个task在其所对应的主机或主机组上执行完毕之后,才会触发执行下一个task。
运行playbook时,执行顺序是从上到下的,如有一个host执行task失败,那这个host会被从playbook的rotation列中移除,同时需要对playbook进行修正,修正后重新执行,而不是继续执行。task的目的是执行一个module,module具有幂等特性,重复执行,只会执行必要的变动。