【问题标题】:How do I install package from amazon-linux-extras using Puppet?如何使用 Puppet 从 amazon-linux-extras 安装软件包?
【发布时间】:2019-08-15 23:48:48
【问题描述】:

我正在尝试设置一个 Puppet 模块以在 Amazon Linux 2 上安装 PHP 7.3。它以 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-2


    【解决方案1】:

    目前,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 => absentensure => latest 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      • 1970-01-01
      • 2018-04-13
      • 2022-08-10
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多