Я бы хотел установить пакеты с исходным кодом, в которых еще нет двоичных пакетов (deb, rpm).
Как остановить выполнение модуля, если модуль уже установлен на этом компьютере?
Я использую:
Exec {
creates => "${zookeeper_path}/zookeeper/bin/zkServer.sh"
}
однако все остальные блоки все равно выполняются. Как лучше всего? Проверяете наличие нескольких файлов? Я не хочу распаковывать и перекомпилировать все модули, когда марионетка проверяет наличие изменений.
РЕДАКТИРОВАТЬ:
Процесс установки состоит из нескольких этапов:
tar.gz
пакетПопробовав несколько тупиков и из комментариев @Mike Renfro, я придумал следующие шаги (не стесняйтесь их улучшать):
Не устанавливайте пакеты из исходного кода с помощью Puppet (это занимает слишком много времени и вызывает слишком много проблем)
Всегда создавайте двоичные пакеты. Его легко распространять и тестировать.
Создайте свой собственный репозиторий - для Debian хорошим выбором будет реппро, документация кажется ужасной, но есть модуль Puppet для установки: марионетка-реппро. Добавить новый пакет довольно просто:
$ reprepro -Vb . includedeb squeeze ~/packages/my_package.deb
Создавайте новые пакеты с fpm. Процесс создания пакета на удивление прост и намного проще, чем написание его в сценарии Puppet.
Просто установите пакеты с помощью:
package { "leiningen": ensure => present }
Вы можете просто получить пакеты, которые все еще находятся в тестовой версии, развернуть их в своем локальном репозитории.