====== 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. ===== Backup ===== ==== Host ==== Die Hosts werden per PBS gebackupt, siehe ''/usr/local/sbin/backup_pbs.sh'' Infos zum restore per proxmox-backup-client gibt es unter [[technik:pbs]]. ==== Gaeste ==== Per Proxmox Backup. In clustern bitte pro Cluster-Node extra Backup-Jobs anlegen, damit Notifcation per Healthchecks pro Node erfolgt ===== 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 [[technik:babel-backbone|Babel-Backbone]]. ===== Cluster ===== ^ Clustername ^ Cluster-ID ^ Hoster/Standort ^ Cluster-Netz ^ | ffshetzner | 3 | Hetzner | ''10.5.0.0/24'' | | ffsz10a | 8 | Nepustil, Zettachring 10a | ''10.8.0.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 ==== * ''vmbr1'': NAT für Gäste, Netz ist hier `10.0.CLUSTERID.0/24`. Die Mitglieder des Cluster haben die IPs 1-10. - bald alt wird auf gastnat migriert * ''vmbr2'': Layer 2 Freifunknetz, VLAN = Segment + 100. VLAN 255 ist Transfernetz in den Wireguard Backbone. * ''vmbr999'': externes Interface mit öffentlicher IP. Finger weg, bei Hetzner droht Serversperrung wenn hier unbekannte MACs oder IPs unterwegs sind! * ''gastnat'': Clusteruebergreifendes VXLAN fuer Gaeste-Kommunikation ''10.0.3/24'' - ''2a0f:d607:e:1::/64'' - Dualstack mit Firewall IPv4/IPv6 * ''services'': Clusteruebergreifendes VXLAN fuer services die public IPv4/IPv6 brauchen ''91.216.35.208/28'' - ''2a0f:d607:e:1::/64'' - keine Firewall ==== 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 [[technik:ip-adressen#zentraler_backbone|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. - Nutzer im Ansible anlegen - Playbook ''all.yml'' laufen lassen. - Den Nutzer per ''pveum user add NUTZER@pam'' bei Proxmox bekannt machen. Das muss nur einmal pro Cluster und Nutzer gemacht werden. - 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. - 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 ===== Zum Zugriff auf Container/VMs per SSH kann der Jumphost verwendet werden Anleitung gibt es im [[https://gitlab.freifunk-stuttgart.de/infrastruktur/ansible|Infrastruktur-Ansible]] ===== 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. Ansible-Playbooks im [[https://gitlab.freifunk-stuttgart.de/infrastruktur/ansible|Infrastruktur-Ansible]] * create_container_z10a_gastnet.yml * erstellt einen LXC Container im gastnet * Dualstack IPv4/IPv6; IPv4 NAT * Inbound Firewall IPv4 und IPv6 * ideal geeignet bspw fuer Webanwendungen * keine Portforwardings * create_container_z10a_services.yml * erstellt einen LXC Container im services Netz * Dualstack IPv4/IPv6; kein NAT * :!: keinerlei Firewall! Die Playbooks reservieren autoamtisch IP-Adressen und erstellen DNS-Eintraege usw