Faça o agente fantoche reiniciar

2

Eu tenho um arquivo que avisa o agente fantoche.

No módulo network , as configurações de proxy estão incluídas no arquivo .gemrc assim:

file { "/root/.gemrc":
  content => "http_proxy: $http_proxy\n",
  notify => Service['puppet'],
}

O problema é que o fantoche pára e não reinicia.

Aug 31 12:05:13 snch7log01 puppet-agent[1117]: (/Stage[main]/Network/File[/root/.gemrc]/content) content changed '{md5}2b00042f7481c7b056c4b410d28f33cf' to '{md5}60b725f10c9c85c70d97880dfe8191b3'
Aug 31 12:05:13 snch7log01 puppet-agent[1117]: Caught TERM; calling stop

Eu assumo que o código faz algo como /etc/init.d/puppet stop && /etc/init.d/puppet start Como o boneco não está funcionando, ele não pode começar sozinho ... faz sentido.

Como fazer o fantoche reiniciar sozinho quando esse arquivo muda? Note que este arquivo pode não existir também.

    
por SamK 31.08.2012 / 14:29

3 respostas

4

Você pode precisar adicionar à declaração de recurso de serviço para 'fantoche':

hasrestart => true,
    
por 31.08.2012 / 15:03
1

Além de garantir que o "hasrestart" esteja no manifesto, você também deve se certificar de que

"ensure => running"

Está no manifesto. Aqui está minha cópia:

class puppet::service {
  service { puppet:
    ensure => running,
    enable  => true,
    hasrestart => true,
    subscribe => File["/etc/puppet/puppet.conf"],
  }     
}
    
por 22.09.2012 / 21:43
0

Eu tive um problema semelhante. Eu precisava implantar correções para augeas e usei o fantoche para implantá-las, mas elas não entrariam em vigor até que o puppetd fosse reiniciado. Então, eu precisava de uma maneira rápida e fácil de dizer ao puppetd para reiniciar uma vez. Eu resolvi isso com um script de shell e um exec.

Aqui está o script:

#!/bin/bash
if [ X"$1" != Xbackground ]; then
    OUTDIR=/var/log/puppet
    mkdir -p $OUTDIR
    nohup $0 background > $OUTDIR/puppet_restart.out 2>&1 < /dev/null &
    exit 0
fi

#  If you get here, this is a background copy of this script that has
#  been decoupled from puppet by the nohup above.  Give puppet a chance
#  to finish what it is doing, then restart it.

sleep 60

/sbin/service puppet restart

O manifesto para executar o script faz uso do arquivo de log que ele cria. (Isso funciona bem pela primeira vez - se você fizer atualizações subseqüentes, faça um manifesto que exclua o arquivo de log para que isso seja executado uma vez novamente):

file { "/usr/local/bin/puppet_restart":
    owner => root,
    group => root,
    mode  => 750,
    source => "puppet:///modules/puppet_fix_module/puppet_restart"
}

exec { "restart_puppet":
    command => "/usr/local/bin/puppet_restart",
    path    => ["/usr/bin", "/usr/sbin", "/bin"],
    creates => "/var/log/puppet/puppet_restart.out",
    require => [ File['/usr/local/bin/puppet_restart'],
                 File ["/some/other/file/that/requires/restart"],
               ]
}
    
por 17.12.2013 / 21:30

Tags