So, this is mostly working now (thanks for the pointers!), but how can I
reference the top level "configs" within my define? For example:
configs:
config1:
Name: app1
WorkingDir: /var/app1
config2:
Name: app2
WorkingDir: /var/app2
...
config100:
Name: app100
WorkingDir: /var/app100
define app::virtualApps($Name, $WorkingDir) {
file {"/etc/apps/$configs[0].conf":
owner => root,
group => root,
mode => 644,
content => template("app/foo.conf.erb"
}
I want to be able to reference "config1", "config2", ... "config100" as a
variable ($config)from within the define. In this case, using them as the
base file name for each instance of a config file.
The error I get when trying to process this file is:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER:
Must pass config to app::virtualApps[config1]
On Fri, Mar 8, 2013 at 2:49 PM, Ellison Marks <[email protected]> wrote:
> Through create_resources, Name and WorkingDir are being passed to your
> defined type as parameters. Your defined type though, does not accept
> parameters. something like this:
>
> define app::virtualApps($Name, $WorkingDir) {
>
> should work, though you'll also have to work out case, as it seems you're
> using lower case in your template and upper in your YAML. The YAML, defined
> type parameters and template should all match, variable name-wise.
>
>
> On Friday, March 8, 2013 2:18:30 PM UTC-8, jc.listmail wrote:
>>
>> I'm trying to use create_resources to create a series of files with
>> semi-custom content based on a template.
>>
>> This is what I have:
>>
>> foo.conf.erb:
>> Name "<%= name %>"
>> WorkingDir "<%= working_dir %>"
>> ... a bunch of static entries
>>
>> YAML:
>>
>> configs:
>> config1:
>> Name: app1
>> WorkingDir: /var/app1
>> config2:
>> Name: app2
>> WorkingDir: /var/app2
>> ...
>> config100:
>> Name: app100
>> WorkingDir: /var/app100
>>
>> manifest:
>> class app {
>>
>> create_resources(app::**virtualApps, hiera('configs'))
>>
>> }
>>
>> define app::virtualApps() {
>> file {"/etc/apps/$app.conf":
>> owner => root,
>> group => root,
>> mode => 644,
>> content => template("app/foo.conf.erb"
>> }
>>
>>
>> I know this is not correct. I am missing at least one important concept
>> here. What I am stuck on is how, using create_resources, I can reference
>> the parameters named in the YAML config so that I end up with a config file
>> on the file system for each. My understanding of create_resources was that
>> this would be a good use for it, in that it will call app::virtualApps()
>> once for each hash defined under "configs" in the YAML file, which should
>> result in the structure I want. What I am not getting is what the
>> datastructure looks like that is being provided to app::virtualApps() and
>> how you can reference those parameters, both in the define AND the
>> associated template.
>>
>> I'd like to end up with:
>>
>> /etc/apps/app1-100.conf with the contents that look like:
>>
>> Example:
>>
>> /etc/apps/app1.conf:
>> Name "app1"
>> WorkingDir: "/var/app1"
>> <bunch of static entries that are the same in each file>
>>
>>
>> --
> 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 post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/puppet-users?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
--
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.