Linux 命令速查
云原生 man ansible-playbook

ansible-playbook

运行 Ansible 剧本(playbook)的执行器

返回

补充说明

ansible-playbook 是 Ansible 的命令行执行器,用于运行用 YAML 编写的 playbook(剧本)。playbook 是 Ansible 的核心自动化载体:它描述“在哪些主机上(hosts)、执行哪些任务(tasks)、由哪些变量(vars)驱动、如何响应变更(handlers)”,ansible-playbook 将其翻译为对目标主机的操作。

Ansible 属于 Red Hat(现 IBM)维护的开源配置管理套件,采用无代理(agentless)架构:通过 SSH 连接到目标主机执行任务,无需在目标机上预装客户端。典型场景包括批量软件部署、系统配置、应用发布和运维编排。

playbook 的命令行参数与 ansible(单次 ad-hoc 命令)不同:ansible 直接指定模块和参数,而 ansible-playbook 只接受剧本文件路径。通常需要配合 -K(询问 sudo 密码,配合剧本中的 become 使用)和 -i(指定 inventory 主机清单)运行;在 Ansible 2.9 及更早版本中,还需要 -k 询问 SSH 密码。

语法

ansible-playbook [选项] playbook.yml

选项

-i, --inventory FILE       # 指定 inventory 主机清单文件(默认 /etc/ansible/hosts)
-K, --ask-become-pass      # 询问 sudo/become 密码
-k, --ask-pass             # 询问 SSH 密码(Ansible 2.9 及更早版本)
--syntax-check             # 只检查剧本语法,不实际执行
-C, --check                # 演练模式:只做“预测”,不真正改动目标机
--list-tasks               # 列出剧本中将要执行的任务
--list-hosts               # 列出剧本将作用于哪些主机
-v / -vv / -vvv            # 提高输出详细程度(-vvv 显示模块的详细输入输出)

实例

# 只检查语法,不执行
ansible-playbook site.yml --syntax-check

# 对全部主机执行剧本,并提示输入 sudo 密码
ansible-playbook site.yml -K

# 限定在 web 组上执行
ansible-playbook site.yml -i hosts --limit web

# 演练模式(不真正修改目标主机)
ansible-playbook site.yml -C

# 模拟部署 web 应用:先检查语法,再不带 -K 执行
ansible-playbook deploy.yml --syntax-check
ansible-playbook deploy.yml

一个最小 playbook 示例(site.yml):

---
- hosts: webservers
  become: yes
  vars:
    http_port: 80
  tasks:
    - name: 安装 nginx
      apt:
        name: nginx
        state: present
  handlers:
    - name: 重启 nginx
      service:
        name: nginx
        state: restarted