Подготовка марионеток, новый узел, обновление конфигурации на главном

Каков предпочтительный способ обновления конфигурации одного узла при подготовке новых узлов?

Например, скажем, есть кластероподобная среда

я инициализирую узлы, скажем, эти узлы должны иметь доступ к memcached или MySQL Server на каком-то другом узле (также управляемом puppet)

Теперь, при добавлении нового узла, как я могу обновить конфигурацию iptables или любой другой начальный шаг конфигурации, который необходим на другом узле, чтобы позволить новому узлу начать свою работу?

Я использую доморощенную систему обеспечения для этих задач в настоящее время, есть ли удобный способ использовать кукольный для чего-то вроде этого?

2 ответа

Решение

Это не особенно просто, но это возможно, используя стандартные ресурсы Puppet.

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

Идея экспортируемых ресурсов состоит в том, что когда манифест Puppet запускается на целевом узле, он "экспортирует" некоторые ресурсы и сохраняет их. Вы можете настроить другие узлы для сбора этих ресурсов и применять их в своих манифестах.

Для других конфигураций вам может понадобиться быть более умным и использовать модуль concat в дополнение к экспортируемым ресурсам - например, вы можете теоретически использовать экспортированный ресурс concat:: фрагмента и собирать те ресурсы, где вам нужна информация - например, учетные данные базы данных или загрузка балансирующие IP.

Это не очень хорошо поддерживается Puppet. Чтобы получить такую ​​информацию, вы можете запросить PuppetDB. Насколько я знаю, в Puppet нет возможности делать это самостоятельно, но https://github.com/dalen/puppet-puppetdbquery добавляет это. Вот учебник по их соединению для создания файла конфигурации с данными из PuppetDB.

Другие вопросы по тегам