Puppet variables best practice, generalise or specialise?
- by Andrei Serdeliuc
I'm trying to figure out which things should be in git within the puppet manifest and which should be in env vars like FACTER_my_var and use that in the manifest instead.
Scenario: you are deploying 3 php apps and you've already built all the layers up to the app in other manifests (base system, php extensions, users, etc), and all that's left is installing the correct app (from an apt repo) and creating a vhost.
I'm tempted to have something along the lines of:
apache::vhost { $::project_hostname:
priority => '10',
port => '80',
docroot => $::project_document_root,
logroot => "/var/log/apache2/${$::project_name}",
serveradmin => '[email protected]',
require => Package[httpd],
ssl => false,
override => 'all',
setenv => ["APP_KERNEL dev"]
}
This would run on each server, and the FACTER_project_* vars would be set on a per server basis. An obvious restriction of this would be that you can't run more than one app with this specific example.
Or would you rather have project_x.pp, project_y.pp which have hardcoded paths and names?