Ansible "ansible_python_interpreter" 错误
Ansible "ansible_python_interpreter" Error
我想用ansible安装influxdb和配置。
文件复制和influxdb配置没问题
但是创建数据库和用户创建部分会出现“ansible_python_interpreter”错误。
我搜索了这个错误并尝试了一些方法,但我自己无法解决这个问题
这是我的 ansible 主机文件
[loadbalancer]
lb ansible_host=192.168.255.134
[loadbalancer:vars]
ansible_python_interpreter="/usr/bin/python3"
#ansible_python_interpreter="/usr/bin/env python"
#ansible_python_interpreter="/usr/libexec/platform-python"
这是我的 yaml 文件
# influxdb install and configuration
---
- hosts: lb
become: true
tasks:
- name: Copy Repo Files
copy:
src: ./files/influxdb.j2
dest: /etc/yum.repos.d/influxdb.repo
remote_src: no
- name: Install Influxdb
yum:
name: influxdb
state: latest
notify:
influxdb_ok
- name: Crete Database
community.general.influxdb_database:
hostname: 192.168.255.134
database_name: deneme
- name: Create User
community.general.influxdb_user:
user_name: deneme_user
user_password: deneme123
handlers:
- name: Start Influx Service
service:
name: influxdb
state: started
enabled: yes
listen: influxdb_ok
我试图安装 python3 远程虚拟机 (lb)。
我试图更改解释器参数。
我试图用 pip3 安装请求模块。
[root@centos8 influx]# ansible-playbook influxdb.yaml -K
BECOME password:
PLAY [lb] ***********************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************
ok: [lb]
TASK [Copy Repo Files] **********************************************************************************************
ok: [lb]
TASK [Install Influxdb] *********************************************************************************************
ok: [lb]
TASK [Crete Database] ***********************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ModuleNotFoundError: No module named 'requests'
fatal: [lb]: FAILED! => {"changed": false, "msg": "Failed to import the required Python library (requests) on loadbalancer.servicepark.local's Python /usr/bin/python3. Please read the module documentation and install it in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter"}
PLAY RECAP **********************************************************************************************************
lb : ok=3 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
我尝试安装请求模块和当前 ansible 版本
现在我的ansible机器版本
[root@centos8 influx]# python3 --version
Python 3.6.8
[root@centos8 influx]# ansible --version
ansible 2.10.1
config file = /etc/ansible/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/bin/ansible
python version = 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
lb 虚拟机的版本
[root@loadbalancer ~]# influx --version
InfluxDB shell version: 1.8.2
[root@loadbalancer ~]# python3 --version
Python 3.6.8
这对我有用。
- name: Install requests python package
pip:
name: requests
vars:
ansible_python_interpreter: /usr/bin/python3
如果您在远程主机上遇到此问题,有 3 种方法可以解决:
- 设置 ansible_python_interpreter: /usr/bin/python3 变量给所有默认安装了 python3 的主机
- 使用 Ansible 的原始模块安装 Python2
- 符号链接 /usr/bin/python3 到 /usr/bin/python 使用 Ansible 的原始模块。
所有 3 个选项都可以在 Ansible 中完成,无需通过 sshing 进入主机。
例子
- name: misc task on ubuntu 18.04 instance
hosts: "*"
vars:
ansible_python_interpreter: /usr/bin/python3
tasks:
- debug: var=ansible_host
选项 3 - 符号链接 /usr/bin/python -> /usr/bin/python3 使用 Ansible 的原始模块
与选项 2 类似的另一个选项是使用原始模块来“符号链接”/usr/bin/python -> /usr/bin/python3.
借助一些 shell 魔法,我们可以设计一个命令,根据是否存在任何一个文件使用条件来有条件地执行此操作:
if [ -f /usr/bin/python3 ] && [ ! -f /usr/bin/python ]; then
ln --symbolic /usr/bin/python3 /usr/bin/python;
fi
我想用ansible安装influxdb和配置。 文件复制和influxdb配置没问题 但是创建数据库和用户创建部分会出现“ansible_python_interpreter”错误。
我搜索了这个错误并尝试了一些方法,但我自己无法解决这个问题
这是我的 ansible 主机文件
[loadbalancer]
lb ansible_host=192.168.255.134
[loadbalancer:vars]
ansible_python_interpreter="/usr/bin/python3"
#ansible_python_interpreter="/usr/bin/env python"
#ansible_python_interpreter="/usr/libexec/platform-python"
这是我的 yaml 文件
# influxdb install and configuration
---
- hosts: lb
become: true
tasks:
- name: Copy Repo Files
copy:
src: ./files/influxdb.j2
dest: /etc/yum.repos.d/influxdb.repo
remote_src: no
- name: Install Influxdb
yum:
name: influxdb
state: latest
notify:
influxdb_ok
- name: Crete Database
community.general.influxdb_database:
hostname: 192.168.255.134
database_name: deneme
- name: Create User
community.general.influxdb_user:
user_name: deneme_user
user_password: deneme123
handlers:
- name: Start Influx Service
service:
name: influxdb
state: started
enabled: yes
listen: influxdb_ok
我试图安装 python3 远程虚拟机 (lb)。 我试图更改解释器参数。 我试图用 pip3 安装请求模块。
[root@centos8 influx]# ansible-playbook influxdb.yaml -K
BECOME password:
PLAY [lb] ***********************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************
ok: [lb]
TASK [Copy Repo Files] **********************************************************************************************
ok: [lb]
TASK [Install Influxdb] *********************************************************************************************
ok: [lb]
TASK [Crete Database] ***********************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ModuleNotFoundError: No module named 'requests'
fatal: [lb]: FAILED! => {"changed": false, "msg": "Failed to import the required Python library (requests) on loadbalancer.servicepark.local's Python /usr/bin/python3. Please read the module documentation and install it in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter"}
PLAY RECAP **********************************************************************************************************
lb : ok=3 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
我尝试安装请求模块和当前 ansible 版本
现在我的ansible机器版本
[root@centos8 influx]# python3 --version
Python 3.6.8
[root@centos8 influx]# ansible --version
ansible 2.10.1
config file = /etc/ansible/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/bin/ansible
python version = 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
lb 虚拟机的版本
[root@loadbalancer ~]# influx --version
InfluxDB shell version: 1.8.2
[root@loadbalancer ~]# python3 --version
Python 3.6.8
这对我有用。
- name: Install requests python package
pip:
name: requests
vars:
ansible_python_interpreter: /usr/bin/python3
如果您在远程主机上遇到此问题,有 3 种方法可以解决:
- 设置 ansible_python_interpreter: /usr/bin/python3 变量给所有默认安装了 python3 的主机
- 使用 Ansible 的原始模块安装 Python2
- 符号链接 /usr/bin/python3 到 /usr/bin/python 使用 Ansible 的原始模块。
所有 3 个选项都可以在 Ansible 中完成,无需通过 sshing 进入主机。
例子
- name: misc task on ubuntu 18.04 instance
hosts: "*"
vars:
ansible_python_interpreter: /usr/bin/python3
tasks:
- debug: var=ansible_host
选项 3 - 符号链接 /usr/bin/python -> /usr/bin/python3 使用 Ansible 的原始模块 与选项 2 类似的另一个选项是使用原始模块来“符号链接”/usr/bin/python -> /usr/bin/python3.
借助一些 shell 魔法,我们可以设计一个命令,根据是否存在任何一个文件使用条件来有条件地执行此操作:
if [ -f /usr/bin/python3 ] && [ ! -f /usr/bin/python ]; then
ln --symbolic /usr/bin/python3 /usr/bin/python;
fi