文章目录
- Ansible Playbook 语法全解(Nginx实战版)
- 一、Playbook 整体结构与核心规范
- 1. 最基础的结构规则
- 2. 最简 Nginx Playbook 示例
- 3. Playbook 标准完整结构
- 二、Play 级核心字段语法详解
- 1. `name`:Play 描述
- 2. `hosts`:指定目标主机
- 3. `become`:权限提升
- 4. `gather_facts`:Facts 采集开关
- 5. `vars`:Play 内变量定义
- 6. `vars_files`:引入外部变量文件
- 三、任务(Tasks)编写语法
- 1. 任务标准格式
- 2. 模块参数的两种写法
- 3. 任务执行核心原则
- 4. Nginx 全流程任务示例
- 5. 最佳实践
- 四、变量体系完整语法
- 1. 变量命名规则
- 2. 5种变量定义方式(Nginx场景)
- 方式1:Play 内 vars 段落定义
- 方式2:外部变量文件引入
- 方式3:命令行传入(`-e` 参数)
- 方式4:主机清单变量
- 方式5:Facts 内置变量
- 3. 变量引用规则
- 4. 实用过滤器与默认值
- 五、Handlers 处理器语法
- 1. 核心特性
- 2. 定义与触发语法
- 定义:写在 `handlers` 段落,和 tasks 同级
- 触发:普通任务中用 `notify` 关键字
- 3. Nginx 经典场景:配置变更才重启
- 4. 高频踩坑
- 六、Templates 模板语法
- 1. 核心作用
- 2. template 模块基础用法
- 3. Jinja2 三大核心语法(Nginx配置示例)
- (1)变量渲染:`{ { 变量名 }}`
- (2)条件判断:`{% if %} ... {% endif %}`
- (3)循环:`{% for %} ... {% endfor %}`
- 4. 模板注释
- 七、条件判断与循环语法
- 1. 条件判断:`when` 语句
- (1)单条件判断
- (2)多条件组合
- 2. 循环:`loop` 语句
- (1)简单列表循环:批量开放端口
- (2)字典循环:批量创建站点目录
- 3. 循环 + 条件组合
- 八、完整综合实战:企业级 Nginx 部署 Playbook
- 1. 模板文件 `/root/nginx.conf.j2`
- 2. Playbook 文件 `/home/yaml/nginx_deploy.yml`
- 3. 标准执行流程
- 九、高频语法错误排查
- 十、进阶实用语法补充
- 1. `tags` 标签:指定执行部分任务
- 2. `register` + `debug`:捕获并打印任务输出
- 3. `ignore_errors: yes`:忽略非关键任务失败
Ansible Playbook 语法全解(Nginx实战版)
适配环境:CentOS 7.9 +
test主机分组(172.16.15.137/180)+ 全局sudo提权 + Python3 解释器
所有代码可直接复制运行,全程以「Nginx 企业级部署」为实战场景,从基础结构到进阶语法逐层拆解,每个语法点都对应可落地的业务场景。
一、Playbook 整体结构与核心规范
1. 最基础的结构规则
Playbook 采用 YAML 格式,有两条不可突破的底层规则:
- 顶层必须是列表:文件最外层是
-开头的列表,每个列表元素是一个「Play」; - 缩进代表层级:统一用 2 个空格表示子层级,禁止使用 Tab 键,同层级元素必须左对齐。
你之前遇到的
got a AnsibleMapping报错,本质就是顶层写成了字典,不符合 Playbook 「顶层为列表」的强制要求。
2. 最简 Nginx Playbook 示例
先看一个最小可运行的 Playboo