Inhaltsverzeichnis

Proxmox

Der Verein betreibt mehrere Proxmox-Kisten.

Der Zugriff auf die Admin-Oberflaechen erfolgt bitte immer per HOSTNAME.pveadmin.freifunk-stuttgart.de. Hintergrund: damit kann man auch ueber den Reverse Proxy, die auf anderen Hosts laufen, zugreifen. Ausserdem bekommt man so ein ordentliches Zertifikat.

Jeder pve-Cluster hat ein lokales Netzwerk (Hetzner vSwitch/Crossoverkabel) das fuer die Kommunikation im Cluster verwendet wird. Getrennt davon gibt es L2-Netze fuer die Gaeste, die auf den Proxmox-Hosts laufen.

Netz fuer Gaeste

Es gibt per VXLAN ein Clusteruebergreifendes L2, ueber das die Gaeste miteinander kommunizieren koennen. Wird per Proxmox SDN konfiguriert.

Als L3-underlay dient der Babel-Backbone.

Cluster

Clustername Cluster-ID Hoster/Standort Cluster-Netz
ffshetzner 3 Hetzner 10.5.0.0/24
ffsz10a 8 Nepustil, Zettachring 10a 10.0.8.0/24

Maschinen

Proxmox Instanz Cluster Cluster-IP
ffs05.freifunk-stuttgart.de ffshetzner 10.5.0.5
ffs08.freifunk-stuttgart.de ffsz10a 10.8.0.8
ffs11.freifunk-stuttgart.de ffshetzner 10.5.0.11
ffs13.freifunk-stuttgart.de ffsz10a 10.8.0.13

Setup

Es gibt ein paar Konventionen zum Setup, an die wir uns halten moechten.

Interfaces

Dateisysteme

Bei Hetzner kein Root auf ZFS, weil das Hetzner Rescue kein ZFS kann! Dann bitte mdadm RAID + LVM + ZFS (ja, wirklich).

IP-Adressen

Bitte alle IP-Adressen fuer Container und VMs im Wiki-Artikel Zentraler Backbone aus 10.191.255.0/24 reservieren. Das stellt sicher, dass alle Gaeste spaeter auch prinzipiell an den Backbone angebunden werden koennen.

Gast-IDs

Leiten sich aus dem letzten Oktett der Backbone-IP und der Cluster-ID ab:

Gast-ID = Cluster-ID * 1000 + letztes Oktett der IP

Also hat der Gast mit IP 10.191.255.123 auf Cluster 7 die IP 7123.

Nutzerkonto auf Proxmox anlegen

Es werden grundsaetzlich nur lokale Nutzeraccounts benutzt, damit die Nutzer die Proxmox-Shell verwenden koennen und ihr Passwort selbst per SSH setzen koennen.

Die Nutzerkonten auf Proxmox Hosts werden alle mit Ansible verwaltet.

Die Proxmox(!)-Gruppe ffs gibt den Nutzern Zugriff aufs Proxmox-Webinterface.

  1. Nutzer im Ansible anlegen
  2. Playbook all.yml laufen lassen.
  3. Den Nutzer per pveum user add NUTZER@pam bei Proxmox bekannt machen. Das muss nur einmal pro Cluster und Nutzer gemacht werden.
  4. Den Nutzer per pveum user modify --groups ffs nrb@pam zur Proxmox-Gruppe ffs hinzufuegen. Das muss nur einmal pro Cluster und Nutzer gemacht werden.
  5. Nutzer kann sich per SSH einloggen und anschließend ein Passwort per `passwd` setzen, mit dem er sich im Proxmox einloggen kann. Das Passwort gilt jeweils nur für einen Host, nicht clusterweit.

Zugriff auf Container / Proxmox als Jumphost

Sobald man einen Account auf den Proxmox Hosts hat und sich auf den Hosts per SSH einloggen kann, kann man sich auf den Gästen einloggen.

Entweder per Jumphost und IP des Gastes:

ssh -J PROXMOXHOST GASTIP

Oder man fügt folgenden Schnipsel in seine `.ssh/config` ein:

Host *.ffs05
        User root
        ProxyCommand ssh ffs05 -W 10.0.3.$(( $(echo %n | sed -e 's/.ffs05//') - 3000 )):22

Und kann dann per ssh GASTID.ffs05 auf jeden beliebigen Gast hinter ffs05.

Neuen Container anlegen

Wer ein Freifunkprojekt hat, kann vom Verein einen Container bekommen. Voraussetzung ist Vereinsmitgliedschaft und/oder eine entsprechende Vereinbarung mit dem Verein. Der Vorstand kann hierzu Auskunft geben.

  1. IP-Adresse reservieren im wiki-Artikel IP-Adressen.
  2. Im Proxmox auf „Create CT“ klicken
  3. Container-ID, Hostnamen und SSH-Key eintragen
  4. Bei Netzwerk die IP-Adresse aus dem Wiki-Artikel eintragen. Das letzte Oktett wird in das jeweilige Netz des Clusters eingesetzt. Beispiel: hat man die IP-Adresse 10.191.255.163 reserviert, nutzt man im Cluster 3 die IP 10.0.3.163. Netzmaske ist immer /24. Gateway ist die Cluster-IP des jeweiligen Hosts.
  5. Den Container oeffnen, auf „Console mode“ klicken und auf „shell“ aendern.
  6. Unter Netzwerk die MTU von eth0 auf 1400 umstellen (nur bei Hetzner, wegen vSwitch).