我正在尝试使用 Ansible 的 dnf 模块和开关module
从 remi repo 安装 PHP 7.4。
我将其作为命令执行,因为我无法使用 Ansible dnf 使其工作。
这就是我想要做的:dnf module -y install php:remi-7.4
我不知道是否可以使用module
Ansible dnf 模块上的开关。有人知道这是否可行吗?
谢谢,
大卫
谢谢回复。我在使用 Ansible 中的模块时没有遇到问题dnf
,但在使用参数module
using Ansible时遇到了问题dnf
。
我正在这样做:
- name: install php from stream {{ php_module_stream }}
command: dnf module -y install {{ php_module_stream }}
我想做这样的事情:
- name: install php from stream {{ php_module_stream }}
dnf:
name: {{ php_module_stream }}
module: true
我不知道该如何module
在 中使用这个词dnf
。
答案1
你可以通过在Ansible 模块参数@
中在模块名称前添加一个来安装一个模块(本质上是一组包)。使用方法如下:name
dnf
- name: install the 'Development tools' package group
dnf:
name: '@Development tools'
state: present
答案2
语义警告:Ansible 使用术语“模块”来描述特定的命令集或功能。DNF/Yum4 使用术语“模块”来描述软件包、功能和软件供应商的组。这些很容易在这个问题中造成混淆。
根据 Ansible 2.9 的官方文档,没有(记录)对 DNF/Yum4“模块”功能的支持。
command
如果您特别需要在 DNF/Yum4 中使用“模块”开关,则可以使用 ansible或模块来实现shell
,具体取决于您的使用方式。一些示例代码:
- name: Use dnf command to install postgresql 9.6 client
command: dnf module install postgresql:9.6/client
此任务将启用 postgreql 模块 9.6 流,并安装标记为“客户端”配置文件一部分的软件包。
或者,您可以尝试使用 Ansible 中的模块进行以下表示法dnf
;我尚未测试过,无法判断它是否有效或者 Ansible 是否可以正确解释特殊字符。
- name: Use the ansible dnf_module to install postgresql 9.6 client
dnf:
name: '@postgresql:9.6/client'
state: present
根据 RHEL8 文档yum4/dns 接受此表示法,而无需明确调用“模块”开关。(示例位于第 4.6 节底部附近)