Каким будет предпочтительный способ обновления конфигурации одного узла при подготовке новых узлов?
Например. скажем, есть кластерная среда
Я настраиваю узлы, скажем, этим узлам необходим доступ к серверу memcached или MySQL на каком-то другом узле (также управляемом марионеткой)
теперь при добавлении нового узла, как мне обновить конфигурацию iptables или любой другой шаг начальной конфигурации, который необходим на другом узле, чтобы позволить новому узлу начать свою работу?
В настоящее время я использую самодельную систему "подготовки" для этих задач, есть ли удобный способ использовать марионетку для чего-то вроде этого?
Это не очень хорошо поддерживается Puppet. Чтобы получить такую информацию, вы можете запрос PuppetDB. Насколько я знаю, Puppet не имеет возможности делать это самостоятельно, но марионетка-марионеткаdbquery добавляет это. Вот учебник о соединении их вместе для создания файла конфигурации с данными из PuppetDB.
Это не очень просто, но возможно, используя стандартные ресурсы Puppet.
Для конфигураций вроде правила брандмауэра и мониторинг, вы можете довольно легко использовать экспортированные ресурсы в сочетании с серверной частью storedconfigs, такой как PuppetDB.
Идея экспортируемых ресурсов заключается в том, что когда манифест Puppet запускается на целевом узле, он «экспортирует» некоторые ресурсы и сохраняет их. Вы можете настроить другие узлы для сбора этих ресурсов и применения их в своих собственных манифестах.
Для других конфигураций вам, возможно, потребуется быть более умным и использовать concat модуль в дополнение к экспортированным ресурсам - например, вы теоретически можете использовать экспортированный ресурс concat :: fragment и собирать те ресурсы, где вам нужна информация - например, учетные данные базы данных или IP-адреса балансировщика нагрузки.