
Какой способ обновления конфигурации одного узла будет предпочтительным при подготовке новых узлов?
Например, предположим, что имеется кластероподобная среда.
Я инициализирую узлы, предположим, что этим узлам нужен доступ к Memcached или MySQL Server на каком-то другом узле (также управляемом Puppet)
Теперь, при добавлении нового узла, как мне обновить конфигурацию iptables или выполнить любой другой начальный шаг настройки, необходимый на другом узле, чтобы новый узел мог начать свою работу?
В настоящее время я использую самодельную систему «обеспечения» для этих задач. Есть ли удобный способ использовать Puppet для чего-то подобного?
решение1
Это не очень просто, но возможно, используя стандартные ресурсы Puppet.
Для таких конфигураций, какправила брандмауэраи мониторинга, вы можете довольно легко использоватьэкспортируемые ресурсыв сочетании с бэкэндом storageconfigs, таким какPuppetDB.
Идея экспортируемых ресурсов заключается в том, что когда манифест Puppet запускается на целевом узле, он «экспортирует» некоторые ресурсы и сохраняет их. Вы можете настроить другие узлы для сбора этих ресурсов и применения их в своих собственных манифестах.
Для других конфигураций вам, возможно, придется быть более умным и использоватьконкатмодуль в дополнение к экспортированным ресурсам - например, теоретически вы можете использовать экспортированный ресурс concat::fragment и собирать эти ресурсы там, где вам нужна информация - например, учетные данные базы данных или IP-адреса балансировщика нагрузки.
решение2
Это не очень хорошо поддерживается Puppet. Чтобы получить такую информацию, вы можетезапрос PuppetDBНасколько мне известно, Puppet не обладает способностью делать это самостоятельно, ноpuppet-puppetdbqueryдобавляет, что.Вот руководствопо объединению этих двух методов для создания файла конфигурации с данными из PuppetDB.