首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible AWX发行- JMESPATH

Ansible AWX发行- JMESPATH
EN

Stack Overflow用户
提问于 2022-07-22 10:10:16
回答 1查看 191关注 0票数 2

我正面临一个问题与AWX塔的实例。

我在上面有一个项目和作业模板,作业模板连接到正在运行的Ansible控制节点(RedHatEnterpriseLinuxServerRelease7.9 (Maipo)),其中执行了几本剧本。

在其中一本剧本中,我使用了以下任务:

代码语言:javascript
复制
- 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

当我从直接运行剧本时,一切正常,jmesquery就会执行。

我在服务器上安装了一个jmespath,但是当我试图从AWX运行这些剧本时,上面提到的任务失败了,抛出了错误

"You need to install \"jmespath\" prior to running json_query filter"

你知道这种行为的原因是什么吗?问题是什么?

jmespath版本

代码语言:javascript
复制
Installed Packages
python2-jmespath.noarch   0.9.4-2.el7   u/rhel-7-server-epel7-x86_64

Ansible version details

代码语言:javascript
复制
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)]
EN

回答 1

Stack Overflow用户

发布于 2022-07-26 15:24:05

在类似的环境(RHEL7.9.5、Ansible 2.9.27、Python2.7.5)中,我运行了一个包含用于测试的json_query的小游戏簿,并发现它执行时没有错误。

我在服务器上安装了一个"jmespath“,但是当我试图从AWX运行这些剧本时,上面提到的任务失败了,引发了错误- You need to install \"jmespath\" prior to running json_query filter

我的剧本正在运行,而您正在收到错误的原因可能是环境。

因此,无论是在我的用户下,还是在用户Ansible下运行(awx),都安装了package

代码语言:javascript
复制
user:~$ pip list | grep jmespath; echo $?
1
user:~$ sudo su - awx
-bash-4.2$ pip list | grep jmespath; echo $?
1

它是为所有用户安装只读的(根下)。

代码语言:javascript
复制
user:~$ sudo pip list | grep jmespath
jmespath (0.9.4)

我还没有通过本机OS包管理安装所需的库

代码语言:javascript
复制
user:~$ sudo yum provides jmespath
...
python2-jmespath-0.9.0-3.el7.noarch : JSON Matching Expressions
Repo        : EXTRAS
Matched from:
Filename    : /usr/lib/python2.7/site-packages/jmespath
...
python2-jmespath-0.9.4-2.el7.noarch : JSON Matching Expressions
Repo        : EPEL-7
Matched from:
Filename    : /usr/lib/python2.7/site-packages/jmespath
...

user:~$ sudo yum list installed jmespath; echo $?
Error: No matching Packages to list
1

但通过pip

代码语言:javascript
复制
user:~$ sudo find / -name jmespath
/var/lib/awx/venv/ansible/lib/python2.7/site-packages/jmespath
/usr/lib/python2.7/site-packages/jmespath

使用以下任务调试运行时环境

代码语言:javascript
复制
- name: Show environment
  debug:
    msg: "{{ ansible_env }}"

提供类似的输出

代码语言:javascript
复制
...
            "PYTHONPATH": "/var/lib/awx/venv/ansible/lib/python2.7/site-packages", 
...
            "USER": "awx", 
            "VIRTUAL_ENV": "/var/lib/awx/venv/ansible", 
...

可能有助于缩小问题范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73078621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档