]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - modules/concat/manifests/fragment.pp
Add concat module
[dsa-puppet.git] / modules / concat / manifests / fragment.pp
diff --git a/modules/concat/manifests/fragment.pp b/modules/concat/manifests/fragment.pp
new file mode 100644 (file)
index 0000000..f289712
--- /dev/null
@@ -0,0 +1,46 @@
+# Puts a file fragment into a directory previous setup using concat
+#
+# OPTIONS:
+#   - target    The file that these fragments belong to
+#   - content   If present puts the content into the file
+#   - source    If content was not specified, use the source
+#   - order     By default all files gets a 10_ prefix in the directory
+#               you can set it to anything else using this to influence the
+#               order of the content in the file
+#   - ensure    Present/Absent or destination to a file to include another file
+#   - mode      Mode for the file
+#   - owner     Owner of the file
+#   - group     Owner of the file
+#   - backup    Controls the filebucketing behavior of the final file and
+#               see File type reference for its use.  Defaults to 'puppet'
+define concat::fragment($target, $content=undef, $source=undef, $order=10, $ensure = 'present', $mode = '0644', $owner = $::id, $group = $concat::setup::root_group, $backup = 'puppet') {
+  $safe_name = regsubst($name, '[/\n]', '_', 'GM')
+  $safe_target_name = regsubst($target, '[/\n]', '_', 'GM')
+  $concatdir = $concat::setup::concatdir
+  $fragdir = "${concatdir}/${safe_target_name}"
+
+  # if content is passed, use that, else if source is passed use that
+  # if neither passed, but $ensure is in symlink form, make a symlink
+  case $ensure {
+    '', 'absent', 'present', 'file', 'directory': {
+      if ! ($content or $source) {
+        crit('No content, source or symlink specified')
+      }
+    }
+    default: {
+      # do nothing, make puppet-lint happy
+    }
+  }
+
+  file{"${fragdir}/fragments/${order}_${safe_name}":
+    ensure  => $ensure,
+    mode    => $mode,
+    owner   => $owner,
+    group   => $group,
+    source  => $source,
+    content => $content,
+    backup  => $backup,
+    alias   => "concat_fragment_${name}",
+    notify  => Exec["concat_${target}"]
+  }
+}