Colleen Murphy 220481fab4 Make services work with systemd
Without this patch, the SysV init scripts defined in this module will
not be recognized by systemd and puppet will fail to enable the
services. This is because between installing the init script and
starting the service, systemd needs to be reloaded. This patch adds a
new class to define the systemd reload. The conditional logic for
whether the reload exec should be in the catalog is defined in the
class. Then the file and service resources that depend on the reload
define their relationships to the new class rather than to the exec
resource so that the conditional logic does not have to be repeated for
every resource.

We also need to correct a bug in the init scripts themselves. The
Provides statement needs to give a unique service name, not just 'zuul'.
If it is not unique, insserv will error with "service zuul already
provided!" when systemd tries to enable the service.

Change-Id: Ica849094c6011806bdd0b205ba6b2b73856b7aa6
2017-06-17 19:53:01 +02:00

72 lines
2.0 KiB
Puppet

# Copyright 2012-2013 Hewlett-Packard Development Company, L.P.
# Copyright 2014 OpenStack Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# == Class: zuul::merger
#
class zuul::merger (
$ensure = undef,
$manage_log_conf = true,
) {
service { 'zuul-merger':
ensure => $ensure,
name => 'zuul-merger',
enable => true,
hasrestart => true,
require => [File['/etc/init.d/zuul-merger'],
Class['zuul::systemd_reload']]
}
cron { 'zuul_repack':
user => 'zuul',
hour => '4',
minute => '7',
command => 'find /var/lib/zuul/git/ -maxdepth 3 -type d -name ".git" -exec git --git-dir="{}" pack-refs --all \;',
environment => 'PATH=/usr/bin:/bin:/usr/sbin:/sbin',
require => [User['zuul'],
File['/var/lib/zuul/git']],
}
if $manage_log_conf {
file { '/etc/zuul/merger-logging.conf':
ensure => present,
source => 'puppet:///modules/zuul/merger-logging.conf',
}
}
include ::logrotate
::logrotate::file { 'merger.log':
log => '/var/log/zuul/merger.log',
options => [
'compress',
'missingok',
'rotate 30',
'daily',
'notifempty',
],
require => Service['zuul-merger'],
}
::logrotate::file { 'merger-debug.log':
log => '/var/log/zuul/merger-debug.log',
options => [
'compress',
'missingok',
'rotate 30',
'daily',
'notifempty',
],
require => Service['zuul-merger'],
}
}