一、什么是 Ansible 剧本¶
原始笔记对剧本的定义非常直接:
- Playbook 文件用于长久保存批量管理、维护和部署步骤
- 它的作用类似脚本,只不过剧本里存放的是模块、任务和变量
这意味着,Ansible 剧本的核心价值不是“临时执行一条命令”,而是把一整套可重复执行的运维步骤沉淀为文件。
二、Playbook 和 ad-hoc 命令有什么区别¶
原始笔记给出了一个很清晰的对比:
| 对比项 | Ansible 剧本 | Ansible ad-hoc |
|---|---|---|
| 共同点 | 都能做批量管理,也都调用模块 | 都能做批量管理,也都调用模块 |
| 区别 | 方便重复调用 | 不太方便重复使用 |
| 适用场景 | 部署服务、多个步骤的任务 | 测试模块、临时性任务 |
可以简单理解成:
- ad-hoc 更像一次性命令
- Playbook 更像可维护、可复用的自动化方案
三、为什么剧本是运维必会内容¶
原始笔记特别强调:
- Playbook 是未来批量管理中运维必会的内容
原因很简单,真实环境中的运维任务很少只做一步,经常会出现这样的流程:
- 安装软件
- 修改配置
- 分发文件
- 启动服务
- 验证结果
这种多步骤任务如果只靠 ad-hoc 一条一条敲,不仅效率低,还很难复用。Playbook 正是为了解决这个问题。
四、剧本为什么使用 YAML 格式¶
原始笔记提到,剧本文件使用的是 YAML 格式。它最重要的特点有两个:
- 空格非常关键
- 冒号写法要正确
YAML 并不复杂,但对格式要求很严格,所以初学者最容易出错的地方通常不是模块本身,而是缩进和对齐。
五、最基本的 Playbook 长什么样¶
原始笔记给出了一个经典示例,用“把大象放进冰箱”来演示多步骤剧本。
---
- hosts: all
tasks:
- name: 01 打开冰箱门
shell: echo 01 >> /tmp/bingxiang.log
- name: 02 把大象放入冰箱
shell: echo 02 >> /tmp/bingxiang.log
- name: 03 关上冰箱的门
shell: echo 03 >> /tmp/bingxiang.log
这个示例非常适合入门,因为它完整体现了剧本最小结构:
hosts:定义对哪些主机执行tasks:定义要执行的任务列表name:给每个任务写说明- 模块调用:这里使用的是
shell
六、剧本的基本执行流程¶
原始笔记中的执行流程可以概括成三步。
6.1 编写剧本¶
例如先准备目录:
mkdir -p /etc/ansible/playbook/
cd /etc/ansible/playbook/
然后把剧本保存为 .yml 或 .yaml 文件。
6.2 执行剧本¶
ansible-playbook 01.show.yml
6.3 验证结果¶
原始笔记中使用 ad-hoc 命令验证:
ansible all -a 'cat /tmp/bingxiang.log'
结果显示所有目标主机都按顺序写入了:
010203
这就说明整个多步骤剧本已经被批量执行成功。
七、写 Ansible Playbook 时最常见的格式注意事项¶
原始笔记最后总结了三条非常关键的规范:
- 同一个层级的内容必须对齐
- 不同层级通常通过 2 个空格缩进
- 不能使用
Tab键
这三条看起来简单,但几乎是 Ansible 初学阶段最容易踩坑的地方。很多“剧本执行报错”本质上并不是逻辑问题,而是 YAML 缩进问题。
八、为什么建议把简单任务也先写成剧本¶
虽然 ad-hoc 很方便,但只要你发现任务具备下面任意一个特征,就已经值得考虑写成 Playbook:
- 会重复执行
- 包含多个步骤
- 需要交给别人复用
- 未来还要继续补充和维护
这也是从“临时执行命令”走向“自动化运维”的关键一步。
九、小结¶
学习 Ansible 剧本时,最值得先掌握的几个点是:
- Playbook 适合多步骤、可重复的批量任务
- 它和 ad-hoc 的主要区别在于可复用性
- YAML 的缩进和对齐必须严格
- 一个最小剧本通常包含
hosts、tasks、name和模块调用 - 剧本执行后要养成验证结果的习惯
把这些基础点先掌握之后,后面再学习文件分发、软件安装、服务部署和变量管理,就会顺很多。