-# Sets up so that you can use fragments to build a final config file,
+# @summary
+# Manages a file, compiled from one or more text fragments.
+#
+# @example
+# concat { '/tmp/concat':
+# ensure => present,
+# owner => 'root',
+# group => 'root',
+# mode => '0644',
+# }
+#
+# @param backup
+# Specifies whether (and how) to back up the destination file before overwriting it. Your value gets passed on to Puppet's native file
+# resource for execution. Valid options: true, false, or a string representing either a target filebucket or a filename extension
+# beginning with ".".
#
# @param ensure
-# Present/Absent
-# @param path
-# The path to the final file. Use this in case you want to differentiate
-# between the name of a resource and the file path. Note: Use the name you
-# provided in the target of your fragments.
-# @param owner
-# Who will own the file
+# Specifies whether the destination file should exist. Setting to 'absent' tells Puppet to delete the destination file if it exists, and
+# negates the effect of any other parameters.
+#
+# @param ensure_newline
+# Specifies whether to add a line break at the end of each fragment that doesn't already end in one.
+#
+# @param format
+# Specify what data type to merge the fragments as. Valid options: 'plain', 'yaml', 'json', 'json-array', 'json-pretty',
+# 'json-array-pretty'.
+#
+# @param force
+# Specifies whether to merge data structures, keeping the values with higher order. Used when format is specified as a value other than
+# 'plain'.
+#
# @param group
-# Who will own the file
+# Specifies a permissions group for the destination file. Valid options: a string containing a group name or integer containing a gid.
+#
# @param mode
-# The mode of the final file
-# @param show_diff
-# Use metaparam for files to show/hide diffs for reporting when using eyaml
-# secrets. Defaults to true
-# @param warn
-# Adds a normal shell style comment top of the file indicating that it is
-# built by puppet.
-# Before 2.0.0, this parameter would add a newline at the end of the warn
-# message. To improve flexibilty, this was removed. Please add it explicitely
-# if you need it.
-# @param backup
-# Controls the filebucketing behavior of the final file and see File type
-# reference for its use. Defaults to 'puppet'
-# @param replace
-# Whether to replace a file that already exists on the local system
+# Specifies the permissions mode of the destination file. Valid options: a string containing a permission mode value in octal notation.
+#
# @param order
-# Select whether to order associated fragments by 'alpha' or 'numeric'.
-# Defaults to 'alpha'.
-# @param ensure_newline
-# Specifies whether to ensure there's a new line at the end of each fragment.
-# Valid options: 'true' and 'false'. Default value: 'false'.
+# Specifies a method for sorting your fragments by name within the destination file. You can override this setting for individual
+# fragments by adjusting the order parameter in their concat::fragment declarations.
+#
+# @param owner
+# Specifies the owner of the destination file. Valid options: a string containing a username or integer containing a uid.
+#
+# @param path
+# Specifies a destination file for the combined fragments.
+#
+# @param replace
+# Specifies whether to overwrite the destination file if it already exists.
+#
# @param selinux_ignore_defaults
+# See the file type's selinux_ignore_defaults documentention:
+# https://docs.puppetlabs.com/references/latest/type.html#file-attribute-selinux_ignore_defaults
+#
# @param selrange
+# See the file type's selrange documentention: https://docs.puppetlabs.com/references/latest/type.html#file-attribute-selrange
+#
# @param selrole
+# See the file type's selrole documentention: https://docs.puppetlabs.com/references/latest/type.html#file-attribute-selrole
+#
# @param seltype
+# See the file type's seltype documentention: https://docs.puppetlabs.com/references/latest/type.html#file-attribute-seltype
+#
# @param seluser
+# See the file type's seluser documentention: https://docs.puppetlabs.com/references/latest/type.html#file-attribute-seluser
+#
+# @param show_diff
+# Specifies whether to set the show_diff parameter for the file resource. Useful for hiding secrets stored in hiera from insecure
+# reporting methods.
+#
# @param validate_cmd
# Specifies a validation command to apply to the destination file.
-# Requires Puppet version 3.5 or newer. Valid options: a string to be passed
-# to a file resource. Default value: undefined.
+#
+# @param warn
+# Specifies whether to add a header message at the top of the destination file. Valid options: the booleans true and false, or a string
+# to serve as the header.
+# If you set 'warn' to true, concat adds the following line with an order of 0:
+# `# This file is managed by Puppet. DO NOT EDIT.`
+# Before 2.0.0, this parameter would add a newline at the end of the warn message. To improve flexibilty, this was removed. Please add
+# it explicitly if you need it.
#
define concat(
Enum['present', 'absent'] $ensure = 'present',
Optional[String] $selrole = undef,
Optional[String] $seltype = undef,
Optional[String] $seluser = undef,
+ Optional[String] $format = 'plain',
+ Optional[Boolean] $force = false,
) {
- $safe_name = regsubst($name, '[/:~\n\s\+\*\(\)@]', '_', 'G')
+ $safe_name = regsubst($name, '[\\\\/:~\n\s\+\*\(\)@]', '_', 'G')
$default_warn_message = "# This file is managed by Puppet. DO NOT EDIT.\n"
case $warn {
order => $order,
ensure_newline => $ensure_newline,
validate_cmd => $validate_cmd,
+ format => $format,
+ force => $force,
}
if $_append_header {