Ansible Playbook 语法全解(Nginx实战版)

📅 2026/7/16 16:09:56 👁️ 阅读次数 📝 编程学习
Ansible Playbook 语法全解(Nginx实战版)

文章目录

  • 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配置示例)
      • 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 格式,有两条不可突破的底层规则:

  1. 顶层必须是列表:文件最外层是-开头的列表,每个列表元素是一个「Play」;
  2. 缩进代表层级:统一用 2 个空格表示子层级,禁止使用 Tab 键,同层级元素必须左对齐。

你之前遇到的got a AnsibleMapping报错,本质就是顶层写成了字典,不符合 Playbook 「顶层为列表」的强制要求。

2. 最简 Nginx Playbook 示例

先看一个最小可运行的 Playboo