deployment - semipermanentes - Puppet no inicia un servicio(barniz) cuando se ejecuta la aplicación de marionetas
uñas permanentes precio (3)
Esto está funcionando bien:
service { $service:
ensure => running,
enable => true,
status => "/usr/sbin/service ${service} status",
require => Package["$service"],
}
Tengo un manifiesto de marionetas que indica que el servicio "barniz" debería estar ejecutándose, pero no lo está.
Tengo otro servicio definido, apache2, que funciona bien, y empiezo cada vez que ejecuto aplicación de marionetas.
vagrant@lucid32:~$ sudo netstat -tunelp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 3749 605/sshd
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 1000 5169 1110/0
tcp 0 0 0.0.0.0:48828 0.0.0.0:* LISTEN 0 3445 552/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 0 3228 484/portmap
tcp6 0 0 :::22 :::* LISTEN 0 3751 605/sshd
tcp6 0 0 ::1:6010 :::* LISTEN 1000 5168 1110/0
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 4179 917/dhclient
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 3277 558/dhclient3
udp 0 0 0.0.0.0:728 0.0.0.0:* 0 3430 552/rpc.statd
udp 0 0 0.0.0.0:111 0.0.0.0:* 0 3227 484/portmap
udp 0 0 0.0.0.0:54265 0.0.0.0:* 0 3442 552/rpc.statd
udp 0 0 10.0.2.15:123 0.0.0.0:* 102 4259 904/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 0 4208 904/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 0 4203 904/ntpd
udp6 0 0 fe80::a00:27ff:feb5:123 :::* 0 4210 904/ntpd
udp6 0 0 ::1:123 :::* 0 4209 904/ntpd
udp6 0 0 :::123 :::* 0 4204 904/ntpd
vagrant@lucid32:~$
Aplicar títere:
vagrant@lucid32:~$ sudo puppet apply --verbose /vagrant/manifests/default.pp
info: Applying configuration version ''1359558916''
notice: /Stage[main]/Apachevarnish/Service[apache2]/ensure: ensure changed ''stopped'' to ''running''
notice: Finished catalog run in 0.15 seconds
Pero el barniz no comienza.
Este es el archivo de manifiesto:
class apachevarnish {
Package { ensure => "installed" }
package { "apache2": }
package { "varnish": }
file { ''/etc/hosts'':
ensure => link,
target => "/vagrant/hosts",
force => true
}
file { ''/var/www'':
ensure => link,
target => "/vagrant",
notify => Service[''apache2''],
force => true
}
file { ''/etc/varnish'':
ensure => link,
target => "/vagrant/etc/varnish",
# notify => Service[''varnish''],
force => true
}
service { "varnish":
ensure => running,
require => Package["varnish"],
}
service { "apache2":
ensure => running,
require => Package["apache2"],
}
}
¡Gracias!
Los documentos dicen que Puppet espera que el script de inicio del servicio tenga un comando de "estado" que devuelve 0 si el servicio se está ejecutando y un valor diferente de cero. Este es el comportamiento predeterminado de la marioneta. Intenta hacer un
$> sudo service <service_name> status
$> echo $? //Make sure you are getting the correct return values that puppet expects.
En caso de que su script de inicio no le proporcione los tipos de devolución deseados, configure " hasstatus => false" dentro del bloque de directivas de servicio y pruébelo.
Respondiendo mi propia pregunta:
De acuerdo con esto: https://projects.puppetlabs.com/issues/12773 el problema radica en los guiones de inicio de Ubuntu, o el comando "servicio" no devuelve un código de salida apropiado.
La solución es establecer una verificación de estado personalizada usando grep y servicio.
service { "varnish":
ensure => running,
enable => true,
hasrestart => true,
hasstatus => true,
status => ''/usr/sbin/service varnish status | grep "is running"'',
require => Package["varnish"],
}