Hi everyone,
I''m experimenting with converting some of my live puppet content to
Ruby DSL and have found a few gaps I wouldn''t mind some advice on.
I''m
not sure how many of you have already experimented in this arena yet.
I''ve already read Dan Bode''s excellent blog article on the
subject:
http://www.puppetlabs.com/blog/ruby-dsl/
I know the Ruby DSL is quite new - but I figured perhaps some of these
items deserve to be tickets (or perhaps documented) and I thought I''d
ask first :-).
1. Defaults
How do I set defaults in Ruby DSL? For example what is the ruby DSL
equivalent to this:
Service {
hasstatus => true
}
2. Top scope
I notice the convenience methodology does not work at ''top
scope'' for
example
this will fail:
file "/tmp/zzz", :content => "foo"
But this will not:
node "default" do
file "/tmp/zzz", :content => "foo"
end
Is there a proper way to call resources without using the convenience
methods? Or
perhaps is there a way to define elements that reside in top scope?
3. Class resource
I think Dan Bode already raised this as a bug:
https://projects.puppetlabs.com/issues/5236
The following returns an error ''method_missing'':
hostclass :foo do
notify "bar"
end
node "default" do
hostclass "foo", :stage => "baz"
end
This is because hostclass has not been defined as a convenience method
it would seem. Just like issues 2 If someone knows
a way to call a resource directly without requiring the convenience
method that would be a decent enough work-around.
4. exec Resource
The ''exec'' resource as a convenience method is overlapping
with the
ruby ''exec''
method. So if you do this:
node "default" do
exec "ls", :command => "/bin/ls"
end
You get:
can''t convert Hash into String on node obelisk.usr.bob.sh
Returned from the Kernel.exec call.
5. Referencing other resources
I''m not quite clear how to reference other resources that already
exist. This is obviously a problem for the ''require''
attribute:
node "default" do
package "foo", :ensure => "installed"
service "foo", :enable => "true", :ensure =>
"running", :require
=> ???
end
6. Chaining Resources
Is there a syntactical equivalent to this in Ruby DSL yet? For
example:
Stage[pre] -> Stage[main] -> Stage[post]
Without knowing how to solve 5 I''m kind of stuck when it comes to
defining dependencies :-).
Cheers :-).
ken.
--
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, I''m sorry, this may not be the response you are waiting for. Unfortunately, I have only questions to add...> I''m experimenting with converting some of my live puppet content to > Ruby DSL and have found a few gaps I wouldn''t mind some advice on. I''m > not sure how many of you have already experimented in this arena yet. > > I''ve already read Dan Bode''s excellent blog article on the subject: > > http://www.puppetlabs.com/blog/ruby-dsl/ > > I know the Ruby DSL is quite new - but I figured perhaps some of these > items deserve to be tickets (or perhaps documented) and I thought I''d > ask first :-). > > 1. Defaults > > How do I set defaults in Ruby DSL? For example what is the ruby DSL > equivalent to this: > > Service { > hasstatus => true > } > > 2. Top scope > > I notice the convenience methodology does not work at ''top scope'' for > example > this will fail: > > file "/tmp/zzz", :content => "foo" > > But this will not: > > node "default" do > file "/tmp/zzz", :content => "foo" > end > > Is there a proper way to call resources without using the convenience > methods? Or > perhaps is there a way to define elements that reside in top scope? > > 3. Class resource > > I think Dan Bode already raised this as a bug: > > https://projects.puppetlabs.com/issues/5236 > > The following returns an error ''method_missing'': > > hostclass :foo do > notify "bar" > end > node "default" do > hostclass "foo", :stage => "baz" > end > > This is because hostclass has not been defined as a convenience method > it would seem. Just like issues 2 If someone knows > a way to call a resource directly without requiring the convenience > method that would be a decent enough work-around. > > 4. exec Resource > > The ''exec'' resource as a convenience method is overlapping with the > ruby ''exec'' > method. So if you do this: > > node "default" do > exec "ls", :command => "/bin/ls" > end > > You get: > > can''t convert Hash into String on node obelisk.usr.bob.sh > > Returned from the Kernel.exec call. > > 5. Referencing other resources > > I''m not quite clear how to reference other resources that already > exist. This is obviously a problem for the ''require'' attribute: > > node "default" do > package "foo", :ensure => "installed" > service "foo", :enable => "true", :ensure => "running", :require > => ??? > end > > 6. Chaining Resources > > Is there a syntactical equivalent to this in Ruby DSL yet? For > example: > > Stage[pre] -> Stage[main] -> Stage[post] > > Without knowing how to solve 5 I''m kind of stuck when it comes to > defining dependencies :-). > > Cheers :-). >Is there, besides the mentioned blog post, any official documentation? I haven''t been able to find any. How can I use facts in pure-Ruby manifests? I don''t know how to reference them, and anything I have tried failed. Best regards, Martijn. -- 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.
It is unfortunately only documented in the release notes.
facts are accessed as follows:
node ''default'' do
file ''/tmp/one'',
:content => Facter[:operatingsystem].value
end
On Tue, Dec 7, 2010 at 6:05 AM, Martijn Grendelman
<martijn@iphion.nl>wrote:
> Hi,
>
> I''m sorry, this may not be the response you are waiting for.
> Unfortunately, I have only questions to add...
>
> > I''m experimenting with converting some of my live puppet
content to
> > Ruby DSL and have found a few gaps I wouldn''t mind some
advice on. I''m
> > not sure how many of you have already experimented in this arena yet.
> >
> > I''ve already read Dan Bode''s excellent blog article
on the subject:
> >
> > http://www.puppetlabs.com/blog/ruby-dsl/
> >
> > I know the Ruby DSL is quite new - but I figured perhaps some of these
> > items deserve to be tickets (or perhaps documented) and I thought
I''d
> > ask first :-).
> >
> > 1. Defaults
> >
> > How do I set defaults in Ruby DSL? For example what is the ruby DSL
> > equivalent to this:
> >
> > Service {
> > hasstatus => true
> > }
> >
> > 2. Top scope
> >
> > I notice the convenience methodology does not work at ''top
scope'' for
> > example
> > this will fail:
> >
> > file "/tmp/zzz", :content => "foo"
> >
> > But this will not:
> >
> > node "default" do
> > file "/tmp/zzz", :content => "foo"
> > end
> >
> > Is there a proper way to call resources without using the convenience
> > methods? Or
> > perhaps is there a way to define elements that reside in top scope?
> >
> > 3. Class resource
> >
> > I think Dan Bode already raised this as a bug:
> >
> > https://projects.puppetlabs.com/issues/5236
> >
> > The following returns an error ''method_missing'':
> >
> > hostclass :foo do
> > notify "bar"
> > end
> > node "default" do
> > hostclass "foo", :stage => "baz"
> > end
> >
> > This is because hostclass has not been defined as a convenience method
> > it would seem. Just like issues 2 If someone knows
> > a way to call a resource directly without requiring the convenience
> > method that would be a decent enough work-around.
> >
> > 4. exec Resource
> >
> > The ''exec'' resource as a convenience method is
overlapping with the
> > ruby ''exec''
> > method. So if you do this:
> >
> > node "default" do
> > exec "ls", :command => "/bin/ls"
> > end
> >
> > You get:
> >
> > can''t convert Hash into String on node obelisk.usr.bob.sh
> >
> > Returned from the Kernel.exec call.
> >
> > 5. Referencing other resources
> >
> > I''m not quite clear how to reference other resources that
already
> > exist. This is obviously a problem for the ''require''
attribute:
> >
> > node "default" do
> > package "foo", :ensure => "installed"
> > service "foo", :enable => "true", :ensure
=> "running", :require
> > => ???
> > end
> >
> > 6. Chaining Resources
> >
> > Is there a syntactical equivalent to this in Ruby DSL yet? For
> > example:
> >
> > Stage[pre] -> Stage[main] -> Stage[post]
> >
> > Without knowing how to solve 5 I''m kind of stuck when it
comes to
> > defining dependencies :-).
> >
> > Cheers :-).
> >
>
>
> Is there, besides the mentioned blog post, any official documentation? I
> haven''t been able to find any.
>
> How can I use facts in pure-Ruby manifests? I don''t know how to
reference
> them, and anything I have tried failed.
>
> Best regards,
> Martijn.
>
> --
> 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<puppet-users%2Bunsubscribe@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 can solve 5 for you. The resource reference syntax is apparently a
magic String object of some sort on its own, and not something that
was being parsed by the original DSL.
So, you simply need to write:
:require => ''File[test123]''
In this case I used the path parameter; test123 is just a resource
name.
On Dec 5, 4:37 pm, Ken Barber <k...@bob.sh> wrote:> Hi everyone,
>
> I''m experimenting with converting some of my live puppet content
to
> Ruby DSL and have found a few gaps I wouldn''t mind some advice on.
I''m
> not sure how many of you have already experimented in this arena yet.
>
> I''ve already read Dan Bode''s excellent blog article on
the subject:
>
> http://www.puppetlabs.com/blog/ruby-dsl/
>
> I know the Ruby DSL is quite new - but I figured perhaps some of these
> items deserve to be tickets (or perhaps documented) and I thought
I''d
> ask first :-).
>
> 1. Defaults
>
> How do I set defaults in Ruby DSL? For example what is the ruby DSL
> equivalent to this:
>
> Service {
> hasstatus => true
> }
>
> 2. Top scope
>
> I notice the convenience methodology does not work at ''top
scope'' for
> example
> this will fail:
>
> file "/tmp/zzz", :content => "foo"
>
> But this will not:
>
> node "default" do
> file "/tmp/zzz", :content => "foo"
> end
>
> Is there a proper way to call resources without using the convenience
> methods? Or
> perhaps is there a way to define elements that reside in top scope?
>
> 3. Class resource
>
> I think Dan Bode already raised this as a bug:
>
> https://projects.puppetlabs.com/issues/5236
>
> The following returns an error ''method_missing'':
>
> hostclass :foo do
> notify "bar"
> end
> node "default" do
> hostclass "foo", :stage => "baz"
> end
>
> This is because hostclass has not been defined as a convenience method
> it would seem. Just like issues 2 If someone knows
> a way to call a resource directly without requiring the convenience
> method that would be a decent enough work-around.
>
> 4. exec Resource
>
> The ''exec'' resource as a convenience method is
overlapping with the
> ruby ''exec''
> method. So if you do this:
>
> node "default" do
> exec "ls", :command => "/bin/ls"
> end
>
> You get:
>
> can''t convert Hash into String on node obelisk.usr.bob.sh
>
> Returned from the Kernel.exec call.
>
> 5. Referencing other resources
>
> I''m not quite clear how to reference other resources that already
> exist. This is obviously a problem for the ''require''
attribute:
>
> node "default" do
> package "foo", :ensure => "installed"
> service "foo", :enable => "true", :ensure =>
"running", :require
> => ???
> end
>
> 6. Chaining Resources
>
> Is there a syntactical equivalent to this in Ruby DSL yet? For
> example:
>
> Stage[pre] -> Stage[main] -> Stage[post]
>
> Without knowing how to solve 5 I''m kind of stuck when it comes to
> defining dependencies :-).
>
> Cheers :-).
>
> ken.
--
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.