Назад | Перейти на главную страницу

Как установить репозиторий RPM Fusion с Ansible на виртуальную машину Fedora 32 Server?

Я хочу установить репозиторий RPM Fusion на виртуальную машину Fedora 32 Server с Ansible

Я безуспешно пробовал разные варианты:

- 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 play также не удастся, потому что вы пытались использовать замену оболочки, и 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». И, конечно же, в этом случае нет необходимости проверять версию дистрибутива в when: потому что соответствующая версия уже указана в названии пакета.