I'm trying to use the dnf module of Ansible with the module
switch to install PHP 7.4 from the remi repo.
I'm doing this as a command, as I can't get it to work using Ansible dnf.
This is what I want to do: dnf module -y install php:remi-7.4
I can't work out if I can use the module
switch on the Ansible dnf module.
Does anyone know if that's possible?
Thanks,
David
Thanks for replying. I don't have a problem using the dnf
module in Ansible, I have a problem with using the parameter module
using Ansible dnf
.
I'm doing this:
- name: install php from stream {{ php_module_stream }}
command: dnf module -y install {{ php_module_stream }}
and I want to do something like this:
- name: install php from stream {{ php_module_stream }}
dnf:
name: {{ php_module_stream }}
module: true
I can't work out how to use the word module
in dnf
.
You can install a module (which is essentially a group of packages) by adding a
@
prior to the name of the module to thename
parameter of the Ansiblednf
module. It can be used like this:Semantics warning: Ansible uses the term "Module" to describe a specific command set or functionality. DNF/Yum4 uses the term "module" to describe groups of packages, features, and software vendors. These can easily confuse things in this question.
Per the official documentation for Ansible 2.9, there is no (documented) support for the DNF/Yum4 "modules" capabilities.
If you specifically need to use the 'modules' switch with DNF/Yum4, you can do so using the ansible
command
orshell
modules, depending on how you use it. Some example code:This task will enable the postgreql module, 9.6 stream, and install the packages tagged as part of the 'client' profile.
Alternatively, you could try the following notation with the
dnf
module in Ansible; I have not tested it and cannot say if it will work or if Ansible can properly interpret the special characters.According to RHEL8 documentation, yum4/dns accepts this notation without explicitly calling the "module" switch. (Example near the bottom of section 4.6)