Ansible

如何在 Fedora 32 Server 虛擬機上使用 Ansible 安裝 RPM Fusion 儲存庫?

  • June 16, 2020

我想用 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]

你有想法嗎?

謝謝!

不要command用於安裝軟體包。這沒有冪等性的希望,並且會以各種微妙的方式失敗。

這些被跳過的原因是os_family事實是從不Fedora。它RedHat在 Fedora 系統上設置為。

您應該直接檢查發行版名稱:

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:因為包名稱中已經提供了相關版本。

引用自:https://serverfault.com/questions/1021744