Я изучаю миграцию нашего процесса развертывания к использованию Марионетки. Я запускаю путем развертывания сторонних приложений, которые мы используем для системы, которые включают Облако Solr, организованное ансамблем Служителя зоопарка.
Развертывание облака Solr со встроенным Служителем зоопарка довольно просто, однако если я хочу использовать отдельный ансамбль Служителя зоопарка затем, я должен развернуть Служителя зоопарка с этими решающими строками в конфигурации:
server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888
(например). Учитывая, что я ничего не могу принять об упорядочивании узлов, и я хотел бы сохранить это все Основанным на марионетке: на что я должен посмотреть для того, чтобы сделать это?
Я должен сделать это шаблоны использования и некоторые поиски Hiera, и определить все серверы Служителя зоопарка в моей конфигурации Hiera? Или есть ли метод, который позволяет мне не указывать, где все узлы заранее и сделали, чтобы они определили друг друга (использование пользовательских фактов, возможно)?
Я хотел бы минимизировать сумму сайт-специфичной конфигурации, которую я должен записать, поэтому если я могу просто указать, что "этому узлу нужен модуль служителя зоопарка", и это автоматически находит любых других, которые имеют модуль служителя зоопарка, который был бы блестящим.
Любой совет от системных администраторов, которые сделали что-то подобное, ценился бы!
Использование Hiera - правильный подход, и вы можете добиться динамического характера того, что хотите, используя PuppetDB вместе с бэкэнд PuppetDB Hiera .
Это позволяет вам иметь что-то вроде следующего в ваших файлах Hiera YAML:
zookeeper::servers::_nodequery: ['Class[Zookeeper]', 'ipaddress']
Это вернет массив $ :: ipaddress
фактов для все машины, о которых знает PuppetDB, с классом Zookeeper как частью их каталога. Затем вы можете использовать результат этого запроса в качестве параметра для других классов.