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

8

Как я могу перенести наших существующих клиентов puppet, чтобы они указывали на новый сервер 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

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

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

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

mrisher
источник

Ответы:

3

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

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

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

Шейн Мэдден
источник
Да, вопрос был в том, возможно ли автоматизировать повторную подпись каждого клиента. Я думаю, что вы ответили на это, указав, что сертификаты привязаны к имени хоста, которое клиент использует для доступа к определенному серверу, поэтому, если я повторно использую имя хоста, я смогу повторно использовать сертификаты. Спасибо!
Мишер
Что ж, простое puppetca --sign --allподойдет для клиентских сертификатов; серверный - тот, который дает вам проблемы с ошибками несоответствия.
Шейн Мэдден
3

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

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

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

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

Мартин М.
источник
Привет: autosignТрюк хороший, но кажется рискованным. Без этого это решение фактически решает проблему несоответствия сертификата клиента?
Мишер
Это так, autosign - это просто ленивый способ не иметь дело с тысячами клиентов, которые будут новыми для puppetmaster. Концепция та же, разница в том, что клиенты, которые мигрировали на нового мастера, не будут выполнять никакой работы, если они не подписаны
Martin M.