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

Как подготовить узел через марионетку, если он использует технологию виртуализации на основе образов?

Я пытаюсь интегрировать марионетку и vSphere через этот модуль:

https://forge.puppetlabs.com/puppetlabs/vsphere

Этот модуль позволяет создавать серверы с помощью нескольких строк марионеточного кода.

У меня есть шаблон vm, из которого я клонирую. На нем установлены инструменты VMware и марионеточный клиент.

Подходит узел, но затем хозяин марионетки думает, что все последующие клоны являются одним и тем же узлом, вероятно, потому, что у них один и тот же сертификат SSL.

Итак, как это должно работать? Я могу исправить проблему с SSL на одном узле, но я хочу иметь возможность создавать 100 узлов автоматически.

Это выглядит как puppet resource vsphere_vm должен показывать гостевой IP-адрес, который, как я предполагаю, затем может быть загружен в марионетку и оттуда подготовлен узел, но эта команда в настоящее время не создает никакой информации об IP.

Должен быть кто-то, использующий этот плагин puppet vsphere, который использует его для автоматического развертывания узлов. Это также подразумевает более общий вопрос: как автоматизировать создание и подготовку сервера с марионеткой, если вы используете технологию виртуализации на основе образов, такую ​​как vSphere?

В качестве примечания я использую puppet enterprise 2015.2.

У меня есть шаблон vm, из которого я клонирую. На нем установлены инструменты VMware и марионеточный клиент.

Подходит узел, но затем хозяин марионетки думает, что все последующие клоны являются одним и тем же узлом, вероятно, потому, что у них один и тот же сертификат SSL.

Чтобы решить эту проблему, вам нужно иметь шаблон, который имеет марионеточный клиент, но еще не сгенерировал CSR с марионеточным сервером. Вы можете преобразовать шаблон обратно в виртуальную машину и удалить (или переименовать) каталог ssl марионетки клиента (не уверен, где он хранится на PE 2015.2, но в Puppet v4 он находится в /etc/puppetlabs/puppet/ssl).

Затем на марионеточном сервере выполните puppet cert clean <name> где <name> - это сертификат, созданный шаблоном.

Преобразуйте виртуальную машину обратно в шаблон. Теперь любые виртуальные машины, развернутые из этого шаблона, будут генерировать свои собственные CSR после запуска puppet agent -t. Обратной стороной является то, что вам придется подписывать каждый новый сертификат всякий раз, когда создается CSR. Чтобы сделать его более удобным для автоматизации, вы можете настроить марионеточный сервер для автоматической подписи сертификатов, используя autosign = true в файле puppet.conf сервера. Однако не рекомендуется хранить в производственной среде. Этот документ более подробно описывает сертификаты автоматической подписи: https://docs.puppetlabs.com/puppet/latest/reference/ssl_autosign.html

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