
¿Cuál sería la forma preferida de actualizar la configuración de un nodo al aprovisionar nodos nuevos?
Por ejemplo, digamos que hay un entorno similar a un clúster.
Estoy aprovisionando nodos, digamos que estos nodos necesitan acceder a un servidor MySQL o Memcached en algún otro nodo (también administrado por Puppet)
Ahora, cuando agrego un nuevo nodo, ¿cómo hago para actualizar la configuración de iptables o cualquier otro paso de configuración inicial que sea necesario en otro nodo para permitir que el nuevo nodo comience su trabajo?
Actualmente estoy usando un sistema de "aprovisionamiento" local para estas tareas. ¿Existe una manera conveniente de usar Puppet para algo como esto?
Respuesta1
No es particularmente simple, pero es posible usando recursos estándar de Puppet.
Para configuraciones comoreglas de firewally monitoreo, puedes usar bastante fácilmenterecursos exportadosjunto con un back-end de configuraciones almacenadas comoPuppetDB.
La idea detrás de los recursos exportados es que cuando el manifiesto Puppet se ejecuta en el nodo de destino, "exporta" algunos recursos y los almacena. Puede configurar otros nodos para recopilar estos recursos y aplicarlos en sus propios manifiestos.
Para otras configuraciones, es posible que deba ser más inteligente y utilizar elconcatmódulo además de los recursos exportados; por ejemplo, en teoría, puede utilizar un recurso concat::fragment exportado y recopilar esos recursos donde desee la información, por ejemplo, credenciales de base de datos o direcciones IP del balanceador de carga.
Respuesta2
Esto no está bien respaldado por Puppet. Para obtener este tipo de información puedesconsulta PuppetDB. Hasta donde yo sé, Puppet no incluye la capacidad de hacer esto por sí mismo, peroconsulta-títere-títeredbañade eso.Aquí hay un tutorialsobre cómo juntar los dos para generar un archivo de configuración con datos de PuppetDB.