Ansible似乎没有从清单文件加载Ansible_python_解释器=/usr/bin/python3变量
当我将主机的ansible_python_解释器的值设置为/usr/bin/python3时,ansible playbook似乎仍然使用指向python2.7的/usr/bin/python 我从-vvv得到这个,输出显示Ansible似乎没有从清单文件加载Ansible_python_解释器=/usr/bin/python3变量,ansible,ansible-2.x,Ansible,Ansible 2.x,当我将主机的ansible_python_解释器的值设置为/usr/bin/python3时,ansible playbook似乎仍然使用指向python2.7的/usr/bin/python 我从-vvv得到这个,输出显示 Using module file /usr/lib/python2.7/site-packages/ansible/modules/cloud/vmware/vmware_guest.py 我在yml文件中加入了一个调试,用于输出变量,它返回: "ansible_pyt
Using module file /usr/lib/python2.7/site-packages/ansible/modules/cloud/vmware/vmware_guest.py
我在yml文件中加入了一个调试,用于输出变量,它返回:
"ansible_python_interpreter": "/usr/bin/python3"
ansible --version
ansible 2.8.2
config file = /ansible/automation/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules',
'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/lib/python3.6/site-
packages/ansible
executable location = /usr/local/bin/ansible
python version = 3.6.8 (default, Apr 25 2019, 21:02:35) [GCC 4.8.5
20150623 (Red Hat 4.8.5-36)]
我已将库存文件中的位置移动为第一个变量,并将其作为组变量添加,但没有添加任何变量
当我使用-e ansible_python_解释器=/usr/bin/python3运行ansible playbook命令时,脚本运行正常
库存文件
[控制]
ansible_连接=本地
ansible_python_解释器=/usr/bin/python3
yml摘录
---
-主持人:控制
收集事实:错误
任务:
-名称:调试变量
调试:
var:ansible_python_intrepreter
-名称:从Windows模板克隆虚拟机并自定义
vmware_来宾:
主机名:“{{hostname}}”
用户名:“{{username}}”
密码:{{password}}
验证证书:否
数据中心:一些数据中心
集群:一些集群
文件夹:“一些文件夹”
姓名:某主机
模板:一些模板
数据存储:“一些数据存储”
网络:
-名称:一些网络名称
ip:x.x.x.x
网络掩码:255.255.255.0
网关:x.x.x.x
mac:aa:bb:dd:aa:00:14
域名:domain.com
dns_服务器:
-x.x.x.x
-x.x.x.x
当进程运行时,我得到这个错误
“未能在Python/usr/bin/python2上导入所需的Python库(请求)”变量必须与主机位于同一行
[control]
REDACTED_HOST_NAME ansible_connection=local ansible_python_interpreter=/usr/bin/python3
使用组变量更方便
[control]
REDACTED_HOST_NAME
[control:vars]
ansible_connection=local
ansible_python_interpreter=/usr/bin/python3
与主持人
戏
- hosts: localhost
gather_facts: no
tasks:
- debug:
msg: "{{ hostvars['REDACTED_HOST_NAME'].ansible_python_interpreter }}"
给予
,但与下面的主机
localhost
[control]
REDACTED_HOST_NAME ansible_connection=local
ansible_python_interpreter=/usr/bin/python3
同样的戏失败了
'ansible.vars.hostvars.HostVarsVars object' has no attribute 'ansible_python_interpreter'
变量在一行上。由于某种原因,当我把第二个变量放到帖子中时,它掉到了第二行。调试确实会按预期返回,而yml的其余部分会恢复为python2。我只是通过从/usr/local/bin显式调用ansible playbook命令来运行它,活动成功完成。“which ansible playbook”命令声称它位于/usr/local/bin中,因此它应该运行python3.6。我运行了ansible playbook——版本,它使用python2.7返回,但如果运行/usr/local/bin/ansible playbook,它将返回python3.6
localhost
[control]
REDACTED_HOST_NAME ansible_connection=local
ansible_python_interpreter=/usr/bin/python3
'ansible.vars.hostvars.HostVarsVars object' has no attribute 'ansible_python_interpreter'