Apache HTTPD installieren

Wird ein neuer Service auf dem Puppet-Client installiert, muss mehr als nur die Software installiert werden. Es muss sichergestellt werden, dass der neue Service startet und, mit einem Neustart des Rechners, ebenso neu startet.

Puppet ist durchaus so “schlau”, dass der entsprechende Packagemanager (yum, apt, zypper usw.) bekannt und genutzt wird. Die Herausforderung ist nun, dass das Paket für den “Apache HTTPD”-Server nicht auf allen Linux-Distributionen gleich heißt. Also wird facter genutzt und mittels “case” der Name des Paketes vorbelegt wird.

$osf = $facts['os']['family']

case $osf {
  /(?i:redhat)/: { $pkg = 'httpd' }
  /(?i:debian|suse)/: { $pkg = 'apache2' }
  default: {fail( 'Geht nicht!' ) }
}

package { $pkg:
  ensure => latest,
  before => Service[$pkg],
}

service { $pkg:
  ensure => running,
  enable =>  true,
}

Wie man sieht, gibt es Abhängigkeiten. Der neue Dienst wird dann gestartet und als Service (systemd-unit z.B.) erstellt.

Ein schmutziger Rumpf kann auch mittels “Selektor”.

package { $facts['os']['family'] ? {
      /^(?i:redhat)$/ => 'httpd',
      /^(?i:debian|suse)$/ => 'apache2',
  }:
  ensure =>  latest,
}

…nur als Optimierungsversuchansatz. ;-)