Hello list, I have some services that may be duplicated in some machines.
They are much like an Apache vhost. In order to remove details from my
manifests, I moved the service names to ENC because they are
machine-dependent. Here are my datasources and manifests:
ENC:
parameters:
myservices:
host1:
myperserviceconfig
host2:
myperserviceconfig
Hiera:
myservice_host:
myproblematicconfig:
config1:
data
config2:
data
myotherconfig:
...
Manifests:
class profile::my::myservice {
# ENC: $myservices
$hiera_myservice_host = hiera("myservice_host")
# ENC has per-host/service and hiera has per-environment configurations
create_resources(::myservice::host, $myservices, $hiera_myservice_host)
}
define myservice::host (myconfigs...) {
...
if $myproblematicconfig {
create_resources(::myservice::myconfig, $myproblematicconfig)
}
}
Each myproblematicconfig key is a new resource and I can have zero to N
keys. This configuration is working nice if I have only one service, but if
I have two or more services, Puppet Master correctly says:
Error: Could not retrieve catalog from remote server: Error 400 on
SERVER: Duplicate declaration: myservice::myconfig[config1] is already
declared
Tried prefix (from puppetlabs/stdlib) in order to change the resource name
but it only supports arrays. Changing create_resources to $var.each should
help but it requires parser=future which I cannot use right now. Do you see
another approach I could try?
--
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/23c7967c-f732-4d6a-b2d4-a8c4347f48a9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.