Почему Марионетка может потребовать каждого пакета только однажды?

Моя ошибка: Я использовал CategoryWatch. Румянец.

6
задан 10 March 2013 в 18:57
2 ответа

Можно использовать функцию ensure_resource() из stdlib модуля:

$packages = $::osfamily ? {
    'Debian' => [ 'fcgiwrap', ],
    'RedHat' => [ 'spawn-fcgi', 'git' ],
}
ensure_resource('package', $packages, {'ensure' => 'present'})

Так что, скажем, если git уже установлен каким-то другим классом, то это будет пропущено. Вы не должны заботиться об определении пакета только один раз в кукольной конфигурации.

.
7
ответ дан 3 December 2019 в 00:13

Когда у вас есть дублирующиеся пакеты, это один из способов борьбы с ними. Другой способ - в первую очередь избежать проблемы, используя виртуальные ресурсы:

Объявление виртуального ресурса

class packages {
  @package {
    ['cryptsetup-bin',
     'cryptsetup',
     'cifs-utils',
     'e2fsprogs',
     'libmysql-ruby',
     'parted',
     'pigz',
      'sshfs' ]:
        ensure => present,
    }
}

Реализация виртуального ресурса (вы можете реализовать ресурсы несколько раз):

include packages
realize Package['pigz']

Другой подход состоит в разделении дублированный код в другой класс, то есть класс 'wget'.

Puppet Doc: http://docs.puppetlabs.com/guides/virtual_resources.html

4
ответ дан 3 December 2019 в 00:13

Теги

Похожие вопросы