Only setup CRL cron job if needed
[cacert-puppet.git] / sitemodules / profiles / manifests / base.pp
index ea3855f..bf2a354 100644 (file)
 #
 # @param rootalias alias that gets emails for root
 #
+# @param crl_job_enable whether to setup the hourly CRL update job
+#
+# @param crl_job_services which services to reload after the CRL update
+#
 # Examples
 # --------
 #
 # Copyright 2016-2018 Jan Dittberner
 #
 class profiles::base (
-  Array[String] $admins     = [],
-  Hash[String, Data] $users = {},
-  String $rootalias         = "${trusted['certname']}-admin@cacert.org",
+  Array[String] $admins           = [],
+  Hash[String, Data] $users       = {},
+  String $rootalias               = "${trusted['certname']}-admin@cacert.org",
+  Boolean $crl_job_enable         = false,
+  Array[String] $crl_job_services = [],
 ) {
   # ensure admin users for this container
   $admins.each |String $username| {
@@ -180,31 +186,39 @@ class profiles::base (
     recipient => $rootalias,
   }
 
-  package { ['ca-certificates', 'ca-cacert']:
-    ensure => installed,
-  }
+  if ($crl_job_enable) {
+    package { ['ca-certificates', 'ca-cacert']:
+      ensure => installed,
+    }
 
-  file { '/var/local/ssl':
-    ensure => directory,
-    owner  => 'root',
-    group  => 'root',
-    mode   => '0755',
-  }
+    file { '/var/local/ssl':
+      ensure => directory,
+      owner  => 'root',
+      group  => 'root',
+      mode   => '0755',
+    }
 
-  file { '/var/local/ssl/crls':
-    ensure  => directory,
-    owner   => 'root',
-    group   => 'root',
-    mode    => '0755',
-    require => File['/var/local/ssl'],
-  }
+    file { '/var/local/ssl/crls':
+      ensure  => directory,
+      owner   => 'root',
+      group   => 'root',
+      mode    => '0755',
+      require => File['/var/local/ssl'],
+    }
 
-  file { '/etc/cron.hourly/update-crls':
-    ensure  => file,
-    owner   => 'root',
-    group   => 'root',
-    mode    => '0755',
-    source  => 'puppet:///modules/profiles/base/update-crls',
-    require => [Package['ca-certificates'], Package['ca-cacert'], File['/var/local/ssl/crls']],
+    file { '/etc/cron.hourly/update-crls':
+      ensure  => file,
+      owner   => 'root',
+      group   => 'root',
+      mode    => '0755',
+      content => epp(
+        'profiles/base/update-crls.epp',
+        { 'service' => $crl_job_services }),
+      require => [Package['ca-certificates'], Package['ca-cacert'], File['/var/local/ssl/crls']],
+    }
+  } else {
+    file { '/etc/cron.hourly/update-crls':
+      ensure => absent,
+    }
   }
 }