Parameter

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 Architektur
  • domain – Domainname
  • hostname – Hostname
  • fqdn – FQDN (Fully Qualified dHost Domainname
  • ipaddress – Primäre IPv4 Adresse
  • kernelrelease – Kernelversion
  • operatingsystem – 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.