Administration/Dienste/Puppet-Server: Unterschied zwischen den Versionen

Aus Freifunk Nordwest Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „{{ServiceInfoBox |name=Puppet-Server |administrator= |runningOnServer=Administration/Server/puppet.ffnw.de }} Kategorie:Puppet-Dienste = Puppet-Server =…“)
(kein Unterschied)

Version vom 1. Oktober 2017, 12:35 Uhr

Puppet-Server
Beschreibung {{{description}}}
Administrator Benutzer:Der für das Attribut „Administrator“ des Datentyps Seite angegebene Wert „Benutzer:“ enthält ungültige Zeichen oder ist unvollständig. Er kann deshalb während einer Abfrage oder bei einer Annotation unerwartete Ergebnisse verursachen.
URL {{{URL}}}
Server Administration/Server/puppet.ffnw.de

Puppet-Server

An dieser Stelle sind einige Informationen zur Konfiguration unseres Puppet-Servers zusammengetragen.

Resourcen

Entwicklung von Puppet Modulen

Die Projektressourcen liegen unter:

* Puppet-Gruppe und Projektübersicht: https://git.nordwest.freifunk.net/groups/ffnw-puppet
* Puppet-Milestones: https://git.nordwest.freifunk.net/groups/ffnw-puppet/milestones

Es ist absolut notwendig, dass du die [des Puppet-Base-Repos] liest und verstehst, bevor du anfängst für Puppet zu entwickeln.

Puppet Master

Besuche für einen guten Einstieg die [[1]] und schaue auf die [[2]] des [Repos].

Wichtige kommandos

Starten und Stoppen

* service puppetserver restart

Agent vom Master entfernen

/opt/puppetlabs/bin/puppet cert list -a
/opt/puppetlabs/bin/puppet cert clean hostname

Externe Puppet Pakete

Auf https://forge.puppetlabs.com gibt es ein Repository für externe Puppet pakete. Wir nutzen einige davon, die auf dem master vorinstalliert werden müssen. Folgende Pakete nutzen wir:

Um eines der Pakete für ein bestimmtes Environment zu installieren kann folgender Befehl (auf dem Puppet Master) genutzt werden:

puppet module install <PAKET> --environment=<branch>

Um alle installierten und fehlenden Module zu listen nutze:

/opt/puppetlabs/bin/puppet module list 

Wichtige Orte

  • Code für die Agents: /etc/puppetlabs/code
  • Environments: /etc/puppetlabs/code/environments/
  • Modul: /etc/puppetlabs/code/environments/<ENVIRONMENT>/master/modules/<MODULE>

Dateistruktur auf dem Puppetmaster

Die Konfiguration des Puppetmaster für die verwalteten Nodes liegt in `/etc/puppetlabs/code`. Im Unterordner `environments` liegen der Entwicklungszweig `master` und der Produktivzweig `production`. Im ersteren wird entwickelt, zweiterer enthält die Konfigurationen die auf die Nodes geht, die im produktiven Einsatz sind.

Die Ordnerstruktur der Zweige ist in folgender Grafik dargestellt. Sie ist komplexer als zunächst geplant und sicherlich noch verbesserbar, bietet gegenüber den bis dahin probierten, gängigeren Strukturen die folgenden Vorteile:

* Jeder verwaltete Node kann beliebig viele unterschiedliche rollen (zB supernode, webserver, ...) einnehmen, die in roles-available und unter `:hierarchy` in der `hiera.yaml` definiert sind
* Jeder Parameter kann auf dem Node, in den Rollen oder auf allgemeiner ebene festgelegt werden. Durch Verwendung des `:merge_behavior: deeper` führt hiera diese Ebenen zusammen. Dies erspart redundante Definitionen und beugt Fehlern vor.
* Die Klassen-Includes und die Konfiguration der Klassen liegen an einer Stelle, nämlich in den jeweiligen Hiera-Dateien der Nodes, Rollen oder allgemeinen Einstellungen.

Vorlage:Attachment:puppet-hiera.svg.png

Dateistruktur updaten

Zum Update der gesamten Dateistrutur-Basis wird der code Ordner geupdated:

cd /etc/puppetlabs/code/
git pull --rebase

Dies führt zu einem Update aus dem [[3]]-Projekt.

Einzelnes Modul updaten

In das Modulverzeichnis wechseln und dann per git pull updaten

cd /etc/puppetlabs/code/environments/<ENVIRONMENT>/master/modules/<MODULE>
git pull --rebase

Dies führt zu einem Update aus dem jeweiligen puppet-<MODUL> Projekt.

Daten updaten

Zum Update der Daten wechseln wir in das data Verzeichnis und führen git pull aus

/etc/puppetlabs/code/environments/<ENVIRONMENT>/data
git pull --rebase

Dies führt zu einem Update aus dem [[4]]-Projekt.

Troubleshooting

Could not request certificate: execution expired

Das heißt in der Regel, dass der Puppet agent den Puppet Master aufgrund einer Fehlkonfiguration nicht erreichen kann. Auf dem Puppet Agent prüfen:

* Ist ein FQDN als Hostname gesetzt (Technik/Dokumentation/Server-Basiskonfiguration#Hostname)?
* Ist in der Puppet-Config ein Puppet-Paster eingetragen (server=puppet.ffnw.de, siehe Technik/Dokumentation/Puppet#Einrichtung_des_Puppet-Agent)?

Error: invalid byte sequence in US-ASCII

* https://git.nordwest.freifunk.net/ffnw-puppet/puppet-grmlzsh/issues/1

Could not find class ::ssh for runner01.ffnw.de at

Wird ein externes Paket genutzt? Dann muss dieses auf dem Puppet master installiert werden. Siehe Technik/Dokumentation/Puppet#Externe_Puppet_Pakete

Could not autoload puppet/parser/functions/ip_address

{{{ Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Function Call, Could not autoload puppet/parser/functions/ip_address: no such file to load -- netaddr at /etc/puppetlabs/code/environments/production/modules/icvpn/templates/bird.epp:29:13 on node ol01.sn.ffnw.de }}}

See README of ipcalc module: https://git.nordwest.freifunk.net/ffnw-puppet/puppet-ipcalc {{{ puppetserver gem install netaddr service puppetserver restart }}}

File[/etc/dnsmasq.conf] doesn't seem to be in the catalog

You need to use our own fork of the lex-dnsmasq package that is based on the current master of the lex-dnsmasq package: https://git.nordwest.freifunk.net/ffnw-puppet/puppet-dnsmasq

Entwickelte Module

Von unsere Seite wurden bereits Module eigenständig entwickelt oder erweitert. Nachfolgende Liste soll hier einen groben Überblick über Module und deren Funktionen geben:

Usermanagement

User anlegen, User löschen, SSH Keys einem neuen User hinzufügen, Homedir anlegen

* [des Modules]
* [Readme]

Unattended Upgrades

Das Modul Unattended-Upgrades automatisiert den Update-Prozess für einige Pakete sodass hier bei den meisten Paketen keine händischen Upgrades gemacht werden müssen.

* [des Modules]
* [Readme]