Statische Klassen würden nur eine schlechte Wiederverwendbarkeit aufweisen. Daher lassen sich Klassen / Module in Puppet um Parameter erweitern.Hierzu sehen wir uns das folgende Beispiel an:
class apache ($config_path) {
package { "apache2":
ensure => "installed"
}
service { "apache2":
ensure => "running",
enable => true,
}
file { "httpd.conf":
path => $config_path,
ensure => file,
require => Package['apache2'],
source => "puppet:///modules/modulname/httpd.conf"
}
}
Die Klasse apache wurde um den Parameter $config_path erweitert. Damit können wir den Pfad der Konfigurationsdatei beliebig anpassen. Der Aufruf der Klasse würde dann wie folgt aussehen.
node 'foo.bar' {
class { 'apache':
$config_path => "/etc/apache2/httpd.conf"
}
}
Standardwerte für Variablen
Ferner besteht die Möglichkeit die Variablen optional zu gestalten. Wird im Aufruf der Klasse keine Variable übergeben, greift der definierte Standardwert.
class apache ($config_path = '/etc/apache2/httpd.conf') {
package { "apache2":
ensure => "installed"
}
service { "apache2":
ensure => "running",
enable => true,
}
file { "httpd.conf":
path => $config_path,
ensure => file,
require => Package['apache2'],
source => "puppet:///modules/modulname/httpd.conf"
}
}
Magische Variablen
Neben selbst definierten Variablen bietet Puppet noch weitere integrierte Facter Variablen, welche abhängig vom zu konfigurierenden Zielsystem (Node) sind.
architecture– CPU Architekturdomain– Domainnamehostname– Hostnamefqdn– FQDN (Fully Qualified dHost Domainnameipaddress– Primäre IPv4 Adressekernelrelease– Kernelversionoperatingsystem– Betriebssystem / Distribution (z.B. Debian, CentOS)operatingsystemrelease– Release des Betriebssystem / der Distribution (z.B. 6.4)
Darüber hinaus existieren noch viele weitere Variablen. Diese sind der offiziellen Dokumentation von Facter zu entnehmen.