一、为什么要通过案例练习 Playbook¶
剧本的价值不在于“能写一个 YAML 文件”,而在于把实际运维步骤拆解成可执行、可复用的任务链。
原始笔记给出的两个案例非常典型:
- 批量创建目录并分发文件
- 批量安装软件包并启动服务
这两类任务几乎覆盖了 Ansible 入门阶段最常见的使用场景。
二、案例一:创建目录并分发文件¶
2.1 先拆解任务步骤¶
原始笔记把这个案例拆成了两步:
1、创建目录 /server/files/
2、把 /etc/hosts 文件分发到这个目录
这种“先拆步骤、再写剧本”的思路非常重要,因为它能帮你把复杂操作变成清晰的任务列表。
2.2 Playbook 示例¶
- hosts: all
tasks:
- name: 01 创建目录
file:
path: /server/files
state: directory
- name: 02 分发文件
copy:
src: /etc/hosts
dest: /server/files
这个剧本里最值得关注的是两个模块:
file:用于创建目录copy:用于分发文件
2.3 执行剧本¶
ansible-playbook 02.dist_file.yml
2.4 如何验证结果¶
原始笔记使用下面的方式验证:
ansible all -a 'ls -l /server/files/'
如果每台目标主机下都能看到 hosts 文件,说明目录创建和文件分发都已经成功。
三、案例二:分发软件包、安装软件包并启动服务¶
这个案例比前一个更贴近真实运维场景,因为它不只是“分发一个静态文件”,而是完整覆盖了:
- 下载软件包
- 安装软件包
- 配置
- 启动服务并设置开机自启
3.1 先做环境检查¶
原始笔记建议先检查目标主机是否已经安装过 zabbix-agent:
ansible all -a 'rpm -qa zabbix-agent'
如果已安装,可以先卸载:
ansible all -a 'rpm -e zabbix-agent'
这一步的意义在于保证剧本测试环境尽量干净,避免旧状态影响验证结果。
3.2 Playbook 示例¶
- hosts: all
tasks:
- name: 01.下载软件包/tmp/
get_url:
url: "https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent-6.0.7-1.el7.x86_64.rpm"
validate_certs: no
dest: /tmp/
- name: 02. 安装软件包
yum:
name: /tmp/zabbix-agent-6.0.7-1.el7.x86_64.rpm
state: present
- name: 03. 配置
debug:
msg: "进行配置zabbix-agent"
- name: 04. 启动
systemd:
name: zabbix-agent
enabled: yes
state: started
3.3 这个案例里涉及哪些模块¶
3.3.1 get_url¶
用于从指定 URL 下载软件包到目标主机。
3.3.2 yum¶
用于通过 RPM 路径安装软件包,状态设为:
present
表示确保软件已安装。
3.3.3 debug¶
这里用来占位演示“配置步骤”,虽然没有真正修改配置,但在剧本设计上保留了这个步骤位置。
3.3.4 systemd¶
用于:
- 启动服务
- 设置开机自启
这在服务部署类剧本里几乎是必会模块。
3.4 执行剧本¶
ansible-playbook 03.install-zabbix-agent.yml
3.5 验证结果¶
原始笔记通过查询 RPM 包验证:
ansible all -a 'rpm -qa zabbix-agent'
只要目标主机返回:
zabbix-agent-6.0.7-1.el7.x86_64
就说明安装已经成功完成。
四、从这两个案例中应该学会什么¶
这两个案例虽然简单,但已经覆盖了很多 Ansible 入门阶段的核心能力:
- 使用
file模块管理目录 - 使用
copy模块分发文件 - 使用
get_url下载资源 - 使用
yum安装软件 - 使用
systemd管理服务 - 使用
debug输出调试信息
更重要的是,它们都体现了一个共同思路:
- 先拆步骤,再编排任务,再验证结果
五、为什么“验证结果”在 Playbook 学习里很重要¶
原始笔记每个案例都专门安排了“结果验证”步骤,这一点非常值得保留。
因为 Playbook 的目标不是“命令执行了”,而是:
- 目标状态真的达成了
例如:
- 目录是否真的创建
- 文件是否真的分发
- 软件是否真的安装
- 服务是否真的启动
只有验证闭环完成,自动化才算真正可靠。
六、小结¶
通过这两个案例,初学者最值得先掌握的能力包括:
- 会用 Playbook 做多步骤任务编排
- 会用
file、copy、get_url、yum、systemd等基础模块 - 会把部署任务拆成清晰的步骤
- 会在执行后做结果验证
当这些基础能力掌握后,后面的服务自动化部署和复杂剧本编排就会轻松很多。