在RedHat/CentOS 7上与Python3兼容(Python3 dnf发行版)

在RedHat/CentOS 7上与Python3兼容(Python3 dnf发行版),python,ansible,redhat,Python,Ansible,Redhat,我希望使用python3作为解释器来运行Ansible任务(有很多理由说明为什么要使用python3…其中之一是Ansible将不再支持python2) 不幸的是,在RedHat 7上这样做是不可能的,因为我无法在那里安装python3 dnf(看起来这个包只适用于RedHat 8) 有没有人遇到过这个问题并找到了解决方案 谢谢我是负责yum和dnf模块的Ansible维护者之一。Python2将继续支持远程主机(您正在自动执行任务的资源清册中的主机),但不支持控制器节点(您正在实际运行ansi

我希望使用python3作为解释器来运行Ansible任务(有很多理由说明为什么要使用python3…其中之一是Ansible将不再支持python2)

不幸的是,在RedHat 7上这样做是不可能的,因为我无法在那里安装python3 dnf(看起来这个包只适用于RedHat 8)

有没有人遇到过这个问题并找到了解决方案


谢谢

我是负责yum和dnf模块的Ansible维护者之一。Python2将继续支持远程主机(您正在自动执行任务的资源清册中的主机),但不支持控制器节点(您正在实际运行ansible playbook命令的节点)。只要您从Python3上的控制节点运行Ansible,您就可以在远程RHEL7主机上安全地继续使用Python2,即使对于Ansible的当前稳定版本(撰写本文时为2.9.10),该限制也不存在,但仅适用于将来的版本。希望这对你有帮助,快乐自动化

不幸的是,Adam的回答在您构建应该可用于RedHat/Debian/CentOS/的角色时没有帮助。。。您使用的自定义库仅在Python3中可用(因为我们有2021和Python2 EoL是2020)。因此,由于CentOS7中缺少对
yum
的Python3支持,您会遇到依赖性问题

所有主机(无论是什么操作系统)都应该使用Python3作为
ansible\u python\u解释器

所有任务都应该使用Python3(在控制器上或主机上)运行。有一个问题(从我今天的观点来看)-任务
。即使是独立于操作系统的,它也需要CentOS7上的Python2(在所有其他操作系统上,Python3都没有问题)

我所做的-仅针对此模块-在您的主机位于CentOS7上时切换到Python2。例如:

- name: "Define Python Interpreter"
  set_fact:
    my_interpreter: "{{ ansible_python_interpreter }}"

- name: "Override Python Interpeter for CentOS7"
  set_fact:
    my_interpreter: "/usr/bin/python"
  when:
    - "ansible_distribution == 'CentOS'"
    - "ansible_distribution_major_version | int == 7"

- name: "Install dependencies"
  package:
    name: "...."
  become: true
  vars:
    ansible_python_interpreter: "{{ my_interpreter }}"

在所有其他情况下,请使用您配置的特定于主机的Python解释器。

在搜索引擎中键入“python3 redhat7”时的第一个非赞助结果=>Nice。。。但也许你没有看到问题所在。。。rhel7上没有python3,但有python3 dnf:-)标题:
与RedHat/CentOS 7上的python3兼容。第一句话:
我想用python3作为解释器运行Ansible任务
。你只是指出你不能安装python3 dnf。。。实际上,您不需要在rhel7上的python3上运行ansible。我每天在centos7和rhel7上运行python3(控制器和目标)上的ansible。。。python3不支持使用yum。。。为此,我们需要dnf。。。使用dnf。。。没有python3 dnf。。。这是不可能的:-)这是有意义的。非常感谢。