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

Получение марионетки для установки модулей

В моей текущей настройке у меня есть сценарий host-up, который берет где-то недавно подготовленную виртуальную машину на DC, выдает пару команд, которые мне нужно запустить puppet apply (убедитесь, что имя хоста установлено, эта марионетка установлена ​​и может видеть ее конфигурацию). затем puppet apply Об остальном позаботится (плюс ткань для развертывания нашего программного обеспечения).

Все хорошо, но установка необходимых модулей марионеток в настоящее время происходит в моем сценарии размещения. Это отлично работает, пока я не захочу установить новые модули, а затем мне придется вручную отсортировать их на существующих хостах. Кажется, марионетка должна это делать, но я не нашел нужной директивы.

# If only this worked...
module { 'maestrodev-rvm':
    ensure => present
}

я видел кукольный библиотекарь, но, похоже, это добавляет больше сложности, чем решает, для небольшого количества модулей, которые мы устанавливаем. Похоже, решение на будущее, если / когда нам понадобится что-то более сложное.

Я что-то упускаю?

librarian-puppet это самый простой ответ на это. Лично я всегда советовал бы проделать работу заранее и сначала реализовать масштабируемое решение, а не постоянно пересматривать свой подход.

Он работает по тому же принципу, что и bundler подходит для драгоценных камней Ruby - вы просто создаете Puppetfile в котором перечислены модули ты хочу (т.е. без зависимостей).

Когда ты бежишь librarian-puppet install впервые на вашей машине разработки Puppet (обычно на вашей локальной рабочей станции) он опрашивает все модули и автоматически создает список зависимостей (если рассматриваемые модули используют metadata.json файл для подробного описания зависимостей). Это также создаст Puppetfile.lock для записи точных версий, выбранных для каждого модуля и его зависимостей.

Для последующих изменений вы можете запустить librarian-puppet update <module> для обновления конкретного модуля до последней версии. Это повторно вычислит зависимости и обновит Puppetfile.lock.

Важное примечание - librarian-puppet примет полный контроль над вашим modules каталог, поэтому любые пользовательские модули, которые вы написали, нужно будет вытащить и ссылаться на них как на отдельные модули в вашем Puppetfile.

Развернуть так же просто, как запустить librarian-puppet install на ваших узлах - это будет смотреть на Puppetfile.lock (не Puppetfile) и устанавливает все ваши модули.