Ansible
如何在 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]
你有想法嗎?
謝謝!
不要
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:
因為包名稱中已經提供了相關版本。