Puppet apt-get update только один раз перед чем-нибудь еще?
Я знаю основы упорядочения в марионетке, чтобы запустить apt-get обновление до определенного пакета, но хотел бы указать, чтобы просто запустить apt-get update только один раз, а затем выполнить оставшуюся часть кукольного файла. Это возможно?
Все перечисленные способы здесь должны либо запускать apt-get перед каждым пакетом, либо использовать стрелки или для указания каждого пакета.
Ответы
Ответ 1
Это будет моя рекомендация из этого списка:
exec { "apt-update":
command => "/usr/bin/apt-get update"
}
Exec["apt-update"] -> Package <| |>
Это гарантирует, что exec выполняется до любого пакета, а не того, что exec запускается до каждого. Фактически, любой ресурс в марионетке будет когда-либо выполняться не более одного раза за марионетку.
Но если вы хотите, чтобы exec выполнялся до ЛЮБОГО типа ресурса, я думаю, вы могли бы сделать что-то вроде:
exec { "apt-update":
command => "/usr/bin/apt-get update",
before => Stage["main"],
}
"Основной" этап - это этап по умолчанию для каждого ресурса, поэтому это приведет к тому, что exec произойдет раньше всего.
Я надеюсь, что это поможет.
Ответ 2
С puppetlabs-apt, этого должно быть достаточно, чтобы определить зависимость от модуля для любого пакета, который будет установлен:
Class['apt'] -> Package<| |>
Это предполагает базовую конфигурацию apt
, например:
class { 'apt':
update => {
frequency => 'daily',
},
purge => {
'sources.list' => false,
'sources.list.d' => true,
},
}