Puppet: como faço para executar um configtest antes de reiniciar um serviço

3

Existe uma maneira de executar um utilitário configtest (por exemplo, apache2ctl -t) antes de tentar reiniciar um serviço quando um de seus arquivos de configuração é alterado?

Caso de uso aqui é que eu quero ser resiliente contra erros de configuração em uma configuração do apache (porque o apache pára quando vê o erro de configuração, deixando-me com um apache parado)

    
por Michael Siebert 13.01.2015 / 14:54

1 resposta

3

Você pode usar um require => Exec[] e daisy chain o exec para exigir a (s) alteração (ões) de configuração.

Se o Exec falhar (status de saída! = 0), as tarefas subsequentes que o exigem também falharão. Eu faço algo semelhante para executar o ssh-keygen e, em seguida, defino permissões especiais no .ssh ao criar novos usuários.

Exemplo:

# Ensure the .ssh directory exists for each user
file { "${dot_ssh_dir}":
 ensure => directory,
 owner => $title,
 mode => 700,
 require => File["${home_dir}"],
}

# Run ssh-keygen (ONLY if id_rsa doesn't exist)
exec { "${title} ssh-keygen":
 command => "ssh-keygen -f ./id_rsa -q -N ''",
 cwd => $dot_ssh_dir,
 user => $title,
 creates => "${keyfile_private}",
 path => ['/usr/bin', '/usr/sbin/', '/usr/local/sbin'],
 require => File[$dot_ssh_dir],
}

# AuthorizedKeys should be 600
file { "${authorized_keys}": 
 source => "${keyfile_public}",
 ensure => present,
 mode => 600,
 owner => $title,
 group => 'sftpusers',
 require => Exec["${title} ssh-keygen"],
}
    
por 13.01.2015 / 16:39

Tags