AWX Tower执行Playbook时报jmespath未安装错误的排查求助
AWX Tower运行Playbook提示jmespath未安装(本地执行正常)
问题背景
在Red Hat Enterprise Linux Server 7.9(Maipo)的Ansible控制节点部署了AWX项目与作业模板,其中一个Playbook包含以下任务:
- name: Filter with json_query the list of current assigned policies of the LDAP user as string separated by comma set_fact: ldap_policy_response: "{{ ldap_user_current_policies.json | community.general.json_query(jmesquery) | join(',') }}" vars: jmesquery: 'data.policies[*]' # ldap_policy_response
该Playbook直接在Ansible控制节点运行时一切正常,但通过AWX Tower执行时触发报错。
报错信息
"You need to install \"jmespath\" prior to running json_query filter"
环境信息
已安装的jmespath版本
Installed Packages python2-jmespath.noarch 0.9.4-2.el7 u/rhel-7-server-epel7-x86_64
Ansible版本详情
ansible 2.9.27 config file = /etc/ansible/ansible.cfg configured module search path = [u'/home/ansible/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /bin/ansible python version = 2.7.5 (default, May 27 2022, 11:27:32) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
原因分析与排查方向
核心原因
AWX Tower的运行环境与本地Ansible使用的系统环境不一致,导致jmespath模块无法被AWX的Python解释器加载。
具体排查步骤
- 检查AWX使用的Python环境:切换到AWX运行用户(通常为
awx),执行python -c "import jmespath; print(jmespath.__version__)",如果报错则说明该环境未安装jmespath。 - 确认执行环境配置:查看作业模板的「执行环境」设置,若使用自定义执行环境(EE),需确保构建EE时已安装jmespath和
community.general集合;若使用默认EE,可尝试重新同步或安装依赖。 - 检查虚拟环境依赖:AWX通常会使用独立的虚拟环境(如
/var/lib/awx/venv/ansible),进入该环境执行pip install jmespath安装缺失的依赖。 - 验证模块路径权限:确认AWX运行用户对系统Python的jmespath模块路径(
/usr/lib/python2.7/site-packages/jmespath)有读取权限,若权限不足需调整。
内容的提问来源于stack exchange,提问作者Viktør Grigørørv
相关产品推荐
相关产品推荐

