Naar de inhoud

Documentatie

Proxmox VE

Proxmox is de hypervisor-integratie. Hij maakt virtuele machines aan door een template te klonen, volgt de taak terwijl hij loopt, en houdt het paneel gelijk met wat het cluster werkelijk meldt.

Wat je nodig hebt

Proxmox gebruikt geen wachtwoord voor automatisering. Je maakt een API-token aan: een identifier uit drie delen plus een secret dat je één keer te zien krijgt.

  • Host: de volledige basis-URL van de API. Die moet HTTPS zijn; poort 8006 wordt voor je ingevuld als je hem weglaat.
  • Token-id: in de vorm user@realm!tokennaam, precies zoals Proxmox het schrijft.
  • Token-secret: de waarde die Proxmox één keer toont bij het aanmaken van het token.
  • TLS-fingerprint: het certificaat van de node zelf, niet van de autoriteit die het uitgaf.
shell
openssl s_client -connect pve.example.com:8006 </dev/null 2>/dev/null | \
  openssl x509 -noout -fingerprint -sha256
Commando's en terminaluitvoer zijn overal Engels, in het paneel en op deze pagina's. Één tekst, één waarheid: wat je hier leest is letterlijk wat je host teruggeeft.
Zet privilege separation uit op het token, of geef het token expliciet zijn eigen rechten. Staat het aan, dan begint het token met geen van de rechten van de gebruiker waar het bij hoort en mislukt elke aanroep om een reden die Proxmox niet uitspelt.

Instellingen

Vier niet-geheime keuzes, op het tabblad Instellingen. Zonder die keuzes is de integratie wel verbonden, maar kan hij niets aanmaken.

  • Node: op welke node in het cluster gebouwd wordt. Het paneel biedt de nodes aan die je agent werkelijk gezien heeft; heeft hij er nog geen gezien, dan kun je er zelf een intypen.
  • Storage: waar de schijven van nieuwe machines terechtkomen.
  • Bridge: optioneel. Hij wordt vastgelegd en gebruikt waar het platform een machine uit het niets aanmaakt, maar een kloon erft de bridge van het template waaruit hij gekloond is.
  • Range vmid's: het blok Proxmox-vmid's waarbinnen Provibr mag toewijzen.

De range is de veiligheidsgrens

Dit is de belangrijkste instelling op de pagina. Provibr wijst alleen identifiers toe binnen de range die je opgeeft en raakt nooit iets daarbuiten aan. Houd je eigen productiemachines buiten de range en ze blijven buiten bereik, wat er ook in het paneel geklikt wordt.

Identifiers worden nooit hergebruikt, ook niet nadat een machine verwijderd is. Een late statusmelding van een machine die weg is kan daardoor nooit op een nieuwe machine terechtkomen.
Een template dat je als besturingssysteem koppelt moet buiten de range liggen, en anders weigert het paneel het: binnen de range zou de toewijzer uiteindelijk de eigen identifier van het template uitgeven en zou de volgende bestelling van zichzelf klonen.

Hoe een machine wordt aangemaakt

Een machine aanmaken is één kloontaak, gevolgd door een klein aantal configuratie-aanroepen. Het paneel volgt de taak en toont echte voortgang waar Proxmox die meldt.

  1. Het template dat je koos klonen, naar de node uit de instellingen.
  2. De bootschijf vergroten tot de maat die je bestelde. Een schijf kan alleen groeien; is het template al groter, dan houdt de machine de maat van het template.
  3. Cores, geheugen en de cloud-init-instellingen – adres, gateway, dns-servers, gebruiker, SSH-sleutels – in één configuratie-aanroep toepassen.
  4. De firewall aanzetten en de machine starten.
Na de start meldt de machine zich als installerend en niet als draaiend, en pas als cloud-init zijn werk in de gast heeft gedaan wordt hij draaiend. Daarom springt een net aangemaakte machine niet meteen op groen.

Linux-containers

Een Proxmox-koppeling draagt virtuele machines én containers. Het plan bepaalt welke van de twee een bestelling oplevert, en vanaf dat moment reist de soort met elk commando mee in plaats van geraden te worden. Een container is geen kleinere virtuele machine: hij deelt de kernel van zijn host, en daarom is hij goedkoop en daarom is een handvol dingen er eenvoudigweg niet.

  • Het plan zegt virtuele machine, container, of allebei. Bij allebei kiest de klant tijdens de bestelling, en de imagelijst volgt die keuze in plaats van er stilletjes een in te vullen.
  • Een container wordt niet gekloond maar uitgepakt, uit een containertemplate op de koppeling. Dat is een ander soort bron dan de templates waaruit een virtuele machine gekloond wordt, en een image dat alleen een containertemplate heeft verschijnt niet in de lijst voor virtuele machines.
  • Unprivileged is de standaard. De root binnen de container is geen root op de host, en dat is wat je wilt tenzij iets uitdrukkelijk anders vraagt.
  • Opslag is een rootvolume plus mountpoints. Het paneel toont ze als sleutel, bron en pad binnen de gast; het hostpad staat er met opzet niet bij, want dat zegt meer over de host dan over de machine.

Elk commando draagt de soort mee, en een commando dat niet past wordt geweigerd voordat het een opdracht wordt, met de reden op het scherm. Twee van die redenen betekenen werkelijk iets anders.

  • Nooit: opstarten vanaf het netwerk, een lege machine, en firmware of opstartvolgorde. Een container start niet vanaf een netwerkkaart en heeft geen firmware om iets aan te vragen.
  • Nog niet: schijven, netwerkkaarten en het hardwarescherm. Een container hééft opslag en netwerk, in een andere vorm, en de velden van een virtuele machine ervoor hergebruiken zou dezelfde woorden een tweede betekenis geven.
  • Beschikbaar: aanmaken, starten, stoppen, afsluiten, status, verwijderen, opschorten, hervatten, herinstalleren, de firewall en zijn antispoofing.
  • De console is een apart geval, en het is een nog-niet met een reden: de console van een virtuele machine is een beeldscherm, en dat heeft een container niet. Wat hij wél heeft is een terminal, en dat is een ander protocol en een andere client.

Backups hebben één verschil dat makkelijk misgaat, en het werkt precies andersom dan bij een virtuele machine. Een mountpoint zit alleen in de backup als hij daarvoor is aangevinkt; een schijf van een virtuele machine zit erin tenzij hij is uitgevinkt. Een container met een datavolume dat niemand aanvinkte heeft dus een backup die er compleet uitziet en alleen het rootvolume bevat.

Het paneel zegt per mountpoint of hij in de backup zit, en noemt ongemeten dekking nooit volledig. Bind mounts en doorgegeven apparaten gaan sowieso nooit mee: wat erachter zit hoort bij de host en niet bij de machine.

Een container herinstalleren is een vervanging en geen kloon eroverheen. Het paneel laat je eerst zien wat er met elk mountpoint gebeurt, en vervangt de machine pas daarna onder één slot: het rootvolume wordt opnieuw opgebouwd, en wat als behouden vermeld stond wordt teruggezet. Wat niet in die lijst stond wordt niet hersteld.

Cloud-init

Provibr schrijft een vaste, kleine set cloud-init-sleutels en verder niets: de vier netwerkconfiguraties, dns-servers en zoekdomein, de gebruiker, het configuratietype, SSH-sleutels, het wachtwoord en of er bij de eerste start een pakketupgrade moet draaien. De lijst bestaat aan beide kanten, dus een veld dat toevallig cloud-init heet kan nooit een willekeurige machine-instelling herschrijven.

Het root-wachtwoord komt nooit in het auditspoor. Alleen de naam van het veld wordt vastgelegd; de waarde reist apart en wordt niet bewaard.

De optie om bij de eerste start te upgraden heeft Proxmox 8.1 of nieuwer nodig. Op een oudere node wordt de aanroep zonder die optie opnieuw geprobeerd in plaats van te falen.

Wat je daarna kunt doen

Starten, stoppen, afsluiten, pauzeren, hervatten, status verversen, opnieuw installeren en verwijderen. Afsluiten vraagt het eerst netjes aan de gast en valt na een time-out terug op een harde stop.

Schijven en netwerkkaarten kunnen toegevoegd, vergroot, aangekoppeld en losgekoppeld worden. Een schijf kan alleen groeien. De bootschijf en de cloud-init-schijf kunnen niet losgekoppeld worden, en de eerste netwerkkaart ook niet.

De firewall heeft een bewerkbare regellijst en een log, allebei gelezen van en geschreven naar de node zelf.

Goed om te weten

  • Een kloon erft de netwerkbridge van zijn template. De bridge op het plan en op de integratie wordt vastgelegd en elders gebruikt, maar niet op een kloon toegepast.
  • Het schijfgebruik binnen een virtuele machine kan Proxmox niet zien, dus die grafiek toont de toegewezen grootte en geen verbruikslijn. De andere metingen zijn echt.
  • Templates blijven buiten de poll en tellen nooit mee voor je licentie.
  • Machines die wel op je cluster staan maar niet in Provibr worden bij elke poll genegeerd. Ze zijn ook niet uit Proxmox te importeren: er is vandaag geen import voor hypervisors.