Foreman Archiv - credativ®

Foreman ist eindeutig in einer IPv4-Welt verwurzelt. Das sieht man überall. Es scheint, als ob es Ihnen keinen Host ohne IPv4 geben möchte, aber ohne IPv6 ist es in Ordnung. Aber das muss nicht so sein, also begeben wir uns gemeinsam auf eine Reise, um Foreman und die Dinge um ihn herum in die Gegenwart zu bringen.
(mehr …)

Im ersten Teil wurde Foreman installiert und konfiguriert. Damit ist es bereits möglich, Systeme mit Puppet zu konfigurieren und Reports einzusehen. Jetzt folgt die Konfiguration des Provisionings, um auch neue Systeme installieren zu können.

  1. Subnet konfigurierenUm Installationen zu ermöglichen, muss zunächst das verwendete IP-Subnet in Foreman konfiguriert werden. Dazu wird unter Infrastructure -> Subnets der Button New subnet betätigt, der Dialog ausgefüllt und bestätigt. Hierbei ist es wichtig, dass Network address und Network mask entsprechend der eigenen Infrastruktur ausgefüllt werden. Außerdem muss auf dem Reiter Proxies ein TFTP-Proxy ausgewählt werden. („foreman“).
  2. Provisioning Templates für Ubuntu konfigurierenNachdem Puppet im ersten Teil dieser Anleitung erstmals ausgeführt wurde, kennt Foreman Ubuntu 12.04.4 LTS als Betriebssystem. Dies muss nun mit verschiedenen Templates verknüpft werden. Dazu müssen unter Hosts -> Provisioning Templates nacheinander die folgenden Templates editiert werden:
    • Preseed default
    • Preseed default PXELinux
    • Preseed finish

    Dort ist jeweils unter „Association“ der Haken vor „Ubuntu 12.0.4.4“ zu aktivieren und die Änderung mit „Submit“ zu übernehmen.

  3. Architektur mit dem Betriebssystem verknüpfen:Dieser Vorgang muss dann gleich noch einmal für die System-Architekturen unter Hosts -> Architekturen wiederholt werden: Anklicken, Haken aktivieren, mit Submit betätigen.
  4. Standard-Einstellungen für Ubuntu-Installation festlegenIm Bereich „Hosts -> Operating Systems“ können die Betriebssysteme verwaltet werden, die mit Foreman installiert werden sollen.Dort ist zur Zeit nur Ubuntu bekannt, das noch mit ein paar Einstellungen versehen werden muss, um es verwenden zu können. Nach dem Anklicken sind nacheinander die gewünschten Architekturen im Reiter „Operating System“, „Preseed default“ im Reiter „Partition Table“ und „Ubuntu mirror“ unter „Installation media“ zu wählen. Schließen müssen im Reiter „Templates“ noch die Templates aus Schritt 1 für „provision“, „PXELinux“ und „finish“ gewählt werden.
  5. DHCP konfigurierenFür die automatische Ubuntu-Installation wird ein DHCP-Server für das in Schritt 1 konfigurierte Subnet benötigt.Dieser kann mit der Konfiguration
    ignore unknown-clients;

    so konfiguriert werden, dass er nur an explizit konfigurierte Systeme IP-Adressen vergibt (benötigt also nicht zwingend einen IP-Pool). Außerdem werden die folgenden Einstellungen in der subnet-Deklaration benötigt:

    next-server <IP des Foreman-Systems>;
    filename "pxelinux.0";
  6. Neuen Host provisionieren:Nachdem der DHCP-Server konfiguriert wurde, ist Foreman prinzipiell in der Lage Systeme zu provisionieren. Dafür sind pro System folgende Schritte erforderlich:
    1. Eintragen des Systems mit Mac-Adresse in die DHCP-Konfiguration:
       host <hostname> { 
         hardware ethernet <mac-adresse>;
         fixed-address <ip> 
       } 
      
    2. Anlegen eines Hosts in ForemanDies geschieht, indem unter Hosts -> All Hosts der Button New host betätigt wird.Der nachfolgende Dialog ist weitestgehend selbsterklärend. Wichtig dabei ist, dass Environment, Puppet CA und Master (foreman), MAC-Adresse und Domain auf dem Reiter Network sowie alle Einstellungen im Reiter Operating System ausgefüllt werden.
    3. Start des Systems und Wahl von PXE-Boot als Bootoption Zu guter Letzt kannn das zu installierende System gestartet und dazu bewegt werden, per PXE zu booten. Die Installation erfolgt dann vollautomatisch.

    Damit wären wir am Ende unserer zweiteiligen Anleitung. Nachdem die vorherigen Schritte befolgt wurden, besteht eine voll funktionsfähige Foreman-Installation, mit der Systeme installiert und konfiguriert werden können. Damit ist es theoretisch möglich, ein ganzes Firmennetzwerk vollautomatisch zu provisionieren – auch wenn dies natürlich weiteres Zutun erfordert.

    Für weiterführende Informationen sei auch hier wieder auf die Puppet- und Foreman-Dokumentation verwiesen, die umfassende Informationen hinsichtlich der Entwicklung von Puppet-Manifesten und der Anwendung von Foreman bereit halten. Bei Fragen stehen wir aber auch gerne zur Verfügung.

     

    Dieser Artikel wurde ursprünglich geschrieben von Patrick Schönfeld.

Im ersten Teil unserer Schritt für Schritt Anleitung widmen wir uns zunächst der grundlegenden Installation von Foreman und Puppet. Danach ist es möglich bestehende Systeme mit Puppet zu verwalten und die Reporting-Fähigkeiten von Foreman zu nutzen.

  1. Einbinden der Puppetlabs-Repositories:Foreman funktioniert sowohl mit dem in Ubuntu Precise enthaltenen Puppet 2.7 als auch mit Puppet 3.x. Die neue Version enthält jedoch einige nützliche Features und Vereinfachungen, weshalb wir diese Version bevorzugt einsetzen. Dafür ist es erforderlich die Puppetlabs-Repositories wie folgt einzubinden:
       wget https://apt.puppetlabs.com/puppetlabs-release-precise.deb
       sudo dpkg -i puppetlabs-release-precise.deb
  2. Einbinden der Paket-Repositories für Foreman
      echo "deb http://deb.theforeman.org/ precise 1.4" > foreman.list
      sudo mv foreman.list /etc/apt/sources.list.d
      wget -q http://deb.theforeman.org/foreman.asc -O- | sudo apt-key add -
  3. Installation des Foreman InstallersDer Foreman Installer nutzt Puppet, um die initale Einrichtung von Foreman voll automatisiert vorzunehmen. Daher wird dieser zunächst installiert:
    sudo apt-get update && sudo apt-get install foreman-installer
  4. Ausführung des Foreman InstallersIm einfachsten Fall einer Foreman-Installation werden die folgenden Dienste auf dem Foreman-System installiert, konfiguriert und durch Foreman verwaltet:
    • Puppet (einschließlich der PuppetCA)
    • PXE/TFTP (für Provisonierung)

    Foreman kann zusätzlich DHCP und DNS konfigurieren, wird aber standardmäßig nicht dafür konfiguriert, da das in typischen Setups oft nicht gewollt ist. Der nachfolgende Aufruf führt daher zu einer Standard-Installation:

    sudo foreman-installer

    Ein paar weitere typische Anwendungsszenarien und wie der Installer-Aufruf dafür aussehen müsste, werden in der Foreman-Dokumenation beschrieben.

  5. Erster Aufruf von Foreman:Die Installation aus Schritt 3 läuft vollautomatisch ab. Bei einer erfolgreichen Installation sehen die Ausgaben ungefähr wie folgt aus:
            Installing             Done
              [100%]
    [...........................................................................]
              Success!
              * Foreman is running at https://ubuntu-foreman.xxx.credativ.com
                  Default credentials are 'admin:changeme'
              * Foreman Proxy is running at
    https://ubuntu-foreman.xxx.credativ.com:8443
              * Puppetmaster is running at port 8140
              The full log is at
    /var/log/foreman-installer/foreman-installer.log

    Über die angegebene URL („Foreman is running at“) kann mit den ebenfalls aufgeführten Zugangsdaten auf das Webinterface zugegriffen werden. Hierbei erscheint eine Zertifikatswarnung, weil bei der Installation ein sogenanntes self-sigend Zertifikat erstellt wurde. Diese Warnung kann gefahrlos quittiert werden. Für ein produktives Setup wäre es möglich und sinnvoll, das Zertifikat durch ein CA-signiertes Zertifikat auszutauschen.

    Nach dem Login wird eine Willkommensseite mit Informationen zu möglichen ersten Schritten angezeigt. Etwa der Einrichtung eines Smart Proxy auf einem anderen System, Konfiguration von Benutzern oder ähnlichem. Diese Seite wird nur angezeigt, bis das erste Mal Puppet auf einem (noch zu konfigurierenden) System läuft.

  6. Puppet das erste Mal ausführen:Um das System auf dem Foreman installiert wurde, bei Foreman bekannt zu machen, muss puppet einmalig manuell ausgeführt werden:
    sudo puppet agent -t

    Hierbei kann es zu einer Fehlermeldung kommen. Die ist jedoch darauf zurückzuführen, dass noch keine keine Puppet-Konfiguration für das System hinterlegt ist, und kann ignoriert werden.

    Das System sollte nun in Foreman unter Hosts -> All Hosts auffindbar sein.

  7. Ein Puppet-Modul installieren und Foreman bekannt machen:Puppet sieht vor, wiederverwendbare Module je zu konfigurierender Dienste/Komponenten zu hinterlegen, an Systeme zuzuweisen und über Parameter zu konfigurieren. Fertige Module können u.a von Puppetforge (https://forge.puppetlabs.com/) bezogen werden. Um aus dieser Quelle Module zu beziehen, stellt puppet seit Version 3 einen eigenen Befehl bereit. So kann mit dem folgenden Befehl das ’ntp‘-Modul von Puppetlabs, den Entwicklern von puppet, installiert werden:
    sudo puppet module install puppetlabs-ntp

    Anschließend muss das installierte Modul in Foreman einmalig bekannt gemacht werden. Dazu wird in Puppet über Configure ->Puppet classes die Verwaltung von Puppet-Klassen aufgerufen, der Import-Button betätigt und im nachfolgenden Dialog die zu importierenden Module (in diesem Fall ntp und stdlib) ausgewählt und bestätigt.

  8. Ein System konfigurieren und Test:Um ein System zu konfigurieren, müssen diesem mindestens Puppet-Klassen zugewiesen werden Dazu muss der Host unter Hosts -> All Hosts rausgesucht und über einen Klick auf Edit bearbeitet werden.Im Reiter Puppet Classes werden dazu auf der rechten Seite die verfügbaren Klassen angezeigt. Mit einem Klick auf das Plus-Zeichen hinter dem Modul (in diesem Fall ’ntp‘) werden alle dazugehörigen Klassen (ntp, ntp::config, etc.) angezeigt. Ein weiterer Klick auf das Plus-Zeichen hinter ntp fügt es dem System hinzu. Mit Submit kann die Änderung gespeichert werden.

    Um die Konfiguration anzuwenden, wird erneut der Befehl aus Schritt 5 aufgerufen:

    sudo puppet agent -t

    Die nun angezeigten Meldungen fallen umfangreich aus. Darunter sollten aber unter anderem die folgenden Zeilen zu finden sein:

       Notice: /Stage[main]/Ntp::Install/Package[ntp]/ensure: ensure changed
    'purged' to 'present'
       Notice: /Stage[main]/Ntp::Config/File[/etc/ntp.conf]/content:
       ...
       Info: /Stage[main]/Ntp::Config/File[/etc/ntp.conf]: Filebucketed
    /etc/ntp.conf to puppet with sum 32280703a4ba7aa1148c48895097ed07
       Notice: /Stage[main]/Ntp::Config/File[/etc/ntp.conf]/content: content
    changed '{md5}32280703a4ba7aa1148c48895097ed07' to
    '{md5}ea7609ba7dba17f26db7cd86967294ae'
       Info: Class[Ntp::Config]: Scheduling refresh of Class[Ntp::Service]
       Info: Class[Ntp::Service]: Scheduling refresh of Service[ntp]
       Notice: /Stage[main]/Ntp::Service/Service[ntp]: Triggered 'refresh'
    from 1 events
       Notice: Finished catalog run in 21.41 seconds

    Hieraus wird ersichtlich, dass die Installation des ’ntp‘-Paket, die Erstellung einer Konfiguration sowie Konfiguration und Start des entsprechenden Dienstes erfolgt ist.

    Dies lässt sich auch mit den üblichen Tools verifizieren. So sollte etwa

    sudo /etc/init.d/ntp status

    die Meldung ausgeben, dass der NTP server läuft.

Damit wären wir auch schon am Ende des ersten Teils unserer Schritt für Schritt Anleitung. Nun können nach Belieben Module hinzugefügt, Systeme konfiguriert und die Reports in Foreman eingesehen werden.

Weiterführende Informationen hierzu:

In Kürze veröffentlichen wir den zweiten Teil dieser „Schritt für Schritt“-Anleitung, in dem wir uns schließlich dem Thema „Vollautomatische Installationen mit Foreman“ widmen.

 

Dieser Artikel wurde ursprünglich geschrieben von Patrick Schönfeld.