如何使用 Puppet 从 amazon-linux-extras 安装软件包?
How do I install package from amazon-linux-extras using Puppet?
我正在尝试设置一个 Puppet 模块以在亚马逊上安装 PHP 7.3 Linux 2. 它可以作为 amazon-linux-extras 包提供。
我可以简单地使用 CLI 安装它:
amazon-linux-extras install php7.3
但我想将它定义为一个包并确保它已安装,如下所示:
package { "php7.3":
ensure => installed,
provider => 'amazon-linux-extras'
}
不幸的是,我无法将包 provider
设置为 amazon-linux-extras
,因为这样的提供商不存在。
安装此软件包的正确方法是什么?
此时,Puppet 似乎不支持 amazon-linux-extras 实用程序。
可以说,应该创建一个新的 type/provider 来支持 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
等
我正在尝试设置一个 Puppet 模块以在亚马逊上安装 PHP 7.3 Linux 2. 它可以作为 amazon-linux-extras 包提供。
我可以简单地使用 CLI 安装它:
amazon-linux-extras install php7.3
但我想将它定义为一个包并确保它已安装,如下所示:
package { "php7.3":
ensure => installed,
provider => 'amazon-linux-extras'
}
不幸的是,我无法将包 provider
设置为 amazon-linux-extras
,因为这样的提供商不存在。
安装此软件包的正确方法是什么?
此时,Puppet 似乎不支持 amazon-linux-extras 实用程序。
可以说,应该创建一个新的 type/provider 来支持 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
等