Passing parameters to classes
Sometimes it's very useful to parameterize some aspect of a class. For example, you might need to manage different versions of a gem
package, and rather than making separate classes for each which differ only in the version number, or using inheritance and overrides, you can pass in the version number as a parameter.
How to do it…
In this example we'll create a definition which accepts parameters:
Declare the parameter as a part of the class definition:
class eventmachine($version) { package { 'eventmachine': provider => gem, ensure => $version, } }
Use the following syntax to include the class on a node:
class { 'eventmachine': version => '1.0.3', }
How it works…
The class definition
class eventmachine($version) {
is just like a normal class definition except it specifies that the class takes one parameter: $version
. Inside the class, we've defined a package
resource:
package { 'eventmachine': provider => gem, ensure => $version, ...