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

Несколько классов Puppet должны получить доступ к ресурсу и добавить к нему значение, чтобы другой класс мог выполнять итерацию по нему после оценки других классов.

Я относительно новичок в 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 оценивается только после того, как все другие классы добавили пути в список.

Любой вклад будет оценен.

Вам следует

  1. Управляйте файлом конфигурации с помощью concat модуль.
  2. Сделайте каждый экземпляр my_module::mysql создать виртуальный фрагмент concat
  3. Есть my_module::flume реализовать все эти виртуальные фрагменты

Этого вполне может быть достаточно, чтобы решить всю проблему.