Я хочу, чтобы мой класс Puppet создавал файловый ресурс с содержимым на основе всех экземпляров определенного определенного типа. Я посмотрел на this question с идеей повторения экземпляров, чтобы создать файл, но, по-видимому, это «плохая идея» за один ответ, который есть в настоящее время.Как создать файл на основе экземпляров определенного типа в Puppet
Некоторые предпосылки: Я создаю класс monitor_service
в Puppet для развертывания пользовательского приложения для мониторинга. Приложение считывает конфигурационный файл, который сообщает ему, что контролировать, один элемент в каждой строке, вдоль линий
ITEM: /var/things/thing-one (123)
ITEM: /var/things/thing-two (456)
Я также пишущие определенный тип, который развертывает экземпляры наблюдаемых элементов:
define my_thing::monitored_thing ($port) {
file { "/var/things/$name":
...
}
}
на данном узле, я создал несколько monitored_thing
сек как
my_thing::monitored_thing { "thing-one":
port => 123
}
my_thing::monitored_thing { "thing-two":
port => 456
}
Что такое «право» кукольные идиомы для создания файла конфигурации службы мониторинга? Я бы предпочел, чтобы это работало таким образом, чтобы класс monitor_service
не должен был рассказывать, какие экземпляры monitored_thing
он просматривает - просто создание экземпляра monitored_thing
должно привести к его добавлению в файл конфигурации автоматически.
Эти фантастические выводы, спасибо за указатели! Я остановлюсь здесь снова, когда выясню, что я делаю. – Coderer
Я думаю, что 'file_line' будет работать для моего варианта использования, но было бы неплохо, если бы при определении содержимого строки я мог бы сказать« какой »экземпляр это. То есть, что-то вроде 'my_thing :: monitored_thing.count', которое сообщит мне, сколько экземпляров этого определенного типа было создано во время оценки строки. Я знаю, что это «зависит от парсинга», что является «Плохой вещью», но в этом случае это поможет мне. Это невозможно? – Coderer
Я тестирую 'file_line', но я не могу заставить его работать. У меня есть простая запись, которая выглядит как 'file_line {" test ": path => '/ opt/monitor/README', line => 'Это дополнительный текст'}' (обратите внимание, что файл README не контролируется Puppet!) и ничего не происходит. Я также попытался указать его на файл, который * * контролируется моим модулем; без изменений. – Coderer