Ansible Playbook

type
status
date
slug
summary
tags
category
icon
password

一、核心概念速览

术语
说明
Playbook
一个或多个 play 的集合,使用 YAML 格式编写,描述对被管理主机的操作序列。
Play
针对一组 hosts 执行的任务集合,可包含 hosts、vars、tasks、handlers 等。
Task
使用模块(如 yumuser)完成具体操作,设计为幂等性。
Facts
setup 模块收集的主机环境信息(如 IP、主机名等),可在 playbook 中引用。

二、YAML 语法要点

✅ 必须遵守的规则:

  • 冒号后必须有空格:key: value
  • 禁止使用 Tab,必须使用空格缩进(建议 2 空格)
  • 缩进必须一致
  • 列表项以 开头,子项缩进对齐

❌ 错误示例:

✅ 正确示例:


三、Playbook 结构与常用模块

3.1 基础模板

3.2 运行 Playbook

常见状态:

  • ok:任务已检查,无需更改
  • changed:任务已执行并改变状态
  • failed:任务失败,需排查

四、Facts 收集与使用

查看 Facts:

禁用自动收集:

建议:

使用通用 Facts(如 ansible_default_ipv4.address),避免硬编码接口名。

五、变量定义与加密

5.1 Playbook 内定义

5.2 Inventory 中定义(INI)

5.3 外部变量文件

引入:

5.4 变量加密


六、Jinja2 模板与 template 模块

模板文件:my.cnf.j2

推送模板:


七、Handlers 与 notify

定义 Handler:

触发 Handler:


八、条件判断、注册变量与错误处理

8.1 使用 when 条件

8.2 使用 registerignore_errors


九、循环 loop

简单列表循环:

字典循环:


十、常用命令速查

命令
说明
ansible <host> -m setup
手动查看 facts
ansible-playbook playbook.yml
运行 playbook
ansible-playbook playbook.yml --check --diff
模拟运行(dry-run)
ansible-vault encrypt file.yml
加密变量文件
ansible-vault decrypt file.yml
解密变量文件

常用模块:

  • yum / apt:安装软件包
  • user:管理用户
  • service:管理服务
  • copy:复制文件
  • template:渲染并推送模板
  • shell / command:执行命令(慎用)
  • debug:调试输出
  • setup:收集 facts

Loading...