Estou usando o debian squeeze com o PostgreSQL 9.1 a partir de backports. O Puppet possui a versão 2.7.14. Infelizmente, o script init retorna o código de saída errado para o status. Portanto, escrevi um status
comando personalizado para detectar se o postgresql está sendo executado ou não.
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "pg_lsclusters -h | awk 'BEGIN {rc=0} {if ($4 != \"online\") rc=3} END { exit rc }'",
provider => debian,
}
Meu comando funciona como um encanto, mas o fantoche parece ter um problema. Eu sempre recebo, notice: /Stage[main]/Postgresql/Service[postgresql]/ensure: ensure changed 'stopped' to 'running'
embora já esteja em execução.
Então tentei o seguinte:
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "exit 0",
provider => debian,
}
Como eu entendi esse status
comando personalizado , o puppet deve sempre pensar que o postgresql está em execução. No entanto, o fantoche tenta iniciar o postgresql - sempre.
Qual é a minha culpa? Ou é um bug no boneco?
status
comando do fantoche funciona como esperado!
provider => init
(e remova oenable
parâmetro).