Использование переменных в цепочке ресурсов Puppet

У меня есть манифест марионетки, использующий массив для определения некоторых необходимых пакетов, которые должны быть установлены APT. У меня также есть некоторая цепочка ресурсов, возникающая для указания зависимостей (я не хочу использовать «требуется» или «до», потому что это затрудняет чтение кода. Проблема в строке цепочки, массив расширяется и ломается цепочка Я следовал обходному пути пользовательской функции здесь -ordering-chain">Синтаксис Puppet: как включить массив объектов в цепочку упорядочения -›?, который работает, но кажется немного излишним для определения функции.

$my_deps = ["autoconf", "automake1.9", "autotools-dev", "binutils"]
package { $my_deps:
    ensure => installed,
}

exec {'c_update_apt':
    command => '/usr/bin/apt-get update',
    path => '/usr/bin/',
    }
Exec['c_update_apt'] -> Package[ $my_deps ]

Эта ошибка говорит: «Пакет [autoconf] Пакет [automake1.9]... не соответствует». Любые предложения наиболее оценены.


person SG84    schedule 22.08.2012    source источник


Ответы (1)


Вы можете использовать '‹| |>' синтаксис коллекции, чтобы убедиться, что блок Exec выполняется до того, как будут установлены какие-либо пакеты, а не только 4 пакета в вашем списке.

Exec['c_update_apt'] -> Package <| |>

См. нижнюю часть http://docs.puppetlabs.com/guides/language_guide.html#chaining-resources.

person pwan    schedule 25.08.2012
comment
спасибо - это скорее обходной путь, чем я в идеале надеялся. Я использовал это в другом месте, но надеялся, что я что-то пропустил в документах, например, простой способ назвать ресурс, содержащий массив пакетов. - person SG84; 28.08.2012