# Virtuelle Maschinen

#### ZAM-IT-betriebene virtuelle Maschinen (VMs) für Nutzer- oder Projektdienste.

<p class="callout warning">**Bitte lest diese Seite und sprecht mit uns bevor ihr einen eigenen "Server" im ZAM betreibt!  
Wir behalten uns vor, unabgesprochene eigene "Server" ohne Vorwarnung außer Betrieb zu nehmen.** </p>

Wir als ZAM-IT bieten euch die Möglichkeit, virtuelle Maschinen (VMs) auf unserer Hardware für Nutzer- oder Projektdienste zu bekommen. Das spart nicht nur Strom, sondern hat eine Reihe weiterer Vorteile für euch:

- Wir kümmern uns um den Betrieb der Hardware
- Verbesserte Ausfallsicherheit durch Serverhardware (u.A. zwei Netzteile und redundante Platten) und Schutz vor Stromausfall (USV)
- Regelmäßige Backups
- Feste IP-Adresse und sprechender DNS-Eintrag

Die Nutzung dieses Services ist allerdings an ein paar Bedingungen geknüpft:

- Direkter Bezug zum ZAM (Dienst fürs ZAM oder ZAM-Projekt)
- Technische Vereinbarkeit mit der Produktivinfrastruktur (bspw. Last / Anforderungen)
- Bestehen eines Vertrauensverhältnisses (damit Einschränkung auf ZAM-Mitglieder)

Bei Bedarf einer VM, bitte eine [**Mail an it@zam.haus**](mailto:it@zam.haus) mit folgenden Informationen schreiben:

- Kurze Beschreibung des Projekts, aus der der Bezug zum ZAM hervorgeht
- Kurze Vorstellung des/der Verantwortlichen für die VM (falls nicht eh bekannt)
- Technische Anforderungen (CPU-Kerne, Hauptspeicher, Festplattenkapazität)

Sobald die VM eingerichtet ist, lassen wir euch die Zugangsdaten auf einem sicheren Weg zukommen - für das, was in der VM passiert und passieren soll seid ihr dann zuständig und verantwortlich. Details gibts im nachfolgenden Abschnitt.

<p class="callout info">Bitte beachtet, dass VMs auf best-effort Basis von einer Gruppe Freiwilliger angeboten werden - wir versprechen daher weder eine 24/7 Verfügbarkeit, noch den langfristigen Weiterbetrieb einmal eingerichteter VMs.</p>

#### Nutzung der VM

Die VM läuft auf einem unserer Server - daher stellen wir (= die ZAM IT) einige Anforderungen:

- **Voller root-Zugriff auf die VM**  
    Dafür liegt einer unser ssh-keys in `/root/.ssh/authorized_keys`. Bitte entfernt diesen Schlüssel nicht und achtet bei etwaigen Konfigurationsänderungen darauf, dass der Schlüssel weiter aktiv bleibt.
- **Aktiver salt-minion** Die Nutzer-VMs sind in ein [salt](https://saltproject.io) eingebunden - bitte lasst den salt-minion weiterlaufen.  
    salt ermöglicht es uns VMs schnell und zentral zu verwalten. Die Verwaltung der Nutzer-VMs beschränkt sich bislang auf die Verwaltung von in der VM installierten Paketen, wird in der Zukunft aber ggf. weiter ausgebaut.
- **Nutzung von pkgsync-ng** Unsere VMs nutzen pkgsync-ng, ein Tool das installierte Pakete verwaltet und das System automatisch aktualisiert/auf dem aktuellen Stand hält (zumindest solange Pakete per apt installiert werden). Auch hier gilt: Bitte nicht deaktivieren.

##### Hinweise zu pkgsync-ng

<p class="callout warning">**pkgsync-ng deinstalliert Pakete, die nicht auf der Paketliste stehen** - tragt daher alle Pakete in die Paketliste ein (s.u.)</p>

Die Nutzung von pkgsync-ng erfordert, dass du als Admin eine Liste von Paketen pflegst, die auf dem System installiert sein sollen. Diese Liste findest du in `/etc/pkgsync/`.pkgsync-ng unterstützt drei Arten von Paketlisten:

- *maynothave*: Pakete, die **explizit nicht installiert sein dürfen**. Wird von uns nicht/kaum genutzt.
- *mayhave*: Pakete, die **installiert sein können, aber nicht automatisch installiert werden**. Wird von uns nicht/kaum genutzt.
- *musthave*: Liste von Paketen, die **installiert sein müssen**.  
    In diese Liste sollt/müsst ihr die Pakete eintragen, die ihr auf der VM installieren möchtet.