Migrar clientes de títeres a nuevo puppetmaster

8

¿Cómo puedo migrar a nuestros clientes de títeres existentes para señalar un nuevo servidor de puppetmaster? Prefiero no ir manualmente a cada cuadro de cliente y generar un nuevo certificado.

Al intentar lo obvio - rsync todos los archivos de / etc / puppet y / var / lib / puppet al nuevo servidor - obtuvimos el error de certificado

/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

Pude evitar eso copiando los archivos /var/lib/ssl/certsy /var/lib/ssl/private_keyde old_hostnamea new_hostname, que es básicamente lo que se sugiere al migrar clientes puppet a un nuevo puppet master (el antiguo servidor puppet master desapareció, solo con copia de seguridad)

Desafortunadamente, mis clientes todavía saben que hay algo mal y me dan el siguiente error:

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

Así que supongo que los certificados de cliente aún conocen el nombre de host con el que están asociados y no están contentos con un cambio.

¿Hay alguna manera de usar Puppet (señalando al Puppetmaster heredado) para implementar nuevos certificados, o de alguna manera automatizar el proceso de firma?

RESUMEN: Se presentaron dos soluciones: 1) encender autosignel maestro, omitiendo por completo la certificación, o 2) configurar el antiguo CNAME para que apunte al nuevo maestro, ya que los certificados están vinculados al nombre de host del maestro. Elegí el n. ° 2 porque el autosign parecía que solo estaba desactivando la seguridad (aunque por un tiempo limitado).

mrisher
fuente

Respuestas:

3

¿Está buscando mantener a los dos titiriteros en funcionamiento durante un tiempo y migrar clientes poco a poco?

Si es así, está atrapado tocando cada sistema cliente independientemente; ya sea para apuntar a un nuevo maestro, o agregar una entrada de archivo de hosts, o algo así. Si ese es el caso, entonces también podría comenzar el nuevo maestro nuevo y volver a firmar cada cliente (es mejor que un hack de archivos hosts para solucionar los problemas de validación).

Si no es así (si planea eliminar el servidor anterior y cortar todo de una vez), simplemente tome el nombre de host del servidor anterior con el nuevo servidor; el certificado se reconocerá como válido si los clientes se están conectando al nuevo servidor con el nombre anterior (el nombre que está en el certificado).

Shane Madden
fuente
Sí, la pregunta era si es posible automatizar la firma de cada cliente. Creo que ha respondido señalando que los certificados están vinculados al nombre de host que el cliente está utilizando para llegar a un servidor en particular, por lo que si reutilizo el nombre de host, podré reutilizar los certificados. ¡Gracias!
mrisher
Bueno, un simple puppetca --sign --allhará el truco para los certificados de cliente; el servidor es el que le da problemas con los errores de discrepancia.
Shane Madden
3

Simplemente puede usar el $ssldirdel antiguo puppetmaster y usarlo en el nuevo puppetmaster.

Aparte de eso, debería ser posible implementar un script que:

  • (Sin relación con la secuencia de comandos del cliente: posiblemente active el inicio de sesión automático en el nuevo servidor puppet)
  • corre un poco más tarde
  • detener al cliente de marionetas
  • limpiar el cliente ssldir
  • modifique puppet.conf en el cliente para que apunte al nuevo servidor
  • cree un archivo de bloqueo para asegurarse de que no cause un bucle de reconfiguración sin fin
  • empezar de nuevo títere

Feo, pero siempre y cuando el módulo de migración esté solo en el servidor anterior y se asegure de que no haya ningún módulo de migración solo en el nuevo servidor, es una cosa única y debería hacer la magia ...

Martin M.
fuente
Hola: El autosigntruco es bueno, pero parece arriesgado. Sin ella, ¿esta solución realmente soluciona el problema de falta de coincidencia del certificado del cliente?
mrisher
Lo hace, el autosign es solo la manera perezosa de no tener que lidiar con miles de clientes que serán nuevos en el puppetmaster. El concepto es el mismo, la diferencia es que los clientes que migraron al nuevo maestro no harán ningún trabajo a menos que estén firmados
Martin M.