In the Wordpress example, the worpress profile will delegate installing and configuring Apache and PHP to their respective modules. The profile is in charge of passing the necessary parameters to them.
# Wordpress Profile
# wordpress/manifests/init.pp
class wordpress (
site_name => 'default',
){
class{'apache':
vhost => $site_name,
}
contain apache
class{'php':
version => '5.3',
require => Class['apache']
}
contain php
...
}A profile will define a set of defaults for the technology stack. These are to be placed both as parameters to the module and as variables in the params class of the module.
# wordpress/manifests/params.pp
class wordpress::params {
$site_name = 'default'
$php_version = '5.3'
}
# wordpress/manifests/init.pp
class wordpress(
site_name => $::wordpress::params::site_name,
php_version => $::wordpress::params::php_version,
){
class{'apache':
vhost => $site_name,
}
contain apache
class{'php':
version => $php_version,
require => Class['apache']
}
contain php
}