目前,Puppet 似乎不支持 amazon-linux-extras 实用程序。
可以说,应该创建一个新的类型/提供程序来支持 amazon-linux-extras。如果您提出了一个被接受的功能请求,它可以存在于 Puppet Core 中。或者,如果您知道如何编写自定义类型和提供程序,您可以编写自己的并将其作为模块发布到 Puppet Forge 上。
同时,使用 exec 很容易编写定义的类型来解决这个问题。
define al::amazon_linux_extras(
Enum['present'] $ensure = present,
) {
$pkg = $name
exec { "amazon-linux-extras install -y $pkg":
unless => "amazon-linux-extras list | grep -q '${pkg}=.*enabled'",
path => '/usr/bin',
}
}
用法:
al::amazon_linux_extras { 'php7.3':
ensure => present,
}
进一步说明:
- 我假设您会将定义的类型放在模块
al
中。但它可能是个人资料等。例如profile::amazon_linux_extras
,另一种可能性。
- 我
ensure => present
只是为了可读性而实现的,即它实际上并没有做任何事情,而且如果你决定稍后实现ensure => absent
等等ensure => latest
。