You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible Playbook在一台GCP Ubuntu VM生效另一台无效果求助

针对Ansible Playbook在相同配置VM上执行无效果的排查方案

核心排查方向及操作步骤

1. 验证目标路径的实际有效性

先确认us3tab02上/home/tableau-admin目录是否真实存在且权限正确:

ansible us3tab02 -m stat -a "path=/home/tableau-admin" -b -u tableau-admin

同时检查该目录的所有者和权限:

ansible us3tab02 -m shell -a "ls -ld /home/tableau-admin" -b -u tableau-admin

如果目录不存在,先创建目录再执行Playbook;如果权限不足,调整目录权限为tableau-admin用户可写。

2. 检查Become执行的实际环境

虽然配置了become_user: tableau-admin,但可能sudo执行时的环境变量或路径解析异常。直接测试sudo无密码执行创建文件的命令:

ansible us3tab02 -m shell -a "sudo -n touch /home/tableau-admin/test.log" -u <你的SSH登录用户>

(替换<你的SSH登录用户>为你实际用Ansible连接的用户)
如果该命令失败,说明tableau-admin用户的sudo配置存在问题,需要检查/etc/sudoers文件,确保该用户拥有无密码sudo权限:

tableau-admin ALL=(ALL) NOPASSWD: ALL

3. 确认Ansible执行时的路径解析

有时候用户的家目录可能不是/home/tableau-admin(比如系统用户的家目录在其他位置),用Ansible获取实际家目录:

ansible us3tab02 -m shell -a "echo ~tableau-admin" -b -u tableau-admin

如果输出不是/home/tableau-admin,修改Playbook中的path为实际家目录路径,比如:

path: "{{ ansible_env.HOME }}/test.log"

或者直接用获取到的实际路径。

4. 排查Ansible事实采集的干扰

尝试关闭gather_facts后重新执行Playbook,避免事实采集过程中引入的环境变量或配置干扰:

---
- name: Create a file in the home directory
  hosts: tab_clusters
  become: true 
  become_user: tableau-admin
  gather_facts: false  # 关闭事实采集
  tasks:
    - name: Create empty file
      file:
        path: "/home/tableau-admin/test.log"
        state: touch
        mode: '0644'

5. 深度分析Ansible执行日志

重新执行Playbook并捕获完整的-vvv日志,重点关注us3tab02的执行片段:

ansible-playbook create-file.yaml -l us3tab02 -vvv > ansible-debug.log

在日志中查找以下关键词:

  • changed: [us3tab02]:如果显示changed=0,说明Ansible认为文件已存在,实际不存在则是路径匹配问题;
  • executing command:查看实际执行的touch命令参数是否正确;
  • sudo相关日志:确认sudo是否成功切换到tableau-admin用户。

内容的提问来源于stack exchange,提问作者Wizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:04:52