Ansible 在 RedHat/CentOS 7 上使用 Python3(python3-dnf 问题)

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

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

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

谢谢

stack overflow Ansible with Python3 on RedHat/CentOS 7 (python3-dnf issues)
原文答案

答案:

作者头像

如果你想在 CentOS 7 上使用 python3,那么你可以直接使用 shell 命令,而不是使用“dnf”模块,例如:

    - name: Uninstall foo and bar (CentOS)
      become: yes
      shell:
        cmd: "if yum list installed {{ item }};
              then
                yum -y remove {{ item }};
              fi"
        warn: false  # Use shell to workaround the problem with python dnf module: https://github.com/ansible/ansible/issues/71668
      loop:
        - foo
        - bar

我的测试表明,ansible 与 python3 一起工作的唯一情况是它们在同一台机器上,并且当安装了 ansible

python3 -m pip install ansible

这是一种特殊情况,您在目标机器上运行 ansible(使用 yum 模块进行测试,但假定它将与 dnf 模块一起使用)。