Ansible和Amazon Linux 2:如何将yum模块与Python3结合使用?
我使用Ansible 2.9使用Amazon Linux 2创建EC2实例。出于某些目的,我需要在EC2上安装Python3 所以我使用选项Ansible和Amazon Linux 2:如何将yum模块与Python3结合使用?,python,amazon-web-services,ansible,amazon-linux-2,Python,Amazon Web Services,Ansible,Amazon Linux 2,我使用Ansible 2.9使用Amazon Linux 2创建EC2实例。出于某些目的,我需要在EC2上安装Python3 所以我使用选项ansible\u python\u解释器:“/usr/bin/python3” 但是使用此选项moduleyumreturn errorpkg_mgr:yum-msg:rpm的Python 2绑定是此模块所必需的。如果您需要Python 3支持,请使用'dnf'Ansible模块。 但是Amazon Lunux 2不适用于dnf 同样的问题在这里和其他论坛
ansible\u python\u解释器:“/usr/bin/python3”
但是使用此选项moduleyumreturn errorpkg_mgr:yum-msg:rpm的Python 2绑定是此模块所必需的。如果您需要Python 3支持,请使用'dnf'Ansible模块。
但是Amazon Lunux 2不适用于dnf
同样的问题在这里和其他论坛中也有描述。建议的解决方案是Python2
有没有办法使用Python3和yum?或者唯一的方法是使用shell模块来代替?根据从, 您可以将yum和non-yum任务分开,并仅将python3用于non-yum任务:
- hosts: testsv
gather_facts: no
become: yes
tasks:
# here yum running under python2 without errors
- name: task1
yum:
list: curl
# here yum running under python3
- name: task2
yum:
list: curl
vars:
ansible_python_interpreter: /usr/bin/python3
或者尝试反转条件:
- hosts: testsv
gather_facts: no
become: yes
tasks:
# Run yum under python2, and all other tasks under python3
- name: task2
yum:
list: curl
vars:
ansible_python_interpreter: /usr/bin/python2
根据从,, 您可以将yum和non-yum任务分开,并仅将python3用于non-yum任务:
- hosts: testsv
gather_facts: no
become: yes
tasks:
# here yum running under python2 without errors
- name: task1
yum:
list: curl
# here yum running under python3
- name: task2
yum:
list: curl
vars:
ansible_python_interpreter: /usr/bin/python3
或者尝试反转条件:
- hosts: testsv
gather_facts: no
become: yes
tasks:
# Run yum under python2, and all other tasks under python3
- name: task2
yum:
list: curl
vars:
ansible_python_interpreter: /usr/bin/python2
@rzlvmp的解决方案基本上有效,谢谢。 但是yum无论如何都要使用默认python,因为在/bin/yum中,解释器是
#/usr/bin/python
那么,有两种选择:
ansible\u python\u解释器:/usr/bin/python3
,默认使用Python2
#/usr/bin/python->#/usr/bin/python2
@rzlvmp的解决方案基本上有效,谢谢。 但是yum无论如何都要使用默认python,因为在/bin/yum中,解释器是
#/usr/bin/python
那么,有两种选择:
ansible\u python\u解释器:/usr/bin/python3
,默认使用Python2
#/usr/bin/python->#/usr/bin/python2
yum尚未移植到python3。必须使用python 2。尚未将yum移植到python 3。您必须使用python 2。