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

Ansible synchronize模块返回127错误提示找不到Python该如何解决?

根因定位

你遇到的返回码127报错,核心是运行synchronize模块的环境找不到/usr/bin/python解释器:

  • 你的控制端是Ubuntu 20.04,默认只预装python3,路径为/usr/bin/python3,没有创建/usr/bin/python指向python3的软链接
  • 你配置的interpreter_python = auto_legacy_silent仅作用于远端受控节点的解释器自动发现,synchronize属于本地运行的Action插件,会优先调用控制端的默认python路径,不受该参数控制
  • Ubuntu 14.04默认预装Python2.7,路径为/usr/bin/python,所以远端节点不存在该问题
解决方案

你可以任选以下一种方式修复:

  • 控制端创建Python软链接,执行命令:sudo ln -s /usr/bin/python3 /usr/bin/python,适配所有依赖默认Python路径的Ansible插件
  • 在ansible.cfg的[defaults]块新增全局Python解释器配置:ansible_python_interpreter = /usr/bin/python3,显式指定控制端用的解释器路径
  • 如果确认是远端节点问题,可在Inventory中给HostA单独指定解释器:HostA ansible_python_interpreter=/usr/bin/python2.7
synchronize模块调试方法
  • 执行playbook时追加-vvv参数,会输出模块实际拼接的rsync全量命令、解释器调用路径、执行节点信息,可直接定位是控制端还是远端的问题
  • 追加--check参数执行空跑,不实际修改文件,仅验证配置合法性
手动调用rsync替代方案

如果不想适配synchronize的依赖,可以直接用shell模块在控制端调用原生rsync命令,和你之前手动执行的逻辑完全一致,playbook示例如下:

- name: 同步libexec目录到远端
  delegate_to: localhost
  become: yes
  shell: >
    rsync -e 'ssh -ax' -avz --timeout=20 --delete
    --exclude=check_dhcp --exclude=check_icmp
    {{ libexec_path }}/ root@{{ inventory_hostname }}:{{ libexec_path }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:18:02