On 10/08/2011 12:28 AM, maillis...@gmail.com wrote:
New to puppet and I just don't understand how to do this. Apologies in
advance if it's a dumb question.

Let's say I have a module called httpd and inside that is a class
called  httpd::service, which accepts a couple of parameters:

class httpd::service (
    $running      = 'running',
    $enabled      = 'true',
) {
   service { "httpd":
    path      =>  "/etc/init.d/httpd",
    ensure    =>  $running,
    enable    =>  $enabled,
    require   =>  [ Package[ "httpd" ], File[ "/etc/httpd/conf/httpd.conf" ] ],
    subscribe =>  File[ "/etc/httpd/conf/httpd.conf" ],
   }
}

But let's say that I want to allow the option of both requiring and
subscribing to a second file -- any file -- in addition to httpd.conf.
If I were doing this in a procedural language, I'd probably do
something naive and create a couple of empty parameters called
$also_subscribed and $myfile_path, use a conditional to see if it's
defined, then create the arguments to require and subscribe based on
that.

I cannot figure out how to get this done in puppet. Any help is
appreciated, even a link to an appropriate doc or example. Thanks!

I would use definition instead of class and it would look similar to this:

define httpd::service (
   running      = 'running',
   enabled      = 'true',
   path         = '/etc/init.d/httpd',
require = [ Package[ "httpd" ], File[ "/etc/httpd/conf/httpd.conf" ] ],
   subscribe    = File[ "/etc/httpd/conf/httpd.conf" ],
) {
  service { "httpd":
   path      => $path,
   ensure    => $running,
   enable    => $enabled,
   require   => $require,
   subscribe => $subscribe,
  }
}

Now you're able to override default values in this way:

httpd::service { path => '/some/path', }

You can also use assign array here:

$array = [ '/some/path', '/another/path' ]
httpd::service { path => $array, }

--
Dominik Zyla

--
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+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to