Как установить пакеты из исходного кода с помощью Puppet?

Я хотел бы установить пакеты с исходным кодом, в которых еще нет бинарных пакетов (deb, rpm).

Как остановить выполнение модуля в случае, если модуль уже установлен на этом компьютере?

Я использую:

  Exec {
    creates => "${zookeeper_path}/zookeeper/bin/zkServer.sh"
  }

однако все остальные блоки выполняются в любом случае. Какой самый лучший способ? Проверять наличие нескольких файлов? Я не хочу распаковывать и перекомпилировать все модули при проверке кукол на предмет изменений.

РЕДАКТИРОВАТЬ:

Процесс установки состоит из нескольких этапов:

  1. получать tar.gz пакет
  2. пакет unntar
  3. создать несколько файлов конфигурации
  4. создать сервис
  5. убедитесь, что сервис работает

1 ответ

Решение

После нескольких тупиковых ситуаций и комментариев @Mike Renfro я сделал следующие шаги (не стесняйтесь их улучшать):

  1. Не устанавливайте пакеты из исходного кода с Puppet (это занимает слишком много времени и приносит слишком много проблем)

  2. Всегда создавайте бинарные пакеты. Это может быть легко перераспределено и проверено.

  3. Создайте свой собственный репозиторий - для Debian хорошим выбором является представление preppro, документация кажется ужасной, но для установки есть модуль Puppet: puppet -Pointpro. Добавить новый пакет довольно просто:

    $ reprepro -Vb . includedeb squeeze ~/packages/my_package.deb

  4. Создавайте новые пакеты с помощью fpm. Процесс создания пакета на удивление прост и намного проще, чем написание его в сценарии Puppet.

  5. Устанавливайте пакеты просто с помощью:

    package { "leiningen": ensure => present }

  6. Вы можете просто получить пакеты, которые все еще находятся в тестовой версии, развернуть их в своем локальном хранилище.

  7. Используйте hiera для конкретной конфигурации компьютера, в манифестах должны быть только шаблоны многократного использования для определенных задач (например, веб-сервер, db-сервер и т. Д.)
Другие вопросы по тегам