Re: [Puppet Users] Converting to Ruby DSL

2010-12-07 Thread Dan Bode
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 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-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> puppet-users+unsubscr...@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-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.



Re: [Puppet Users] Converting to Ruby DSL

2010-12-07 Thread Martijn Grendelman
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-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.



[Puppet Users] Converting to Ruby DSL

2010-12-05 Thread Ken Barber
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-us...@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.