Ansible教程:Playbook介绍 作者:马育民 • 2026-09-26 08:45 • 阅读:10001 # 介绍 Playbook 是 Ansible 的**剧本**,使用 **YAML** 编写,用来定义一组在多台主机上顺序执行的自动化任务,替代 ad-hoc 临时命令,适合复杂部署、配置管理、应用发布。 # 概念 - **Playbook**:整个YAML文件,由**一个或多个 Play** 组成 - **Play**:绑定一组主机 + 变量 + 任务集合 - **Task**:单个动作,调用 Ansible **Module(模块)**,从上往下顺序执行 - **Module**:Ansible内置执行单元(yum、copy、service、template等) ### Task(任务) **最小执行单元**,一个 Task 对应一次动作,调用 Ansible 模块完成操作。 - 一个 Task 只做一件事:创建文件、安装包、启动服务等 - 关键字:`name`(任务名称,方便看日志)、`模块名`(yum/file/service) - 执行特点:**在目标主机上顺序执行**,一个 Task 失败默认停止整个 Play 示例单个 Task: ```yaml - name: 安装nginx yum: name: nginx state: present ``` ### Play(剧本段落) **由一组 Task 组成,选定一批目标主机,在这些主机上依次执行 Tasks**。 - 一个 Play 核心要素:`hosts`(指定哪些主机执行)、`tasks`(任务列表)、`vars`/`become`等配置 - 一个 Playbook 文件,可以包含**多个 Play**(从一个主机组切换到另一个主机组执行不同任务) 示例一个完整 Play: ```yaml - name: 部署nginx的Play hosts: webservers # 目标主机组 become: true # 提权sudo tasks: - name: 安装nginx yum: name: nginx state: present - name: 启动nginx service: name: nginx state: started ``` ### Playbook `.yml` 后缀文件,**可以包含 1 个或多个 Play**。 ```yaml # Playbook 包含两个Play - name: Play1 配置web节点 hosts: web tasks: ... - name: Play2 配置db节点 hosts: db tasks: ... ``` ### 三者关系总结 - Playbook 文件 包含多个 Play - 每个 Play 指定目标主机,内部顺序执行一组 Task - Task 调用模块完成具体操作。 ``` Playbook ├─ Play #1(hosts: web) │ ├─ Task 1 │ └─ Task 2 └─ Play #2(hosts: db) ├─ Task A └─ Task B ``` ### 补充 1. **Play 的范围是主机**:同一个 Play 里所有 Task 都会在 `hosts` 指定的所有主机上运行 2. **Task 是串行执行**:同一个 Play,主机上先跑完 Task1,再跑 Task2 3. **模块(module)**:Task 底层执行者,Task 只是模块的调用包装 # 特点 **幂等性**,多次执行结果一致,只会做必要变更;无客户端,基于SSH;可版本控制(git),可复用。 原文出处:/show_1GW47QCIULHx.html