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

Перенос клиентов марионеток на нового мастера марионеток

Как я могу перенести наши существующие марионеточные клиенты, чтобы они указывали на новый сервер puppetmaster? Я бы предпочел не переходить вручную к каждому клиентскому ящику и генерировать новый сертификат.

При попытке очевидного - rsync всех файлов из / etc / puppet и / var / lib / puppet на новый сервер - мы получили ошибку сертификата

/etc/init.d/puppetmaster start 
* Starting puppet master                
Could not run: Retrieved certificate does not match private key; please remove certificate from server and regenerate it with the current key

Я смог обойти это, скопировав /var/lib/ssl/certs и /var/lib/ssl/private_key файлы из old_hostname к new_hostname, что в основном предлагается в перенос клиентов марионеток на новый мастер марионеток (старый главный сервер марионеток исчез, используется только резервное копирование)

К сожалению, мои клиенты все еще знают, что что-то не так, и выдают мне следующую ошибку:

sudo puppetd --test --server newservername.example.net --noop 
info: Retrieving plugin
err: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': hostname was not match with the server certificate
err: /File[/var/lib/puppet/lib]: Could not evaluate: hostname was not match with the server certificate Could not retrieve file metadata for puppet://newservername.example.net/plugins: hostname was not match with the server certificate
err: Could not retrieve catalog from remote server: hostname was not match with the server certificate
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

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

Есть ли способ использовать марионетку (указывающую на устаревшего марионеточного мастера) для развертывания новых сертификатов или как-то автоматизировать процесс подписания?

РЕЗЮМЕ: Были представлены два решения: 1) включить autosign на главном устройстве, таким образом полностью пропуская сертификацию, или 2) установите старый CNAME так, чтобы он указывал на новый мастер, поскольку сертификаты привязаны к имени хоста мастера. Я выбрал №2, потому что автоподпись казалась просто отключением безопасности (хотя и на ограниченное время).

Вы можете просто использовать $ssldir старого кукловода и использовать его в новом кукловоде.

Кроме этого, должна быть возможность развернуть сценарий, который:

  • (Не связано с клиентским скриптом: возможно, активируйте автоподпись на новом марионеточном сервере)
  • беги немного позже
  • остановить марионеточного клиента
  • очистить клиентский ssldir
  • измените puppet.conf на клиенте, чтобы он указывал на новый сервер
  • создать файл блокировки, чтобы убедиться, что он не вызывает бесконечного цикла реконфигурации
  • снова запустить марионетку

Уродливо, но пока сделать миграцию модуль есть только на старом сервере и убедитесь, что нет модуля миграции только на новом сервере, это одноразовая вещь, и она должна творить чудеса ...

Вы хотите, чтобы оба мастера марионеток работали какое-то время, а клиентов постепенно переносили?

Если это так, вы все равно застряли в касании каждой клиентской системы; указывает ли он на нового мастера, или добавляет запись в файл hosts, или что-то подобное. Если это так, то вы можете просто запустить новый мастер заново и заново подписать каждого клиента (это лучше, чем взлом файла hosts, чтобы обойти проблемы проверки).

Если нет (если вы планируете снять старый сервер и сразу все отключить), просто замените имя хоста старого сервера новым сервером; сертификат будет признан действительным, если клиенты подключаются к новому серверу со старым именем (имя, указанное в сертификате).