# Ubuntu Server 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. * $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`)