Марионетка: как я выполняю configtest прежде, чем перезапустить сервис

Существует ли способ выполнить configtest утилиту (например, apache2ctl-t) прежде, чем попытаться перезапустить сервис когда один из его измененных конфигурационных файлов?

Вариант использования здесь - то, что я хочу быть эластичным против ошибок конфигурации в апачской конфигурации (потому что апач просто останавливается, когда он видит ошибку конфигурирования, оставляя меня с остановленным апачем),

3
задан 13 January 2015 в 15:54
1 ответ

Вы можно использовать 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"],
}
3
ответ дан 3 December 2019 в 06:32

Теги

Похожие вопросы