在 Puppet 中启用/禁用 DNF

在 Puppet 中启用/禁用 DNF

我正在尝试使用 Puppet 在我的 RHEL 8 系统上安装 PHP 7.4,但无法正确获取包声明以禁用 php 并使用 dnf 启用 php:7.4。Puppet 包文档描述得不太好,我无法从这篇文章中学到任何东西:Puppet 5.5.22,dnfmodule 重置

目前,Puppet 安装了 7.2,然后手动运行这些命令进行升级。

dnf module disable php
dnf module enable php:7.4
dnf upgrade php

我怎样才能用傀儡做这一切?

答案1

Puppet 的资源包具有provider接受dnfmodule作为值的属性。这样,您可以轻松启用和禁用模块流:

  # Uninstall whatever eventual pre-enabled stream
  # Different title, and module name in "module" attribute,
  # only to avoid conflict with actual 'php' package
  package { 'php:module':
    ensure   => disabled,
    name     => 'php',
    provider => dnfmodule,      # Configs module, not package
  }
  package { 'php:7.4':          # Use resource title to choose stream
    ensure      => present,
    provider    => dnfmodule,
    enable_only => true,        # Don't install whole module
  }
  package {
    'php': ensure => present,   # From enabled 7.4 stream
  }

确认:

dnf module list php
rpm -q php

答案2

您可以查看木偶锻造,但如果失败,您可以使用exec带有参数的资源creates(如果运行的命令创建特定文件)。失败,使用exec资源但附加touch命令来创建自己的标记以保持资源幂等。

例如:

exec {
  cmd => 'dnf module disable php && touch /etc/.dnf-php-disabled`
  creates => '/etc/.dnf-php-disabled'
}

相关内容