Выберите шаблон марионетки в зависимости от классов, установленных на одной машине

Мы используем Puppet для предоставления ресурсов Tomcat7 в файл context.xml для веб-архивов.

У нас есть три архива, каждому нужен отдельный набор записей ресурсов в context.xml. Использовать шаблон и заполнять нужные артефакты легко, если у нас есть один артефакт на экземпляр tomcat.

Но у нас также есть сценарий, когда все три артефакта устанавливаются в один экземпляр tomcat (для этапов тестирования). В этом случае нам нужны все записи ресурсов для трех артефактов одновременно.

На ум приходят два решения, оба меня не очень удовлетворяют:

  1. Прекратите использовать шаблоны и используйте линзы Augeas для редактирования файла. Против: context.xml представляет собой XML, и использование augeas подвержено ошибкам и в значительной степени нечитаемо.

  2. Удалите часть, копирующую шаблон, из классов артефакта, и фактор будет передан в подкласс, такой как артефакт::supply-context (который обеспечивает правильную конфигурацию для одного артефакта). Также предоставьте класс all_artifacts::supply-context (который предоставляет конфигурацию для всех контекстов).
    Против: Использование классов больше не прозрачно. Один артефакт: «включить артефактA, артефактA::supply-context». Все артефакты: «включают артефакт A, артефакт B, артефакт C, all_artifacts::supply-context.

У кого-нибудь есть лучшее решение или предложения?


person Florian Thiel    schedule 31.08.2012    source источник


Ответы (1)


Первое, что приходит мне в голову после рассмотрения этой проблемы, это модуль "concat"[1]. Вы можете объединить его с шаблоном, а затем объединить соответствующие части вместе в порядке. Помимо этого, вы можете написать свою собственную функциональность сборки файлов.

  1. https://github.com/ripienaar/puppet-concat
person Krzysztof Wilczyński    schedule 09.09.2012