Назад | Перейти на главную страницу

Развертывание распределенных приложений с помощью Puppet - совет?

Я собираюсь перенести наш процесс развертывания на использование Puppet. Я начинаю с развертывания сторонних приложений, которые мы используем для системы, включая Solr Cloud, организованное ансамблем Zookeeper.

Развернуть облако Solr с помощью встроенного Zookeeper довольно просто, однако, если я хочу использовать отдельный ансамбль Zookeeper, мне нужно развернуть Zookeeper со следующими важными строками в конфигурации:

server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888

(например). Учитывая, что я не могу ничего предположить о порядке узлов, и я хотел бы сохранить все это на основе Puppet: на что мне следует обратить внимание для этого?

Нужно ли мне делать это, используя шаблоны и некоторые поисковые запросы Hiera, и определять все серверы Zookeeper в моей конфигурации Hiera? Или есть метод, который позволяет мне заранее не указывать, где находятся все узлы, и заставлять их идентифицировать друг друга (возможно, используя настраиваемые факты)?

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

Будем признательны за любые советы от системных администраторов, которые сделали что-то подобное!

Использование Hiera - это правильный подход, и вы можете добиться динамичного характера того, что хотите, используя PuppetDB вместе с Бэкэнд PuppetDB Hiera.

Это позволяет вам иметь что-то вроде следующего в ваших файлах Hiera YAML:

zookeeper::servers::_nodequery: ['Class[Zookeeper]', 'ipaddress']

Это вернет массив $::ipaddress факты для всех машин, о которых знает PuppetDB, с классом Zookeeper как частью их каталога. Затем вы можете использовать результат этого запроса в качестве параметра для других классов.