Как установить пакет из amazon-linux-extras с помощью Puppet? - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь настроить модуль Puppet для установки PHP 7.3 в Amazon 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, так как такого провайдера не существует.

Как правильно установить этот пакет?

1 Ответ

1 голос
/ 28 марта 2019

В настоящее время создается впечатление, что 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 и т. Д.
...