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-Gruppe und Projektübersicht: https://git.nordwest.freifunk.net/groups/ffnw-puppet |
− | * Puppet-Milestones: https://git.nordwest.freifunk.net/groups/ffnw-puppet/milestones
| + | * Puppet-Milestones: https://git.nordwest.freifunk.net/groups/ffnw-puppet/milestones |
| | | |
− | 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. | + | 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 [[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]]. | + | 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
| + | * 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 `/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 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 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.
| + | * 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.
| + | * 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. |
| | | |
− | {{attachment:puppet-hiera.svg.png|puppet-hiera.svg.png|width=300}}
| + | [[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 [[https://git.nordwest.freifunk.net/ffnw-puppet/puppet|puppet]]-Projekt. | + | 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 [[https://git.nordwest.freifunk.net/ffnw-puppet/puppet-data|puppet-data]]-Projekt. | + | 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 ([[Technik/Dokumentation/Server-Basiskonfiguration#Hostname]])?
| + | * 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 [[Technik/Dokumentation/Puppet#Einrichtung_des_Puppet-Agent]])?
| + | * 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
| + | * 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 [[Technik/Dokumentation/Puppet#Externe_Puppet_Pakete]] | + | 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 Source des Modules] |
− | * [[https://git.nordwest.freifunk.net/ffnw-puppet/puppet-user/blob/master/README.md|Modul Readme]]
| + | * [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 Source des Modules] |
− | * [[https://git.nordwest.freifunk.net/ffnw-puppet/puppet-unattended_upgrades/blob/master/README.md|Modul Readme]]
| + | * [https://git.nordwest.freifunk.net/ffnw-puppet/puppet-unattended_upgrades/blob/master/README.md Modul Readme] |