Есть ли способ запустить утилиту configtest (например, apache2ctl -t) перед попыткой перезапуска службы при изменении одного из ее файлов конфигурации?
Пример использования здесь заключается в том, что я хочу быть устойчивым к ошибкам конфигурации в конфигурации apache (потому что apache просто останавливается, когда видит ошибку конфигурации, оставляя меня с остановленным apache)
Вы можете использовать require => Exec[]
и шлейфом exec
чтобы потребовать изменения конфигурации.
Если Exec не работает (статус выхода! = 0), последующие задачи, требующие этого, также должны завершиться неудачей. Я делаю что-то похожее на выполнение ssh-keygen, а затем устанавливаю специальные разрешения для .ssh при создании новых пользователей.
Пример:
# 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"],
}