ansible-playbook常用的检查命令

在执行 ansible-playbook 之前,建议按下面顺序检查。

1. 检查 Ansible 版本

bash 复制代码
ansible --version

用于确认:

  • Ansible 是否安装。
  • Python 使用哪个环境。
  • 配置文件位置。
  • 默认 inventory。
  • 默认 forks 数量。

2. 检查 inventory 是否能解析

bash 复制代码
ansible-inventory -i inventory.ini --graph

查看完整变量:

bash 复制代码
ansible-inventory -i inventory.ini --list

用于确认:

  • 主机是否被正确识别。
  • 主机组是否正确。
  • ansible_hostansible_user 等变量是否生效。
  • 是否因为 inventory 格式错误导致没有主机。

3. 只显示本次会操作哪些主机

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  --list-hosts

避免因为主机组写错,把任务执行到不应该操作的机器。

也可以限制范围:

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  --limit ds-master

4. 检查 Playbook 语法

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  --syntax-check

主要检查:

  • YAML 缩进。
  • hoststasks 等结构。
  • 模块参数格式。
  • Jinja2 表达式基本语法。

注意:语法检查不会连接远程主机,也不会验证远程路径是否存在。


5. 查看任务列表

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  --list-tasks

用于确认任务执行顺序,特别适合检查:

  • 是否包含重启服务。
  • 是否包含删除文件。
  • 是否包含修改配置。
  • 是否遗漏某个任务。

如果 Playbook 使用了 tags:

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  --list-tags

6. 先做连接测试

bash 复制代码
ansible all \
  -i inventory.ini \
  -m ansible.builtin.ping

检查指定组:

bash 复制代码
ansible kafka \
  -i inventory.ini \
  -m ansible.builtin.ping

如果需要检查远端基本环境:

bash 复制代码
ansible all -i inventory.ini \
  -m ansible.builtin.command \
  -a 'hostname'

查看用户:

bash 复制代码
ansible all -i inventory.ini \
  -m ansible.builtin.command \
  -a 'whoami'

查看 Python:

bash 复制代码
ansible all -i inventory.ini \
  -m ansible.builtin.command \
  -a 'python3 --version'

7. 使用 Check Mode 预演

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  --check

--check 会尽量模拟执行结果,但不真正修改远程系统。

常用于确认:

  • 哪些文件会变化。
  • 哪些目录会创建。
  • 哪些服务状态会改变。
  • 哪些任务会被标记为 changed。

不过不是所有模块都完全支持 check mode,尤其是某些 shell、第三方模块和自定义脚本。


8. 查看配置文件差异

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  --check \
  --diff

对于 templatecopy 等模块,可以看到远端文件修改前后的差异。

示例:

yaml 复制代码
- name: Deploy Kafka configuration
  ansible.builtin.template:
    src: server.properties.j2
    dest: /opt/datasophon/kafka-2.4.1/config/server.properties
    backup: true

使用 --check --diff 可以先确认配置变化是否符合预期。


9. 检查 Vault 密码是否可用

如果使用了 ansible-vault

bash 复制代码
ansible-vault view group_vars/all/vault.yml

执行前验证变量能否解密:

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  --syntax-check \
  --ask-vault-pass

或者:

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  --check \
  --ask-vault-pass

10. 检查远端权限和 become

检查当前远端用户:

bash 复制代码
ansible all -i inventory.ini \
  -m ansible.builtin.command \
  -a 'whoami'

检查是否能提权:

bash 复制代码
ansible all -i inventory.ini \
  -b \
  -m ansible.builtin.command \
  -a 'whoami'

如果返回:

text 复制代码
root

说明 become 配置正常。


11. 检查变量值

查看某台主机最终变量:

bash 复制代码
ansible-inventory \
  -i inventory.ini \
  --host ds-master

使用临时变量:

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  -e 'deploy_env=test'

注意不要在终端参数中直接传密码,因为可能出现在 shell 历史记录中。


12. 使用 ansible-lint 检查质量

如果安装了 ansible-lint

bash 复制代码
ansible-lint playbook.yml

可以发现:

  • 模块没有写全限定名。
  • 使用了不推荐的 shell
  • 变量命名问题。
  • 权限和幂等性问题。
  • Playbook 风格问题。

例如推荐:

yaml 复制代码
ansible.builtin.copy:

而不是:

yaml 复制代码
copy:

推荐的完整检查顺序

bash 复制代码
ansible --version

ansible-inventory -i inventory.ini --graph

ansible-playbook -i inventory.ini playbook.yml --syntax-check

ansible-playbook -i inventory.ini playbook.yml --list-hosts

ansible-playbook -i inventory.ini playbook.yml --list-tasks

ansible all -i inventory.ini -m ansible.builtin.ping

ansible-playbook -i inventory.ini playbook.yml --check --diff

ansible-lint playbook.yml

确认没有问题后,再正式执行:

bash 复制代码
ansible-playbook \
  -i inventory.ini \
  playbook.yml \
  --limit ds-master

涉及 Doris、Kafka、ZooKeeper、DolphinScheduler 等集群服务时,建议先用 --limit 单节点验证,再逐步扩大范围。

相关推荐
视觉AI3 小时前
VS Code Remote-SSH 连接Jetson踩坑完整解决记录(网段不通+主机密钥变更双重故障)
运维·网络·人工智能·windows·ssh·边缘计算
观远数据10 小时前
从离线开发到实时同步:DataFlow如何支撑企业级数据治理闭环
java·windows·microsoft·excel
绀目澄清10 小时前
私服网游云加速程序劫持流量排查与修复总结
windows·安全
FL162386312910 小时前
Windows手动下载安装配置uv 0.11.29配置国内源含安装包和安装教程
windows·uv
Jelena1577958579211 小时前
淘宝商品详情API接口开发指南:应用市场选品比价实战
windows·microsoft
乖巧的妹子12 小时前
刷题总结知识
linux·服务器·windows
小李云雾12 小时前
LangGraph[2] ---- 控制流与持久化:让图“活”起来
windows·程序人生·ai·langgraph
取经蜗牛12 小时前
Windows 下强制腾讯通 RTX 仅使用有线网卡(静态路由法)
windows
Starry-sky(jing)16 小时前
如何判断 Windows 是否安装 Node.js:三种方法 + 常见漏判场景
运维·windows·node.js·环境检测