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.