Назад | Перейти на главную страницу

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

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

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

Я использую:

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

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

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

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

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

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

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

  2. Всегда создавайте двоичные пакеты. Его легко распространять и тестировать.

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

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

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

  5. Просто установите пакеты с помощью:

    package { "leiningen": ensure => present }

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

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