Hi,
On 04/24/2018 08:55 PM, Ryan Murphy wrote:
> So I've hit a limitation in puppet where I can't modify a variable after its
> been set. how do I work around this. I have a manifest that I need to be
> able to build up a list of contacts based on certain facts about a server.
>
> Here is an example of my (non functioning) code? Can anyone give me a
> suggestion of how to work around this limitation?
>
> |
> if 'sql' in $hostname.downcase or $wl_server_type == 'db' {
> $contactgroups = 'Windows Server Admins,Microsoft SQL DBAs'
> }
> else {
> $contactgroups = 'Windows Server Admins'
> }
>
> if $wl_app in $btssServers or 'adfs' in $hostname.downcase {
> $contactgroups = "${contactgroups},BT Systems Support"
> }
>
> if $wl_app == 'hea'{
> $contactgroups = "${contactgroups},HEAT Admins"
> }
> |
I know it's maybe satisfying but you can use a temporary variables $var_tmp1
and $var_tmp2 and $contactgroups in the last assignment.
Another way with the reduce() function (Puppet 4 at least is needed):
----------------------------------------
$contactgroups_tests = {
'dba' => 'sql' in $hostname.downcase or $wl_server_type == 'db',
'bt' => $wl_app in $btssServers or 'adfs' in $hostname.downcase,
'heat' => $wl_app == 'hea',
}
$contactgroups = $contactgroups_tests.reduce(['Windows Server Admins']) |$memo,
$value| {
[$condition, $is_true] = [$value[0], $value[1]]
case [$condition, $is_true] {
['dba', true]: { $memo + ['Microsoft SQL DBAs'] }
['bt', true]: { $memo + ['BT Systems Support'] }
['heat', true]: { $memo + ['HEAT Admins'] }
default : { $memo }
}
}.join(',')
----------------------------------------
I don't know if it's more readable than the first way.
> In a language like Python I could just append to the string... but I can't
> modify the variable at all in Puppet after its been created.
Yes, reassignment is forbidden in Puppet.
I would have liked reassignment for "Data" data type to be possible too (it
would have simplify me some codes) but I think it's not a feature wanted by
developers. As you can see, generally workarounds are possible.
Regards.
--
François
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-users/429c2eb0-e6d3-2a39-433f-c93a8e140a67%40gmail.com.
For more options, visit https://groups.google.com/d/optout.