2012-10-07 15 views
5
  • CentOS liberan 5,4 (Final)
  • puppet-server-2.7.19-1.el5 se instala desde el repositorio puppetlabs.

puppetmaster se inició con éxito, pero no crea el archivo pid. Es la razón de [ FAILED ] mensaje al parar:La secuencia de comandos de inicio Puppet no crea el archivo pid?

/etc/init.d/puppetmaster stop 
Stopping puppetmaster:          [FAILED] 

El script de inicio: http://fpaste.org/nsfI/

El /etc/rc.d/init.d/functions biblioteca: http://fpaste.org/ox5Q/

Y esto es lo que me pasa cuando se ejecuta en el modo de depuración: http://fpaste.org/DkoS/

Sé el camino a echo pid a un archivo manualmente después de comenzar, pero ¿por qué daemon función de --pidfile trabajo?

daemon $PUPPETMASTER $PUPPETMASTER_OPTS --masterport=${PUPPETMASTER_PORTS[$i]} --pidfile=/var/run/puppet/puppetmaster.${PUPPETMASTER_PORTS[$i]}.pid

Claro, amo de la marioneta se ejecuta como puppet usuario:

ps -ef | grep [p]uppet 
puppet 23418  1 0 18:13 ?  00:00:00 /usr/bin/ruby /usr/sbin/puppetmasterd 

y el propietario de /var/run/puppet/ carpeta es puppet:

# ls -ld /var/run/puppet/ 
drwxr-xr-x 2 puppet puppet 4096 Sep 17 18:46 /var/run/puppet/ 
+0

Incluya el nombre/versión/distribución del sistema operativo que está utilizando. También publique la salida de ejecutar "which daemon". El problema es probable con el comando daemon, pero estoy teniendo problemas para rastrear listados de documentos/errores para el mismo. –

+0

En base a Red Hat, 'daemon' es una función" estándar "que se define en el script'/etc/rc.d/init.d/functions'. Actualizado mi pregunta. – quanta

+0

Los enlaces a fpaste.org están rotos ... :( – eikonomega

Respuesta

2

Corresponde al programa controlado (en este caso puppetmasterd), no la función daemon(), para crear el archivo pid; daemon() se basa en esto.

Confirmar donde puppetmasterd crea su pidfile (que podría ser /var/run/puppet.pid, /var/lib/puppet/run/master.pid, etc.) Para averiguarlo, inspeccionar el contenido de puppetmasterd (Si un script), o matar a continuación puppetmasterdstrace -f puppetmasterd 2>&1 | grep '\.pid'.

Modifique el valor de pidfile en su /etc/init.d/puppetmaster según corresponda.

0

Por lo tanto, me parece que podría haber un par de posibilidades aquí:

  1. Si usted está tratando de utilizar la opción --pidfile del comando demonio que cree que tiene un problema de sintaxis.

    • El comando daemon de Red Hat tiene la siguiente firma (inútil): Usage: daemon [+/-nicelevel] {program}. Lo que no está del todo claro es que cualquier cosa que incluya después de la ubicación del programa se trata como una opción que se pasa al programa, no a la llamada a la función daemon.
    • Por lo tanto, en su caso está pasando el argumento --pidfile al $PUPPETMASTER en lugar de daemon().Se podía remediar esto mediante el uso de lo siguiente: daemon --pidfile=/var/run/puppet/puppetmaster.${PUPPETMASTER_PORTS[$i]}.pid $PUPPETMASTER $PUPPETMASTER_OPTS --masterport=${PUPPETMASTER_PORTS[$i]}
  2. La segunda opción es que $PUPPETMASTER (o más bien, el programa detrás de él) podría daemonize sí mismo, y si es así, podría ser responsable de la creación de su propia .pid archivo. La herramienta de gestión de procesos Circus funciona de esta manera. Probablemente sea una opción en un archivo de configuración o para el programa que representa por $PUPPETMASTER.

    • No soy un usuario de Puppet, por lo que no podré ayudarlo con los detalles aquí. Pero buscaría en el Puppet labs documentation para obtener más información sobre esta opción.
    • Es importante observar si $ PUPPETMASTER se demoniza a sí mismo, entonces el argumento --pidfile pasado al daemon() no tendrá ningún efecto.

Buena caza!

Cuestiones relacionadas