maxime asked:
I want to install RPM Fusion repository on Fedora 32 Server virtual machine with Ansible
I’ve tried various possibility unsuccessfully :
- 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'
or
- 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'
Every time the task is skipped
TASK [Enable the RPM Fusion repository] *******************************************************************************
skipping: [my-ip-address]
Do you have an idea?
Thanks!
My answer:
Don’t use command
to install packages. This has no hope of idempotence and will fail in various and subtle ways.
The reason these are skipped is that the os_family
fact is never Fedora
. It is set to RedHat
on Fedora systems.
You should be checking for the distribution name directly:
when: ansible_distribution == 'Fedora' and ansible_distribution_major_version|int == 32
You’ve got further problems, though, and your dnf
play will also fail, because you tried to use a shell substitution and Ansible won’t do anything with that.
Your play should look more like this:
- 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'
We’re actually providing the version number via substitution, so it will have "32" instead of a random shell command. And of course in this case there is no need to check the distribution version in when:
because the relevant version is already provided in the package name.
View the full question and any other answers on Server Fault.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.