Administration/Dienste/Puppet-Server: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „{{ServiceInfoBox |name=Puppet-Server |administrator= |runningOnServer=Administration/Server/puppet.ffnw.de }} Kategorie:Puppet-Dienste = Puppet-Server =…“) |
Tata (Diskussion | Beiträge) |
||
(11 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 15: | Zeile 15: | ||
== Entwicklung von Puppet Modulen == | == Entwicklung von Puppet Modulen == | ||
Die Projektressourcen liegen unter: | 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 | + | Es ist absolut notwendig, dass du die [https://git.nordwest.freifunk.net/ffnw-puppet/puppet README des Puppet-Base-Repos] liest und verstehst, bevor du anfängst für Puppet zu entwickeln. |
== Puppet Master == | == Puppet Master == | ||
− | Besuche für einen guten Einstieg die | + | Besuche für einen guten Einstieg die [https://git.nordwest.freifunk.net/groups/ffnw-puppet Puppet-Gruppe] und schaue auf die [https://git.nordwest.freifunk.net/ffnw-puppet/puppet/blob/master/README.md README] des [https://git.nordwest.freifunk.net/ffnw-puppet/puppet/ Puppet Repos]. |
=== Wichtige kommandos === | === Wichtige kommandos === | ||
==== Starten und Stoppen ==== | ==== Starten und Stoppen ==== | ||
− | + | * service puppetserver restart | |
+ | |||
==== Agent vom Master entfernen ==== | ==== Agent vom Master entfernen ==== | ||
<pre> | <pre> | ||
Zeile 57: | Zeile 58: | ||
=== Dateistruktur auf dem Puppetmaster === | === Dateistruktur auf dem Puppetmaster === | ||
− | Die Konfiguration des Puppetmaster für die verwalteten Nodes liegt in | + | 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: | 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. | |
− | + | [[Datei:puppet-hiera.svg.png|300px|]] | |
=== Dateistruktur updaten === | === Dateistruktur updaten === | ||
Zeile 73: | Zeile 74: | ||
git pull --rebase | git pull --rebase | ||
</pre> | </pre> | ||
− | Dies führt zu einem Update aus dem | + | Dies führt zu einem Update aus dem [https://git.nordwest.freifunk.net/ffnw-puppet/puppet puppet]-Projekt. |
=== Einzelnes Modul updaten === | === Einzelnes Modul updaten === | ||
Zeile 89: | Zeile 90: | ||
git pull --rebase | git pull --rebase | ||
</pre> | </pre> | ||
− | Dies führt zu einem Update aus dem | + | Dies führt zu einem Update aus dem [https://git.nordwest.freifunk.net/ffnw-puppet/puppet-data puppet-data]-Projekt. |
== Troubleshooting == | == Troubleshooting == | ||
=== Could not request certificate: execution expired === | === 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: | 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 ([[Administration/Handbücher/Server-Basiskonfiguration#Hostname | Hostname]])? | |
− | + | * Ist in der Puppet-Config ein Puppet-Paster eingetragen (server=puppet.ffnw.de, siehe [[Administration/Dienste/Puppet-Agent#Einrichtung_des_Puppet-Agent | Einrichtung des Puppet-Agent]])? | |
=== Error: invalid byte sequence in US-ASCII === | === 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 === | === 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 [[ | + | Wird ein externes Paket genutzt? Dann muss dieses auf dem Puppet master installiert werden. Siehe [[Administration/Dienste/Puppet-Server#Externe_Puppet_Pakete | Externe Puppet Pakete]] |
=== Could not autoload puppet/parser/functions/ip_address === | === Could not autoload puppet/parser/functions/ip_address === | ||
− | + | <pre> | |
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 | 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 | ||
− | + | </pre> | |
See README of ipcalc module: https://git.nordwest.freifunk.net/ffnw-puppet/puppet-ipcalc | See README of ipcalc module: https://git.nordwest.freifunk.net/ffnw-puppet/puppet-ipcalc | ||
− | + | <pre> | |
puppetserver gem install netaddr | puppetserver gem install netaddr | ||
service puppetserver restart | service puppetserver restart | ||
− | + | </pre> | |
=== File[/etc/dnsmasq.conf] doesn't seem to be in the catalog === | === File[/etc/dnsmasq.conf] doesn't seem to be in the catalog === | ||
Zeile 122: | Zeile 123: | ||
=== Usermanagement === | === Usermanagement === | ||
User anlegen, User löschen, SSH Keys einem neuen User hinzufügen, Homedir anlegen | User anlegen, User löschen, SSH Keys einem neuen User hinzufügen, Homedir anlegen | ||
− | + | * [https://git.nordwest.freifunk.net/ffnw-puppet/puppet-user Source des Modules] | |
− | + | * [https://git.nordwest.freifunk.net/ffnw-puppet/puppet-user/blob/master/README.md Modul Readme] | |
=== Unattended Upgrades === | === 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. | 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. | ||
− | + | * [https://git.nordwest.freifunk.net/ffnw-puppet/puppet-unattended_upgrades Source des Modules] | |
− | + | * [https://git.nordwest.freifunk.net/ffnw-puppet/puppet-unattended_upgrades/blob/master/README.md Modul Readme] |
Aktuelle Version vom 25. Juni 2018, 14:26 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
- Offizielle Dokumentation: https://docs.puppetlabs.com/puppet/
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 README 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 Puppet-Gruppe und schaue auf die README des Puppet 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:
- https://forge.puppetlabs.com/ghoneycutt/ssh
- https://forge.puppetlabs.com/puppet/unattended_upgrades
- https://forge.puppet.com/puppetlabs/apt
- https://forge.puppet.com/stankevich/python
- https://forge.puppet.com/puppetlabs/concat
- https://forge.puppet.com/puppetlabs/motd
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.
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 puppet-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 puppet-data-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 ( Hostname)?
- Ist in der Puppet-Config ein Puppet-Paster eingetragen (server=puppet.ffnw.de, siehe Einrichtung des Puppet-Agent)?
Error: invalid byte sequence in US-ASCII
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 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
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.