Error: Illegal name. The given name _ensure does not conform to the naming rule \A((::)?[a-z0-9]w*)(::[a-z0-9]w*)*\z at /etc/puppet/vendor/modules/concat/manifests/fragment.pp:57:5
This is to work around a validation issue that arises under the 3.x future
parser, as proper numeric types have been introduced (ie, not all scalar values
are strings). Users have come to expect to to be able to pass in unquoted
integer values to the order parameter which will fail to validate as a string
when the future parser is enabled.
Under Puppet 3.5.1 (and possibly earlier versions, too), the validate_string($order)
fails when $order is actaully a numeric type. Apparently there is more strict type
checking now. Can't just change validate_string to a is_numeric check, because it's
fairly common to use strings like '01' for the order parameter, which doesn't pass
the is_numeric test. Additionally, there is nothing saying that $order must be a
number. Ultimately the ordering gets implemented as filesystem directory list
sorting.
The current code doesn't correctly account for an absent with a
path set, incorrectly trying to remove $name instead. Fixing this
raised the issue that fragments left with no ensure will fail when
absent is set as the fragdir is deleted.
As a workaround for this we check the `ensure` parameter from the
concat{} resource with getparam() and then pass that to the fragment
if no specific ensure was passed in. This effectively ensures
fragments inherit their parents ensure status.
There's no need to allow the ownership/permissions of a fragment to be set as
the concat define sets ownership/permissions on the final aggregated file.
Revert validation of the target param as an absolute path and allow it to be an
arbitrary string. This is so the
concat { <foo>: path => ... }
concat::fragment { ...: target => <foo> }
association may be symbolic as long as concat path param is specified. This
should resolve the symbolic name regression introduced in:
https://github.com/puppetlabs/puppetlabs-concat/commit/eaf84079
- It adds a ruby version of the bash script.
- Refactor setup.pp to include new variables.
- Generalizes command execution according to variables in setup.pp.
The use of $::id to set the default user/owner and group has caused
multiple bugs in the past, is incorrectly used to infer the egid,
introduces a dependency on the `id` fact, and provides no functionally
that can't be accomplished by passing `undef` or not setting the
respective params on the file & exec types.
A possible alternative would be to introduce a dep on the $::gid fact
but that would mean the entire module would depend on a version of
facter than hasn't shipped yet (unworkable) or to add a gid/egid fact
into this module (ugly).
Unless the class `concat::setup` has been manually included into the
manifest before using the `concat` / `concat::fragment` defined types,
the puppet master will generate this warning while compiling the catalog.
Tue Oct 15 14:05:06 -0700 2013 Scope(Concat[/etc/exports]) (warning):
Could not look up qualified variable 'concat::setup::root_group'; class
concat::setup has not been evaluated
The need to `include concat::setup` directly into the manifest has never
been part of the documented API.
Using the case statement does not properly notify the file resource about
changes, leading to unexpected results when generating fragments from Puppet
templates. This patch fixes that issue.
* ./manifests/init.pp - WARNING: ensure found on line but it's not the first attribute on line 222
* ./manifests/setup.pp - WARNING: selector inside resource block on line 34
* ./manifests/fragment.pp - WARNING: case statement without a default case on line 28
To be able to use the module as an unprivileged user we need to
adjust certain things:
* only enforce the run user and group if we are root and can
actually change the user
* set owner/group of our files and directories to our own user/group
* place the concat script in a location we can write -> use the
concat dir for that.
The concat warn parameter can now be any string (and needs to include
the appropriate commenting character) and will then override the default
(which still gets printed when warn=>true).
Signed-off-by: martin f. krafft <madduck@madduck.net>