我正在尝试使用 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'
}