1. ansible-playbook简介
• Playbooks 与 adhoc 相比,是一种完全不同的运用 ansible 的方式,是非常之强大的.
• 简单来说,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其他系统有不同之处,且非常适合于复杂应用的部署.
• Playbooks 可用于声明配置,更强大的地方在于,在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.并且可以同步或异步的发起任务.
• 我们使用 adhoc 时,主要是使用 /usr/bin/ansible 程序执行任务.而使用 playbooks 时,更多是将之放入源码控制之中,用之推送你的配置或是用于确认你的远程系统的配置是否符合配置规范.
2. playbook语言的示例
• playbook是Ansible的配置,部署和编排的语言。他们可以描述你所希望的远程系统强制执行的政策,或者在一般的IT流程的一组步骤;形象点的说就是:如果ansible的各模块(能实现各种功能)是车间里的各工具;playbook就是指导手册,目标远程主机就是库存和原料对象.
• playbook是基于YAML语言格式配置,关于YAML
1) playbook的核心元素
• hosts :定义远程的主机组
• user:执行该任务组的用户
• remote_user:与user相同
• sudo:如果设置为yes,执行该任务组的用户在执行任务的时候,获取root权限
• sudo_user:如果你设置user为tom,sudo为yes,sudo_user为jerry,则tom用户则会获取jerry用户的权限
• connection:通过什么方式连接到远程主机,默认为ssh
• gather_facts:除非你明确说明不需要在远程主机上执行setup模块,否则默认会自动执行。如果你确实不需要setup模块所传递过来的变量,你可以启用该选项
• tasks:任务,有模板定义的操作列表
• variables: 变量
• templates:包含模板语法的文本文件
• handlers :由特定条件触发的任务
• roles :用于层次性、结构化地组织playbook。roles 能够根据层次型结构自动装载变量文件、tasks以及handlers等
2) playbook运行方式
• ansible-playbook --check 只检测可能会发生的改变,但不真执行操作
• ansible-playbook --list-hosts 列出运行任务的主机
• ansible-playbook --syntax-check playbook.yaml 语法检测
• ansible-playbook -t TAGS_NAME playbook.yaml 只执行TAGS_NAME任务
• ansible-playbook playbook.yaml 运行
3) 变量词
• vars
• vars_files
• vars_prompt
3. YAML语法与Playbook文件结构
1) YAML语法
• 缩进表示层级关系
• 不支持制表符“tab”缩进,使用空格缩进
• 通常开头缩进2个空格
• 字符后缩进1个空格,如冒号、逗号等
• “---”表示YAML格式,一个文件的开始
• “#” 注释