Я относительно новичок в Puppet и недавно унаследовал очень большую инфраструктуру (Puppet 3.6 на нескольких машинах RHEL 6).
Моя инфраструктура Puppet выглядит примерно так:
У меня есть my_module :: mysql, который устанавливает и настраивает MySQL (на основе параметров, переданных ему из Dashboard или других классов, которые его включают). Среди прочего, он устанавливает расположение файлов журнала. (Существует ряд других подобных классов, и иногда этот класс может называться несколькими разными способами на одном и том же узле.)
Теперь у меня есть my_module :: flume, который устанавливает и настраивает Apache Flume, чтобы я мог отправлять журналы куда-нибудь еще.
Моя проблема: мне нужно, чтобы my_module :: flume знал, где каждый экземпляр my_module :: mysql помещает свои файлы журнала, чтобы он мог добавить их в файл конфигурации Flume.
Как лучше всего это сделать? Я думаю, что хочу иметь возможность добавить какой-то ресурс (глобальная переменная или файл), к которому каждый класс может добавить путь к файлу, поэтому my_module :: flume может перебирать список и добавлять каждый путь в файл конфигурации , но я не уверен, как это сделать, при этом гарантируя, что:
-Список файлов журнала запускается каждый раз при запуске Puppet (так, например, файлы журнала, которые больше не существуют, еще не включены в список).
-Класс Flume оценивается только после того, как все другие классы добавили пути в список.
Любой вклад будет оценен.
Вам следует
my_module::mysql
создать виртуальный фрагмент concatmy_module::flume
реализовать все эти виртуальные фрагментыЭтого вполне может быть достаточно, чтобы решить всю проблему.