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!
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 neverFedora
. It is set toRedHat
on Fedora systems.You should be checking for the distribution name directly:
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:
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.