I have recently started moving the config of our puppet hosts out of the
nodes files and into an ENC so they can be managed through a web UI by
someone with less technical experience without the fear of a typo causing a
failure of all catalogs to compile. As a result, I have been looking at
which modules need to be rewritten to support this. The problem I have run
into is, how do you do something such as add multiple virtual hosts using
the YAML output of an ENC?
I currently have something like:
node ''web01.company.com'' {
apache::virtualhost { ''site1'': location =>
''/hosted/site1'', url => ''
http://site1.com'' }
apache::virtualhost { ''site2'': location =>
''/hosted/site2'', url => ''
http://site2.com'' }
}
This uses ''define apache::virtualhost'' in order to create
multiple sites,
works fine. The YAML from an ENC (referencing
http://docs.puppetlabs.com/guides/external_nodes.html) doesn''t look to
support this kind of definition so I need to find an alternative. My next
thought was that I can pass parameters to a parameterized class. No love
there as you can''t instantiate a class multiple times with different
parameters. How are others solving this issue?
Thanks,
jl
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to
puppet-users+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.
Hi J, The create resources function was created to serve this exact use case (the README actually mentions your exact use case :) ) https://github.com/puppetlabs/puppetlabs-create_resources This will require 2.6.5 or higher to work (That is the first version where ENC''s support param classes) The function was also merged into core in 2.7.0 -Dan On Tue, Jul 5, 2011 at 1:40 PM, Justin Lambert <jlambert@localmatters.com>wrote:> I have recently started moving the config of our puppet hosts out of the > nodes files and into an ENC so they can be managed through a web UI by > someone with less technical experience without the fear of a typo causing a > failure of all catalogs to compile. As a result, I have been looking at > which modules need to be rewritten to support this. The problem I have run > into is, how do you do something such as add multiple virtual hosts using > the YAML output of an ENC? > > I currently have something like: > > node ''web01.company.com'' { > apache::virtualhost { ''site1'': location => ''/hosted/site1'', url => '' > http://site1.com'' } > apache::virtualhost { ''site2'': location => ''/hosted/site2'', url => '' > http://site2.com'' } > } > > This uses ''define apache::virtualhost'' in order to create multiple sites, > works fine. The YAML from an ENC (referencing > http://docs.puppetlabs.com/guides/external_nodes.html) doesn''t look to > support this kind of definition so I need to find an alternative. My next > thought was that I can pass parameters to a parameterized class. No love > there as you can''t instantiate a class multiple times with different > parameters. How are others solving this issue? > > Thanks, > jl > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
This looks exactly like what I was looking for, thank you. This might be worth mentioning on the ENC page so people like myself can find it easier. On Tue, Jul 5, 2011 at 10:42 PM, Dan Bode <dan@puppetlabs.com> wrote:> Hi J, > > The create resources function was created to serve this exact use case (the > README actually mentions your exact use case :) ) > > https://github.com/puppetlabs/puppetlabs-create_resources > > This will require 2.6.5 or higher to work (That is the first version where > ENC''s support param classes) > > The function was also merged into core in 2.7.0 > > -Dan > > On Tue, Jul 5, 2011 at 1:40 PM, Justin Lambert <jlambert@localmatters.com>wrote: > >> I have recently started moving the config of our puppet hosts out of the >> nodes files and into an ENC so they can be managed through a web UI by >> someone with less technical experience without the fear of a typo causing a >> failure of all catalogs to compile. As a result, I have been looking at >> which modules need to be rewritten to support this. The problem I have run >> into is, how do you do something such as add multiple virtual hosts using >> the YAML output of an ENC? >> >> I currently have something like: >> >> node ''web01.company.com'' { >> apache::virtualhost { ''site1'': location => ''/hosted/site1'', url => '' >> http://site1.com'' } >> apache::virtualhost { ''site2'': location => ''/hosted/site2'', url => '' >> http://site2.com'' } >> } >> >> This uses ''define apache::virtualhost'' in order to create multiple sites, >> works fine. The YAML from an ENC (referencing >> http://docs.puppetlabs.com/guides/external_nodes.html) doesn''t look to >> support this kind of definition so I need to find an alternative. My next >> thought was that I can pass parameters to a parameterized class. No love >> there as you can''t instantiate a class multiple times with different >> parameters. How are others solving this issue? >> >> Thanks, >> jl >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Puppet Users" group. >> To post to this group, send email to puppet-users@googlegroups.com. >> To unsubscribe from this group, send email to >> puppet-users+unsubscribe@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/puppet-users?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
I have just gotten to playing with this and am doing something wrong,
probably very basic.
On the puppetmaster (which for my testing is also the client) I have
create_resources.rb in /var/lib/puppet/lib/puppet/parser/functions.
I wrote a new ENC that will just output a very basic YAML to test this, the
output is:
classes:
yumreposerver:
yumreposerver::locations:
centos5:
distro: centos
version: 5.6
In my modules directory I have yumreposerver/manifests/locations.pp:
class yumreposerver::locations ( $instances = {} )
{
create_resources(''yumreposerver::location'', $instances)
}
yumreposerver/manifests/location.pp:
define yumreposerver::location( $distro, $version ) {
.....
}
puppet agent -t --noop returns:
err: Could not retrieve catalog from remote server: Error 400 on SERVER:
Invalid parameter yumreposerver::locations on node <name>
Puppet version 2.6.9 on SL6.
Any insight as to where I have gone wrong?
Thanks,
jl
On Wed, Jul 6, 2011 at 7:22 AM, Justin Lambert
<jlambert@localmatters.com>wrote:
> This looks exactly like what I was looking for, thank you. This might be
> worth mentioning on the ENC page so people like myself can find it easier.
>
>
> On Tue, Jul 5, 2011 at 10:42 PM, Dan Bode <dan@puppetlabs.com> wrote:
>
>> Hi J,
>>
>> The create resources function was created to serve this exact use case
>> (the README actually mentions your exact use case :) )
>>
>> https://github.com/puppetlabs/puppetlabs-create_resources
>>
>> This will require 2.6.5 or higher to work (That is the first version
where
>> ENC''s support param classes)
>>
>> The function was also merged into core in 2.7.0
>>
>> -Dan
>>
>> On Tue, Jul 5, 2011 at 1:40 PM, Justin Lambert
<jlambert@localmatters.com
>> > wrote:
>>
>>> I have recently started moving the config of our puppet hosts out
of the
>>> nodes files and into an ENC so they can be managed through a web UI
by
>>> someone with less technical experience without the fear of a typo
causing a
>>> failure of all catalogs to compile. As a result, I have been
looking at
>>> which modules need to be rewritten to support this. The problem I
have run
>>> into is, how do you do something such as add multiple virtual hosts
using
>>> the YAML output of an ENC?
>>>
>>> I currently have something like:
>>>
>>> node ''web01.company.com'' {
>>> apache::virtualhost { ''site1'': location =>
''/hosted/site1'', url => ''
>>> http://site1.com'' }
>>> apache::virtualhost { ''site2'': location =>
''/hosted/site2'', url => ''
>>> http://site2.com'' }
>>> }
>>>
>>> This uses ''define apache::virtualhost'' in order
to create multiple sites,
>>> works fine. The YAML from an ENC (referencing
>>> http://docs.puppetlabs.com/guides/external_nodes.html)
doesn''t look to
>>> support this kind of definition so I need to find an alternative.
My next
>>> thought was that I can pass parameters to a parameterized class.
No love
>>> there as you can''t instantiate a class multiple times with
different
>>> parameters. How are others solving this issue?
>>>
>>> Thanks,
>>> jl
>>>
>>> --
>>> You received this message because you are subscribed to the Google
Groups
>>> "Puppet Users" group.
>>> To post to this group, send email to puppet-users@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> puppet-users+unsubscribe@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/puppet-users?hl=en.
>>>
>>
>> --
>> You received this message because you are subscribed to the Google
Groups
>> "Puppet Users" group.
>> To post to this group, send email to puppet-users@googlegroups.com.
>> To unsubscribe from this group, send email to
>> puppet-users+unsubscribe@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/puppet-users?hl=en.
>>
>
>
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to
puppet-users+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.
Hi, is ''something::other'' valid in yaml? Cheers Den On 13/07/2011, at 3:43, Justin Lambert <jlambert@localmatters.com> wrote:> I have just gotten to playing with this and am doing something wrong, probably very basic. > > On the puppetmaster (which for my testing is also the client) I have create_resources.rb in /var/lib/puppet/lib/puppet/parser/functions. > > I wrote a new ENC that will just output a very basic YAML to test this, the output is: > classes: > yumreposerver: > yumreposerver::locations: > centos5: > distro: centos > version: 5.6 > > In my modules directory I have yumreposerver/manifests/locations.pp: > class yumreposerver::locations ( $instances = {} ) > { > create_resources(''yumreposerver::location'', $instances) > } > > yumreposerver/manifests/location.pp: > define yumreposerver::location( $distro, $version ) { > ..... > } > > puppet agent -t --noop returns: > err: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter yumreposerver::locations on node <name> > > Puppet version 2.6.9 on SL6. > > Any insight as to where I have gone wrong? > > Thanks, > jl > > On Wed, Jul 6, 2011 at 7:22 AM, Justin Lambert <jlambert@localmatters.com> wrote: > This looks exactly like what I was looking for, thank you. This might be worth mentioning on the ENC page so people like myself can find it easier. > > > On Tue, Jul 5, 2011 at 10:42 PM, Dan Bode <dan@puppetlabs.com> wrote: > Hi J, > > The create resources function was created to serve this exact use case (the README actually mentions your exact use case :) ) > > https://github.com/puppetlabs/puppetlabs-create_resources > > This will require 2.6.5 or higher to work (That is the first version where ENC''s support param classes) > > The function was also merged into core in 2.7.0 > > -Dan > > On Tue, Jul 5, 2011 at 1:40 PM, Justin Lambert <jlambert@localmatters.com> wrote: > I have recently started moving the config of our puppet hosts out of the nodes files and into an ENC so they can be managed through a web UI by someone with less technical experience without the fear of a typo causing a failure of all catalogs to compile. As a result, I have been looking at which modules need to be rewritten to support this. The problem I have run into is, how do you do something such as add multiple virtual hosts using the YAML output of an ENC? > > I currently have something like: > > node ''web01.company.com'' { > apache::virtualhost { ''site1'': location => ''/hosted/site1'', url => ''http://site1.com'' } > apache::virtualhost { ''site2'': location => ''/hosted/site2'', url => ''http://site2.com'' } > } > > This uses ''define apache::virtualhost'' in order to create multiple sites, works fine. The YAML from an ENC (referencing http://docs.puppetlabs.com/guides/external_nodes.html) doesn''t look to support this kind of definition so I need to find an alternative. My next thought was that I can pass parameters to a parameterized class. No love there as you can''t instantiate a class multiple times with different parameters. How are others solving this issue? > > Thanks, > jl > -- > You received this message because you are subscribed to the Google Groups "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. > > -- > You received this message because you are subscribed to the Google Groups "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. > > > -- > You received this message because you are subscribed to the Google Groups "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
I am using the create_resource module backported from 2.7 to 2.6 to make this possible. The module I am using was recommeded by Dan Bode and can be found at https://github.com/puppetlabs/puppetlabs-create_resources. I''m sure it is just something in the way I am implementing it. On Tue, Jul 12, 2011 at 2:33 PM, Denmat <tu2bgone@gmail.com> wrote:> Hi, is ''something::other'' valid in yaml? > Cheers > Den > > > On 13/07/2011, at 3:43, Justin Lambert <jlambert@localmatters.com> wrote: > > I have just gotten to playing with this and am doing something wrong, > probably very basic. > > On the puppetmaster (which for my testing is also the client) I have > create_resources.rb in /var/lib/puppet/lib/puppet/parser/functions. > > I wrote a new ENC that will just output a very basic YAML to test this, the > output is: > classes: > yumreposerver: > yumreposerver::locations: > centos5: > distro: centos > version: 5.6 > > In my modules directory I have yumreposerver/manifests/locations.pp: > class yumreposerver::locations ( $instances = {} ) > { > create_resources(''yumreposerver::location'', $instances) > } > > yumreposerver/manifests/location.pp: > define yumreposerver::location( $distro, $version ) { > ..... > } > > puppet agent -t --noop returns: > err: Could not retrieve catalog from remote server: Error 400 on SERVER: > Invalid parameter yumreposerver::locations on node <name> > > Puppet version 2.6.9 on SL6. > > Any insight as to where I have gone wrong? > > Thanks, > jl > > On Wed, Jul 6, 2011 at 7:22 AM, Justin Lambert <<jlambert@localmatters.com> > jlambert@localmatters.com> wrote: > >> This looks exactly like what I was looking for, thank you. This might be >> worth mentioning on the ENC page so people like myself can find it easier. >> >> >> On Tue, Jul 5, 2011 at 10:42 PM, Dan Bode < <dan@puppetlabs.com> >> dan@puppetlabs.com> wrote: >> >>> Hi J, >>> >>> The create resources function was created to serve this exact use case >>> (the README actually mentions your exact use case :) ) >>> >>> <https://github.com/puppetlabs/puppetlabs-create_resources> >>> https://github.com/puppetlabs/puppetlabs-create_resources >>> >>> This will require 2.6.5 or higher to work (That is the first version >>> where ENC''s support param classes) >>> >>> The function was also merged into core in 2.7.0 >>> >>> -Dan >>> >>> On Tue, Jul 5, 2011 at 1:40 PM, Justin Lambert <<jlambert@localmatters.com> >>> jlambert@localmatters.com> wrote: >>> >>>> I have recently started moving the config of our puppet hosts out of the >>>> nodes files and into an ENC so they can be managed through a web UI by >>>> someone with less technical experience without the fear of a typo causing a >>>> failure of all catalogs to compile. As a result, I have been looking at >>>> which modules need to be rewritten to support this. The problem I have run >>>> into is, how do you do something such as add multiple virtual hosts using >>>> the YAML output of an ENC? >>>> >>>> I currently have something like: >>>> >>>> node '' <http://web01.company.com>web01.company.com'' { >>>> apache::virtualhost { ''site1'': location => ''/hosted/site1'', url => ''<http://site1.com> >>>> http://site1.com'' } >>>> apache::virtualhost { ''site2'': location => ''/hosted/site2'', url => ''<http://site2.com> >>>> http://site2.com'' } >>>> } >>>> >>>> This uses ''define apache::virtualhost'' in order to create multiple >>>> sites, works fine. The YAML from an ENC (referencing <http://docs.puppetlabs.com/guides/external_nodes.html> >>>> http://docs.puppetlabs.com/guides/external_nodes.html) doesn''t look to >>>> support this kind of definition so I need to find an alternative. My next >>>> thought was that I can pass parameters to a parameterized class. No love >>>> there as you can''t instantiate a class multiple times with different >>>> parameters. How are others solving this issue? >>>> >>>> Thanks, >>>> jl >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Puppet Users" group. >>>> To post to this group, send email to <puppet-users@googlegroups.com> >>>> puppet-users@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> <puppet-users%2Bunsubscribe@googlegroups.com> >>>> puppet-users+unsubscribe@googlegroups.com. >>>> For more options, visit this group at >>>> <http://groups.google.com/group/puppet-users?hl=en> >>>> http://groups.google.com/group/puppet-users?hl=en. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Puppet Users" group. >>> To post to this group, send email to <puppet-users@googlegroups.com> >>> puppet-users@googlegroups.com. >>> To unsubscribe from this group, send email to >>> <puppet-users%2Bunsubscribe@googlegroups.com> >>> puppet-users+unsubscribe@googlegroups.com. >>> For more options, visit this group at >>> <http://groups.google.com/group/puppet-users?hl=en> >>> http://groups.google.com/group/puppet-users?hl=en. >>> >> >> > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
On Tue, Jul 12, 2011 at 10:43 AM, Justin Lambert <jlambert@localmatters.com>wrote:> I have just gotten to playing with this and am doing something wrong, > probably very basic. > > On the puppetmaster (which for my testing is also the client) I have > create_resources.rb in /var/lib/puppet/lib/puppet/parser/functions. > > I wrote a new ENC that will just output a very basic YAML to test this, the > output is: > classes: > yumreposerver: > yumreposerver::locations: > >centos5:> distro: centos > version: 5.6 >it should be something like: yumreposerver: instances: centos5: distro: ... there is no yumreposerver parameter in the yum server class, only an instances parameter> > In my modules directory I have yumreposerver/manifests/locations.pp: > class yumreposerver::locations ( $instances = {} ) > { > create_resources(''yumreposerver::location'', $instances) > } > > yumreposerver/manifests/location.pp: > define yumreposerver::location( $distro, $version ) { > ..... > } > > puppet agent -t --noop returns: > err: Could not retrieve catalog from remote server: Error 400 on SERVER: > Invalid parameter yumreposerver::locations on node <name> >I agree that this is not a very clear error message, can you run with --trace?> Puppet version 2.6.9 on SL6. > > Any insight as to where I have gone wrong? > > Thanks, > jl > > On Wed, Jul 6, 2011 at 7:22 AM, Justin Lambert <jlambert@localmatters.com>wrote: > >> This looks exactly like what I was looking for, thank you. This might be >> worth mentioning on the ENC page so people like myself can find it easier. >> >> >> On Tue, Jul 5, 2011 at 10:42 PM, Dan Bode <dan@puppetlabs.com> wrote: >> >>> Hi J, >>> >>> The create resources function was created to serve this exact use case >>> (the README actually mentions your exact use case :) ) >>> >>> https://github.com/puppetlabs/puppetlabs-create_resources >>> >>> This will require 2.6.5 or higher to work (That is the first version >>> where ENC''s support param classes) >>> >>> The function was also merged into core in 2.7.0 >>> >>> -Dan >>> >>> On Tue, Jul 5, 2011 at 1:40 PM, Justin Lambert < >>> jlambert@localmatters.com> wrote: >>> >>>> I have recently started moving the config of our puppet hosts out of the >>>> nodes files and into an ENC so they can be managed through a web UI by >>>> someone with less technical experience without the fear of a typo causing a >>>> failure of all catalogs to compile. As a result, I have been looking at >>>> which modules need to be rewritten to support this. The problem I have run >>>> into is, how do you do something such as add multiple virtual hosts using >>>> the YAML output of an ENC? >>>> >>>> I currently have something like: >>>> >>>> node ''web01.company.com'' { >>>> apache::virtualhost { ''site1'': location => ''/hosted/site1'', url => '' >>>> http://site1.com'' } >>>> apache::virtualhost { ''site2'': location => ''/hosted/site2'', url => '' >>>> http://site2.com'' } >>>> } >>>> >>>> This uses ''define apache::virtualhost'' in order to create multiple >>>> sites, works fine. The YAML from an ENC (referencing >>>> http://docs.puppetlabs.com/guides/external_nodes.html) doesn''t look to >>>> support this kind of definition so I need to find an alternative. My next >>>> thought was that I can pass parameters to a parameterized class. No love >>>> there as you can''t instantiate a class multiple times with different >>>> parameters. How are others solving this issue? >>>> >>>> Thanks, >>>> jl >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Puppet Users" group. >>>> To post to this group, send email to puppet-users@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> puppet-users+unsubscribe@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/puppet-users?hl=en. >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Puppet Users" group. >>> To post to this group, send email to puppet-users@googlegroups.com. >>> To unsubscribe from this group, send email to >>> puppet-users+unsubscribe@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/puppet-users?hl=en. >>> >> >> > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Thanks for the response Dan, that was an easy fix. Here is a trace: # puppet agent -t --trace /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:56:in `deserialize'' /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:75:in `find'' /usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:188:in `find'' /usr/lib/ruby/site_ruby/1.8/puppet/indirector.rb:50:in `find'' /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:240:in `retrieve_new_catalog'' /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:429:in `thinmark'' /usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'' /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:428:in `thinmark'' /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:239:in `retrieve_new_catalog'' /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:86:in `retrieve_catalog'' /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:111:in `retrieve_and_apply_catalog'' /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:150:in `run'' /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:39:in `run'' /usr/lib/ruby/site_ruby/1.8/puppet/agent/locker.rb:21:in `lock'' /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:39:in `run'' /usr/lib/ruby/1.8/sync.rb:230:in `synchronize'' /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:39:in `run'' /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:103:in `with_client'' /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:37:in `run'' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:172:in `call'' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:172:in `controlled_run'' /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:35:in `run'' /usr/lib/ruby/site_ruby/1.8/puppet/application/agent.rb:114:in `onetime'' /usr/lib/ruby/site_ruby/1.8/puppet/application/agent.rb:88:in `run_command'' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:420:in `hook'' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:411:in `exit_on_fail'' /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'' /usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:62:in `execute'' /usr/bin/puppet:4 err: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter yumreposerver::locations on node kinks.corp.localmatters.com warning: Not using cache on failed catalog err: Could not retrieve catalog; skipping run On Tue, Jul 12, 2011 at 11:35 PM, Dan Bode <dan@puppetlabs.com> wrote:> > > On Tue, Jul 12, 2011 at 10:43 AM, Justin Lambert < > jlambert@localmatters.com> wrote: > >> I have just gotten to playing with this and am doing something wrong, >> probably very basic. >> >> On the puppetmaster (which for my testing is also the client) I have >> create_resources.rb in /var/lib/puppet/lib/puppet/parser/functions. >> >> I wrote a new ENC that will just output a very basic YAML to test this, >> the output is: >> classes: >> yumreposerver: >> yumreposerver::locations: >> >> > centos5: >> distro: centos >> version: 5.6 >> > > it should be something like: > > yumreposerver: > instances: > centos5: > distro: > ... > > there is no yumreposerver parameter in the yum server class, only an > instances parameter > > >> >> In my modules directory I have yumreposerver/manifests/locations.pp: >> class yumreposerver::locations ( $instances = {} ) >> { >> create_resources(''yumreposerver::location'', $instances) >> } >> >> yumreposerver/manifests/location.pp: >> define yumreposerver::location( $distro, $version ) { >> ..... >> } >> >> puppet agent -t --noop returns: >> err: Could not retrieve catalog from remote server: Error 400 on SERVER: >> Invalid parameter yumreposerver::locations on node <name> >> > > I agree that this is not a very clear error message, can you run with > --trace? > > > >> Puppet version 2.6.9 on SL6. >> >> Any insight as to where I have gone wrong? >> >> Thanks, >> jl >> >> On Wed, Jul 6, 2011 at 7:22 AM, Justin Lambert <jlambert@localmatters.com >> > wrote: >> >>> This looks exactly like what I was looking for, thank you. This might be >>> worth mentioning on the ENC page so people like myself can find it easier. >>> >>> >>> On Tue, Jul 5, 2011 at 10:42 PM, Dan Bode <dan@puppetlabs.com> wrote: >>> >>>> Hi J, >>>> >>>> The create resources function was created to serve this exact use case >>>> (the README actually mentions your exact use case :) ) >>>> >>>> https://github.com/puppetlabs/puppetlabs-create_resources >>>> >>>> This will require 2.6.5 or higher to work (That is the first version >>>> where ENC''s support param classes) >>>> >>>> The function was also merged into core in 2.7.0 >>>> >>>> -Dan >>>> >>>> On Tue, Jul 5, 2011 at 1:40 PM, Justin Lambert < >>>> jlambert@localmatters.com> wrote: >>>> >>>>> I have recently started moving the config of our puppet hosts out of >>>>> the nodes files and into an ENC so they can be managed through a web UI by >>>>> someone with less technical experience without the fear of a typo causing a >>>>> failure of all catalogs to compile. As a result, I have been looking at >>>>> which modules need to be rewritten to support this. The problem I have run >>>>> into is, how do you do something such as add multiple virtual hosts using >>>>> the YAML output of an ENC? >>>>> >>>>> I currently have something like: >>>>> >>>>> node ''web01.company.com'' { >>>>> apache::virtualhost { ''site1'': location => ''/hosted/site1'', url => '' >>>>> http://site1.com'' } >>>>> apache::virtualhost { ''site2'': location => ''/hosted/site2'', url => '' >>>>> http://site2.com'' } >>>>> } >>>>> >>>>> This uses ''define apache::virtualhost'' in order to create multiple >>>>> sites, works fine. The YAML from an ENC (referencing >>>>> http://docs.puppetlabs.com/guides/external_nodes.html) doesn''t look to >>>>> support this kind of definition so I need to find an alternative. My next >>>>> thought was that I can pass parameters to a parameterized class. No love >>>>> there as you can''t instantiate a class multiple times with different >>>>> parameters. How are others solving this issue? >>>>> >>>>> Thanks, >>>>> jl >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Puppet Users" group. >>>>> To post to this group, send email to puppet-users@googlegroups.com. >>>>> To unsubscribe from this group, send email to >>>>> puppet-users+unsubscribe@googlegroups.com. >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/puppet-users?hl=en. >>>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Puppet Users" group. >>>> To post to this group, send email to puppet-users@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> puppet-users+unsubscribe@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/puppet-users?hl=en. >>>> >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Puppet Users" group. >> To post to this group, send email to puppet-users@googlegroups.com. >> To unsubscribe from this group, send email to >> puppet-users+unsubscribe@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/puppet-users?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.