我正面临一个问题与AWX塔的实例。
我在上面有一个项目和作业模板,作业模板连接到正在运行的Ansible控制节点(RedHatEnterpriseLinuxServerRelease7.9 (Maipo)),其中执行了几本剧本。
在其中一本剧本中,我使用了以下任务:
- 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版本
Installed Packages
python2-jmespath.noarch 0.9.4-2.el7 u/rhel-7-server-epel7-x86_64Ansible version details
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)]发布于 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
user:~$ pip list | grep jmespath; echo $?
1
user:~$ sudo su - awx
-bash-4.2$ pip list | grep jmespath; echo $?
1它是为所有用户安装只读的(根下)。
user:~$ sudo pip list | grep jmespath
jmespath (0.9.4)我还没有通过本机OS包管理安装所需的库
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
user:~$ sudo find / -name jmespath
/var/lib/awx/venv/ansible/lib/python2.7/site-packages/jmespath
/usr/lib/python2.7/site-packages/jmespath使用以下任务调试运行时环境
- name: Show environment
debug:
msg: "{{ ansible_env }}"提供类似的输出
...
"PYTHONPATH": "/var/lib/awx/venv/ansible/lib/python2.7/site-packages",
...
"USER": "awx",
"VIRTUAL_ENV": "/var/lib/awx/venv/ansible",
...可能有助于缩小问题范围。
https://stackoverflow.com/questions/73078621
复制相似问题