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