¿Por qué Puppet cambia de entorno y luego regresa?

¿Por qué Puppet cambia de entorno y luego regresa?

Esto es con Puppet 5.5.22 y Foreman 1.22.0-develop. Sé que esta es una instalación obsoleta de Foreman y Puppet, pero hasta que los reemplace con nuevas versiones (un proyecto próximo), son con lo que debo lidiar.

# puppet agent -tv
Notice: Local environment: 'production' doesn't match server specified node environment 'development', switching agent to 'development'.
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Notice: Local environment: 'development' doesn't match server specified environment 'test', restarting agent run with environment 'test'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for servername.example.com
Info: Applying configuration version '1694623566'
Notice: Applied catalog in 12.93 seconds

Entiendo que la 'producción' del entorno local original puede provenir de /etc/puppet/puppet.conf o es el valor predeterminado si no se especifica ningún entorno en ese archivo. En este caso es lo último (no se especifica ningún entorno localmente).

El 'desarrollo' del entorno de nodo se configuró para este host en Foreman (el ENC o clasificador de nodo externo para esta instalación de Puppet) y es la asignación de entorno correcta deseada.

El entorno de "prueba" es el entorno que Foreman está configurando, de manera amplia y general, para todos nuestros hosts en este momento y es el entorno en el que se encontraba este host en particular antes de que lo cambiara a través de la interfaz de usuario de Foreman para que fuera "desarrollo". (En otras palabras, "prueba" es en realidad nuestro entorno de producción; el entorno llamado "producción" no está en uso en este momento).

Intenté consultar la documentación de Foreman y no encontré nada sobre los fundamentos de cómo funcionan las asignaciones ambientales; la documentación equivale simplemente a un recorrido por la interfaz de usuario que no resulta útil para solucionar problemas.


Probablemente relacionado, hay otra rareza aquí en que aparece servername.example.comdos vecesen la interfaz de usuario de Foreman.

Fuerza Nombre Sistema operativo Entorno de marionetas Modelo Grupo anfitrión Último informe Comportamiento
[rueda giratoria] nombre del servidor Debian [versión] desarrollo [nombredeservidorblade] nombre del grupo de host [blanco] [Botón Editar]
[icono de encendido, gris] nombre del servidor Debian [versión] prueba PC estándar [información de versión] [blanco] Hace 6 minutos [Botón Editar]

Si intento editar el entorno para cualquiera de las entradas haciendo clic en el botón "Editar", cuando hago clic en "Enviar", aparece "ya ha sido tomado" en rojo junto al campo "Nombre" como si estuviera intentando crear una nueva entrada de host.

Sin embargo, si en lugar de eso selecciono el host con la casilla de verificación a la izquierda de la vista de lista y luego voy a la parte superior y elijo "Seleccionar acción" -> "Cambiar entorno", entoncesaparecetrabajar. Ambas entradas muestran "desarrollo" en la interfaz de usuario. Pero la próxima ejecución de Puppet en el nombre del servidor producirá el resultado que se muestra en la parte superior de esta publicación, y luego, al actualizar la interfaz de usuario de Foreman, se mostrará nuevamente una entrada con "desarrollo" y una entrada con "prueba".

¿Qué podría estar causando esto? ¿Cómo puedo asignar hosts a entornos y mantenerlo fijo?

Respuesta1

Resolví esto.

Hay cierta idiosincrasia en nuestra configuración de Puppet en el sentido de que todavía hay algunos restos persistentes de la configuración de Puppet 3 en alguna parte; no estoy seguro de dónde exactamente, pero la entrada del servidor en la lista que volvería a ser "prueba" también mostraba a su titiritero como el viejo servidor títere. Ese servidor títere ya no existe, PERO el nuevo servidor capataz también tiene ese nombre. Un poco complicado y no entiendo completamente de dónde vienen las dos entradas diferentes, pero arreglé la asignación del entorno de aleteo de la siguiente manera:

  1. Eliminar ambas entradas de host en la interfaz de usuario de Foreman (asegurándose de leer atentamente el mensaje de confirmación y de que esto NO elimine los hosts o los discos, y que solo las dos entradas de host deseadas aparezcan en la confirmación).
  2. En el servidor de marionetas (es decir, conectado al servidor Foreman en la línea de comando), ejecutandopuppet cert clean servername.example.com
  3. En servername.example.com, eliminar el directorio ( aunque /var/lib/puppet/ssl/usé an funcionaría igual de bien).find /var/lib/puppet/ssl/ -deleterm -rf /var/lib/puppet/ssl/
  4. En servername.example.com, edite el archivo /etc/puppet/puppet.confpara configurarlo environment = developmentdebajo del [agent]encabezado.
  5. Volver a ejecutar Puppet en servername.example.com con puppet agent -tv.

Esto aplicó correctamente el código del entorno de desarrollo sin advertencias sobre entornos no coincidentes, y la interfaz de usuario de Foreman ahora muestra solo una entrada para este servidor e indica correctamente que su entorno es development.

información relacionada