]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/apache/manifests/custom_config.pp
add Openstack modules to 3rdparty
[dsa-puppet.git] / 3rdparty / modules / apache / manifests / custom_config.pp
diff --git a/3rdparty/modules/apache/manifests/custom_config.pp b/3rdparty/modules/apache/manifests/custom_config.pp
new file mode 100644 (file)
index 0000000..ceb1fd0
--- /dev/null
@@ -0,0 +1,67 @@
+# See README.md for usage information
+define apache::custom_config (
+  $ensure         = 'present',
+  $confdir        = $::apache::confd_dir,
+  $content        = undef,
+  $priority       = '25',
+  $source         = undef,
+  $verify_command = $::apache::params::verify_command,
+  $verify_config  = true,
+) {
+
+  if $content and $source {
+    fail('Only one of $content and $source can be specified.')
+  }
+
+  if $ensure == 'present' and ! $content and ! $source {
+    fail('One of $content and $source must be specified.')
+  }
+
+  validate_re($ensure, '^(present|absent)$',
+  "${ensure} is not supported for ensure.
+  Allowed values are 'present' and 'absent'.")
+
+  validate_bool($verify_config)
+
+  if $priority {
+    $priority_prefix = "${priority}-"
+  } else {
+    $priority_prefix = ''
+  }
+
+  ## Apache include does not always work with spaces in the filename
+  $filename_middle = regsubst($name, ' ', '_', 'G')
+  $filename = "${priority_prefix}${filename_middle}.conf"
+
+  if ! $verify_config or $ensure == 'absent' {
+    $notifies = Class['Apache::Service']
+  } else {
+    $notifies = undef
+  }
+
+  file { "apache_${name}":
+    ensure  => $ensure,
+    path    => "${confdir}/${filename}",
+    content => $content,
+    source  => $source,
+    require => Package['httpd'],
+    notify  => $notifies,
+  }
+
+  if $ensure == 'present' and $verify_config {
+    exec { "service notify for ${name}":
+      command     => $verify_command,
+      subscribe   => File["apache_${name}"],
+      refreshonly => true,
+      notify      => Class['Apache::Service'],
+      before      => Exec["remove ${name} if invalid"],
+    }
+
+    exec { "remove ${name} if invalid":
+      command     => "/bin/rm ${confdir}/${filename}",
+      unless      => $verify_command,
+      subscribe   => File["apache_${name}"],
+      refreshonly => true,
+    }
+  }
+}