如何在 Fedora 32 Server 虚拟机上使用 Ansible 安装 RPM Fusion 存储库?

如何在 Fedora 32 Server 虚拟机上使用 Ansible 安装 RPM Fusion 存储库?

我想使用 Ansible 在 Fedora 32 Server 虚拟机上安装 RPM Fusion 存储库

我尝试过各种可能性,但都没有成功:

- name: Enable the RPM Fusion repository
command: dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-    free-release-$(rpm -E %fedora).noarch.rpm
when: ansible_facts['os_family'] == 'Fedora' and ansible_facts['distribution_major_version'] == '32'

或者

- name: Enable the RPM Fusion repository
  dnf:
    name: 'https://download1.rpmfusion.org/free/fedora/rpmfusion-    free-release-$(rpm -E %fedora).noarch.rpm'
    state: present
  when: ansible_facts['os_family'] == 'Fedora' and ansible_facts['distribution_major_version'] == '32'

每次跳过任务

TASK [Enable the RPM Fusion repository] *******************************************************************************
skipping: [my-ip-address]

你有好主意吗?

谢谢!

答案1

不要使用它command来安装软件包。这没有幂等性,并且会以各种微妙的方式失败。

跳过这些的原因是os_family事实从来都不是。在 Fedora 系统上Fedora它被设置为。RedHat

您应该直接检查分发名称:

when: ansible_distribution == 'Fedora' and ansible_distribution_major_version|int == 32

但是,您还遇到了更多问题,并且您的dnf操作也会失败,因为您尝试使用 shell 替换,而 Ansible 对此却无能为力。

你的玩法应该更像这样:

- name: Enable the RPM Fusion repository
  dnf:
    name: "https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-{{ansible_distribution_major_version}}.noarch.rpm"
    state: present
  when: ansible_distribution == 'Fedora'

我们实际上是通过替换来提供版本号,因此它将使用“32”而不是随机的 shell 命令。当然,在这种情况下,无需签入发行版本,when:因为相关版本已在软件包名称中提供。

相关内容