Puppet: Remoção do pacote e garantir a parada

7

Sou muito novo no Puppet, mas até agora gosto muito. No momento, estou configurando para automatizar uma pequena arquitetura.

Eu tenho um problema - quero remover um pacote e garantir que ele seja interrompido. Para conseguir isso, eu tenho a seguinte entrada no meu manifesto:

package { 'supervisor':
    ensure => absent,
}

service { 'supervisor':
    ensure     => stopped,
    enable     => false,
    hasstatus  => true,
}

O problema com isso é que, uma vez que o manifesto foi aplicado ao nó uma vez, recebo o seguinte erro na próxima execução:

debug: Service[supervisor](provider=debian): Could not find supervisor in /etc/init.d
debug: Service[supervisor](provider=debian): Could not find supervisor.sh in /etc/init.d
err: /Stage[main]/Screenly_core/Service[supervisor]: Could not evaluate: Could not find init script for 'supervisor'

Existe alguma maneira de fazer algum tipo de declaração condicional, de tal forma que o procedimento de parada só seja executado se o pacote realmente estiver presente (e depois executado antes da remoção do pacote)?

    
por vpetersson 08.01.2012 / 16:08

1 resposta

3

Em sistemas baseados no debian (e eu assumo também em sistemas rpm) a remoção de um pacote interrompe seus serviços antes de excluir arquivos (fase de pré-inserção em pacotes deb).

Mas o que você pergunta pode ser obtido inserindo uma dependência com 'require'

package { 'supervisor':
    ensure => absent,
    require => Service["supervisor"],
}

service { 'supervisor':
    ensure     => stopped,
    enable     => false,
    hasstatus  => true,
}
    
por 08.01.2012 / 21:35

Tags