RedHat/CentOS 7 上的 Ansible 与 Python3(python3-dnf 问题)

Ast*_*ngo 3 python redhat ansible

我想使用 python3 作为解释器运行 Ansible 任务(为什么要使用 python3 有很多原因......其中之一是 Ansible 将不再支持 python2)。

不幸的是,在 RedHat 7 上这样做是不可能的,因为我无法在那里安装 python3-dnf (似乎这个包仅适用于 RedHat 8)。

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

谢谢

TRW*_*TRW 5

不幸的是,当您构建应可用于 RedHat/Debian/CentOS/... 的角色并且您使用仅在 Python3 中可用的自定义库(因为我们有 2021 年,而 Python2 EoL 是 2020 年)时,Adam 的答案没有帮助。因此,由于yumCentOS7 中缺少对 Python3 的支持,您会遇到依赖地狱问题。

所有主机(无论操作系统)都应使用 Python3 作为ansible_python_interpreter.

所有任务都应使用 Python3 运行(在控制器上或在主机上)。有一个问题(从我今天的观点来看)——任务package。即使它与操作系统无关,它也需要 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 }}"
Run Code Online (Sandbox Code Playgroud)

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