Ansible Centos 8 dnf 模块“模块”开关丢失?

Ansible Centos 8 dnf 模块“模块”开关丢失?

我正在尝试使用 Ansible 的 dnf 模块和开关module从 remi repo 安装 PHP 7.4。

我将其作为命令执行,因为我无法使用 Ansible dnf 使其工作。

这就是我想要做的:dnf module -y install php:remi-7.4

我不知道是否可以使用moduleAnsible dnf 模块上的开关。有人知道这是否可行吗?

谢谢,

大卫

谢谢回复。我在使用 Ansible 中的模块时没有遇到问题dnf,但在使用参数moduleusing 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 模块参数@中在模块名称前添加一个来安装一个模块(本质上是一组包)。使用方法如下:namednf

- 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 节底部附近)

相关内容