Newer
Older
Repository für allgemein verwendbare Puppet-Klassen, geeignet für Ubuntu-Server.
## Klassen
### ubuntu_server
Init-Klasse ist leer und tut nichts.
Einzelne Klassen des Moduls müssen explizit deklariert werden.
### ubuntu_server::autoremove_pgk
Installiert cronjob-Skript zum autmatischen entfernen von Paketen, die apt als nicht mehr benötigt betrachtet, durch ```apt-get autoremove```.
### ubuntu_server::changetrack
Installiert ```changetrack``` (siehe [changetrack.sourceforge.net]) zum Verfolgen und Benachrichtigen von ```root``` bei Änderungen in Konfigurationsdateien. So konfiguriert, dass alle dpkg bekannten Konfigurationsdateien und ein paar zusätzliche überwacht werden.
[changetrack.sourceforge.net]: http://changetrack.sourceforge.net/
### ubuntu_server::docker
Installiert das apt-Repository von dockerproject.org, installiert ```docker-engine``` und ```docker-compose```, falls nicht vorhanden oder kleiner als minimale Version.
* ```$docker_compose_latest_version``` (optional) = minimale Docker-Compose-Version, Versionen darunter werden auf die aktuelle aktualisiert.
### ubuntu_server::docker_extras
Installiert ein cronjob zum Löschen nicht mehr referenzierter Volumes und Images und ein Upstart-Task zum Updaten von ```docker-engine``` vor dem Start des Docker-Services.
### ubuntu_server::ethtool_setup
Setzt die "rx/tx ring parameters" auf 1024 für NICs (siehe [man ethtool -G]), außer OpenStack VMs. Benutzt die defined types aus ```ubuntu_server::ring_parameters```.
[man ethtool -G]: [http://linuxcommand.org/man_pages/ethtool8.html]
### ubuntu_server::firewall
Diese Klasse kann Skripte in ```/etc/network/if-up.d/``` und ```/etc/network/if-pre-up.d/``` ablegen zum frühzeitigen Setzen von iptables-Regeln. Per Default wird nichts abgelegt. Änderungen setzen ```/var/run/reboot-required```, um die Regeln aktiv zu schalten, was *nicht* in Laufzeit geschieht. Ziel ist es, Regeln von Docker und anderen Diensten nicht nachträglich zu stören, weshalb die Skripte die Regeln früh beim Boot schalten sollen.
* ```$firewall_scripts_pre_up``` (optional) = Puppet-Pfad zum Pre-Up-Script (Default: ```false```)
* ```$firewall_scripts_up``` (optional) = Puppet-Pfad zum Up-Skript (Default: ```false```)
### ubuntu_server::grub
Deaktiviert den graphischen Boot-Screen, setzt ```swapaccount=1``` als Kernel-Pparameter für Docker und bei VMs (```$::virtual == 'vmware'```) wird der IO-Scheduler auf ```noop``` gesetzt (siehe [VMWare KB 2011861]).
[VMWare KB 2011861]: https://kb.vmware.com/kb/2011861
### ubuntu_server::kernel_lts
Installiert das Metapaket für den aktuellsten LTS-Kernel und entfernt Metapakete für ältere LTS-Kernel. Zusammen mit _ubuntu_server::autoremove_pgk_ (s.o.) werden so unbenutzte, veraltete Kernel automatisch entfernt.
### ubuntu_server::monit
Installiert das lokale Monitoring-Tool [Monit] mit einer Standard-Konfiguration und Standard-Zugangsdaten.
* $admin_emails = Ein Array (ggf. mit nur einem Element) mit den Email-Adressen, an die Monit Benachrichtigungen schicken kann.
* $admin_user (optional) = Benutzername für die Anmeldung an Monit (Default: ```'madmin'```
* $admin_passwd (optional) = Passwort für die Anmeldung an Monit (Default: ```'gEt0ffMyL4wn'```)
* $mailserver (optional) = Email-Server für den Versand von Emails (Default: ```'mailer.gwdg.de'```)
* $monit_basis_config_template (optional) = Puppet-Pfad zur Konfigurationsdatei für die Haupt-Konfiguration non Monit. Sollte Elemente aus der Default-Konfiguration enthalten, die überschrieben werden sollen (Default: ```'ubuntu_server/etc/monit/conf.d/config.erb'```)
* $monit_filesystems_config_template (optional) = Puppet-Pfad zu einem Template für die Konfiguration der Überwachung der Dateisysteme (Default: ```'ubuntu_server/etc/monit/conf.d/filesystems.erb'```). Das Default-Template ersetllt Einträge für alle lokalen und NFS-Dateisysteme.
* $monit_config_dir (optional) = Puppet-Pfad zu einem Verzeichnis mit weiteren Konfigurationsdateien für zusätzliche Tests (Default: ```'puppet:///modules/ubuntu_server/etc/monit/conf.d'```)
* $docker_check (optional) = Falls ```true``` wird ein Skript installiert und ein Test eingerichtet, der auf gestoppte Container prüft. (Default: ```false```)
* $puppet_check (optional) = Fall ```true``` wird ein Test installiert, der ```last_run_report.yaml``` des Puppet Agent auf Fehler und ein Alter größer als 1 Stunde prüft. (Default: ```false```)
[Monit]: https://mmonit.com/monit/#about
### ubuntu_server::motd
Entfernt einige Skripte aus /etc/update-motd.d, die den Login von SSH verzögern. Zusätzlich wird ein Hinweis auf Puppet eingefügt.
### ubuntu_server::noipv6
Deaktiviert IPv6 im Kernel durch ```sysctl```.
### ubuntu_server::nrpe
Installiert NRPE-Daemon und Tests.
* $nrpe_local_cfg (optional) = Hauptkonfiguration für den NRPE-Daemon (Default: ```'puppet:///modules/ubuntu_server/etc/nagios/nrpe_local.cfg'```)
* $nrpe_scripts (optional) = Verzeichnis mit zusätzlichen Skripts, die durch NRPE für Tests verwendet werden können. (Default: ```'puppet:///modules/ubuntu_server/opt/nagios'```)
* $daemon_options (optional) = zusätzliche Optionen für den Aufruf des Daemon (Default: ```'--no-ssl'```)
* $enable_sudo_docker (optional) = Aktiviert einen Check, der auf gestoppte Docker-Containern prüft. Hierzu wird Nagios per sudo das Ausführen des Skripts erlaubt. (Default: ```false```)
### ubuntu_server::ntp
* $gwdg_ntp_servers (optional) = Array mit NTP-Server. (Default: NTP-Server der GWDG)
### ubuntu_server::openssh_server
Installiert OpenSSH-Server und schränkt Zugriffe auf Mitglieder der Gruppe ```root``` (Default) ein, entfernt einige schwache Cipher.
* $port (optional) = Port des SSH-Servers. (Default: ```22```)
* $groups_only (optional) = Einschränkung der SSH-Anmeldung auf folgende Gruppen als String. (Default: ```root```)
* $authorized_keys (optional) = ```false``` oder ein Puppet-Pfad zu einer ```authorized_keys```-Datei für den ```root```-Benutzer. (Default: ```false```)
### ubuntu_server::postfix
Einfach Installation und Konfiguration von Postfix, primär zum Aufnehmen und Weiterleiten von Systemnachrichten.
* $root_emails = Array mit Empängern für die Weiterleitungen von Nachrichten an ```root```. Ein leeres Array ```$root_emails=''``` überspringt Konfiguration von Relay und Weiterleitungen.
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
* $relayhost (optional) = Emailserver, der die Weiterleitungen engegen nimmt. (Default: ```mailer.gwdg.de```)
* $generic_maps (optional) = Mapping für das Umschrieben von ausgehenden Emails, siehe [Postfix-Dokumentation](http://www.postfix.org/ADDRESS_REWRITING_README.html#generic). (Default = ```puppet:///modules/ubuntu_server/etc/postfix/generic_maps```)
### ubuntu_server::puppet_agent
Konfiguriert vorhandenen Puppet-Agent für die Ausführung durch ```cron```. Zusätzlich werden per ```rsyslog``` die Meldungen des Puppet-Agents in ein eigenes Log geleitet.
* $nightly_only (optional) = Begrenzt die Zeiten im Cron-Job auf Stunden in der Nacht zur Ausführung von Puppet-Agent. (Default: ```false```)
* $on_reboot_once (optional) = Legt einen zusätzlichen Cron-job an, der nach dem Boot den Puppet-Agent ausführt. (Default: true)
### ubuntu_server::remove_pkg
Entfernt einige, für den normalen Server-Betrieb unnötige Standard-Pakete von Ubuntu, z.B. ```'mpt-status','avahi-*','landscape-common','landscape-client'```.
### ubuntu_server::ring_parameters
Defined Type für ```ubuntu_server::ethtool_setup```.
### ubuntu_server::simple_security
Installiert Tools für die Sicherheit des Servers, z.B. ```'fail2ban','molly-guard'```.
### ubuntu_server::sysctl_hung_task_panic
Konfiguriert Kernel so, dass bei nach 120 Blockade eines Tasks eine Kernel-Panik ausgelöst wird und dass eine Kernel-Panik zum Neustart des Hosts führt ([siehe auch](http://www.nico.schottelius.org/blog/reboot-linux-if-task-blocked-for-more-than-n-seconds/)).
### ubuntu_server::unattended_upgrades
Installiert das Apt-Modul für automatische Updates. Die Konfiguration installiert Updates aus ofizillen Ubuntu-Quellen und Docker, wobei aber ```docker-engine``` nicht automatisch aktualisert wird.
* $automatic_reboot (optional) = Aktiviert automatischen Neustart in der Nacht, falls dies für Aktualisierungen notwendig ist. (Default: ```false```)
* $autoremove (optional) = Entfernt nicht mehr benötigte Pakete, z.B. alte Kernel. (Default: ```true```)
* $allowed_origins (optional) = Array mit Quellenangaben für Apt, aus denen Updates installiert werden dürfen. (Default: ```["\${distro_id}:\${distro_codename}-updates","LP-PPA-ubuntu-lxc-lxd-stable:\${distro_codename}","Docker:ubuntu-\${distro_codename}","Puppetlabs:\${distro_codename}"]```)
* $package_blacklist (optional) = ein Array mit Paketnamen, die von automatischen Updates ausgeschlossen werden. (Default: 'docker-engine')
### ubuntu_server::zram
Installiert `zram-config` Paket zur Einrichtung von komprimierten Blockdevices im RAM ([zram](https://en.wikipedia.org/wiki/Zram)) und mit aktiviertem Swap darauf.
* $agressive (optional) = Setzt die Gesamtgröße der `zram`-Devices auf fast den gesamten RAM statt auf die Hälfte und setzt `vm.swappiness` auf 90 für frühzeitiges auslagern. (Default: `false`)