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

Ansible忽略命令行ansible_python_interpreter参数 无清单如何指定Python版本

前置说明

你测试时添加-e 'ansible_python_interpreter=/usr/bin/python3.6'参数后ansible --version输出无变化属于正常现象:ansible_python_interpreter是用来指定Ansible在目标主机执行模块时调用的Python解释器,不会改变Ansible控制程序本身运行依赖的Python版本,ansible --version显示的是后者的版本。Ubuntu 18.04官方源的Ansible包默认基于Python2打包,所以默认会用Python2.7启动控制程序。

可行解决方案(按改动成本从低到高排序)

方案1:显式用Python3.6调用Ansible命令

无需修改任何现有配置逻辑,仅需要把原来调用ansible/ansible-playbook的命令替换为如下格式即可:

/usr/bin/python3.6 /usr/bin/ansible <原有参数>

如果是Packer调用Ansible,直接在Ansible provisioner的command参数中配置上述完整命令即可,不需要改动其他流水线逻辑。

方案2:修改Ansible执行文件的Shebang(最推荐,零业务配置改动)

仅需要在CI环境初始化阶段执行一行命令,直接修改Ansible入口文件的默认解释器:

sed -i '1s@^#\!/usr/bin/env python.*@#\!/usr/bin/python3.6@' /usr/bin/ansible /usr/bin/ansible-playbook

执行完成后再运行ansible --version即可看到Python版本已经切换为3.6,完全不需要修改Packer配置或者流水线YAML文件。
注意:如果后续执行apt upgrade更新Ansible软件包,该修改会被覆盖,你可以把这行命令直接加入CI环境的初始化脚本中,每次运行前自动执行一次即可。

方案3:调整系统Python默认版本(仅适合一次性CI环境)

如果你的流水线运行环境是临时生成的CI实例,没有其他依赖Python2的服务,可以通过update-alternatives配置系统默认Python版本:

# 注册Python3.6为可选版本
update-alternatives --install /usr/bin/python python /usr/bin/python3.6 10
# 执行后根据交互提示选择Python3.6为默认版本即可

补充:指定目标节点执行模块的Python版本

如果你同时需要调整Ansible在目标节点执行模块用的Python版本,又无法使用清单文件,可以直接修改/etc/ansible/ansible.cfg配置:

[defaults]
interpreter_python = /usr/bin/python3.6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:45:05