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 单节点验证,再逐步扩大范围。

相关推荐
雾沉川17 小时前
WinRAR 压缩解压软件 功能介绍、硬件适配、横向对比及安装使用教程
windows·winrar·压缩软件
sukalot19 小时前
windows 驱动实例分析系列: wireguard-nt驱动分析-driver篇(一)
windows·驱动开发
百事牛科技19 小时前
Excel部分单元格禁止修改:锁住该锁的,放开该放的
windows·excel
水饺编程20 小时前
第5章,[Win32 章节] :创建、选择和删除画笔
c语言·c++·windows·visual studio
曹牧21 小时前
C#与Java后台交互
java·windows·microsoft·c#
꯭爿꯭巎꯭21 小时前
视频画质修复软件
windows
凯哥Java1 天前
ChatGPT Windows 客户端突然打不开?提示找不到 Codex CLI,我这样解决了
windows·chatgpt
薛定猫AI2 天前
OpenAI Codex本地完整配置教程|(Windows/Mac/Linux全平台,修复鉴权报错)
linux·windows·macos
w01_02_032 天前
deepseek, harness , windows , 安装。
windows
辻弋2012 天前
手动关服务会自动重启、组策略家庭版用不了——Windows Update Blocker用“禁用+锁定”双保险,让Win10/11自动更新彻底闭嘴
服务器·人工智能·windows·电脑·开源软件