执行 Ansible Playbook 本质是用 ansible-playbook 命令调用 YAML 剧本文件,需确保已安装 Ansible、Inventory 文件就绪、Playbook 语法正确、控制节点能免密 SSH 登录目标主机。

在 Linux 中执行 Ansible Playbook,本质就是用 ansible-playbook 命令调用一个 YAML 格式的剧本文件(通常以 .yml 或 .yaml 结尾),让 Ansible 按照定义的步骤在目标主机上完成自动化任务。
确认前提条件是否满足
执行前需确保以下几点已配置好:
-
Ansible 已安装:运行
ansible --version能正常输出版本号;若未安装,可用sudo apt install ansible(Ubuntu/Debian)或sudo yum install ansible(CentOS/RHEL)安装。 -
Inventory 文件就绪:默认为
/etc/ansible/hosts,也可自定义(如inventory.ini),里面列出要管理的主机或主机组。 -
Playbook 文件存在且语法正确:例如
site.yml,可用ansible-playbook --syntax-check site.yml预检语法错误。 -
控制节点能免密登录目标主机:一般通过 SSH 密钥实现(
ssh-copy-id user@host),否则需加-k参数手动输密码。
基本执行命令格式
最常用的一条命令是:
ansible-playbook -i inventory_file playbook.yml
其中:
-
-i指定 inventory 文件路径;省略时默认读取/etc/ansible/hosts。 -
playbook.yml是你要运行的剧本文件名,必须是合法 YAML 格式。 - 可加
-v(或-vv、-vvv)提升输出详细程度,便于调试。 - 加
--limit可限制只对某台主机或主机组运行,例如:--limit webserver。
常用实用选项和场景
日常使用中这些参数很实用:
-
--check:模拟运行(dry-run),不实际更改系统,只报告“将会做什么”。 -
--diff:配合--check使用,显示文件内容将如何变化(比如模板渲染前后差异)。 -
-e "key=value":临时传入变量,覆盖 playbook 中定义的值,例如-e "app_version=2.1.0"。 -
--tags和--skip-tags:按标签执行或跳过特定任务,适合大型 playbook 的分段调试。 -
--start-at-task "task name":从指定任务名开始执行,跳过前面步骤,方便中断后继续。
执行后查看结果与排错
运行完成后,终端会显示每个任务的状态(ok、changed、failed、skipped)。重点关注标红的 failed 行。
常见问题及应对方式:
- SSH 连接失败:检查目标主机是否开机、防火墙是否放行 22 端口、用户权限和密钥是否正确。
-
模块找不到或报错:确认 Ansible 版本兼容该模块(如
community.general中的模块需额外安装插件)。 -
权限不足(如需要 root):在 playbook 中设置
become: true,并确保对应用户有 sudo 权限(或加--become参数)。 -
变量未定义或拼写错误:用
ansible-playbook --extra-vars '{"key":"value"}' --check快速验证变量逻辑。


















