Dedizierte Server

Cloud

Cloud-Konsole

Automatisierungsabläufe

Eigene iPXE-Skripte über die API

Speichern Sie ein iPXE-Skript für einen Bare-Metal-Dienst, starten Sie den Server darüber und wechseln Sie nach der Installation zum lokalen Datenträger zurück.

Ein eigenes iPXE-Skript ersetzt die Imageliste durch ein beliebiges Installations- oder Live-System, auf das Sie verweisen. Startet ein Server im Startmodus PXE über das Netzwerk, ermittelt das Bereitstellungssystem die MAC-Adresse des startenden Ports und liefert das für diesen Dienst gespeicherte Skript. Zum Ausführen sind daher das gespeicherte Skript, der Startmodus PXE und ein Neustart erforderlich. Alle drei iPXE-Aufrufe, auch das Lesen des Skripts, benötigen die Berechtigung organization.baremetal.update.

1. Skript speichern

iPXE-Skript setzen speichert 1 bis 65.536 Zeichen und ersetzt ein vorhandenes Skript. Das Skript beginnt wie jedes iPXE-Skript mit der Zeile #!ipxe und wird im Body als einzelne JSON-Zeichenfolge mit \n zwischen den Zeilen übergeben:

curl --request PUT \
  --url https://api.serverside.com/v1/baremetal/{serviceId}/ipxe \
  --header 'Authorization: Bearer <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "script": "#!ipxe\nchain --autofree http://boot.netboot.xyz"
}
'

Der Aufruf antwortet mit 200 und dem gespeicherten script. Dieses Beispiel verzweigt zu netboot.xyz, einem öffentlichen Installationsmenü. Eine unbeaufsichtigte Installation lädt stattdessen Kernel und initrd mit den für Ihr Installationsprogramm benötigten Argumenten:

#!ipxe
kernel http://mirror.example.com/debian/linux auto=true priority=critical url=http://config.example.com/preseed.cfg
initrd http://mirror.example.com/debian/initrd.gz
boot

iPXE-Skript abrufen liefert das gespeicherte script oder null, falls keines vorhanden ist.

Ein neuer Server kann sein Skript von Beginn an enthalten. Ein Bestellposten oder Bare-Metal-Dienst erstellen mit bootMode PXE und einem ipxeScript startet dieses Skript einmal, sobald die Bereitstellung das Servernetzwerk eingerichtet hat. Die Schritte 1 und 2 sind damit bereits erledigt.

2. Über das Netzwerk starten

Im Startmodus PXE ist das native VLAN des Servers unser Bereitstellungsnetz, und alle mit dem Server verbundenen Netzwerke kommen getaggt an, auch eine native Verbindung. Netzwerke mit einer localVlanId verwenden diese ID; von der Plattform verwaltete Netzwerke ohne solche ID verwenden VLAN 10. Jedes Netzwerk in den interfaces des Servers stellt seinen Tag als provisioningVlanId bereit. Die Switch-Änderung kann das laufende Betriebssystem schon vor dem Neustart unterbrechen. Lassen Sie eine Remotekonsole geöffnet und konfigurieren Sie das Betriebssystem für diese VLANs. Das Bereitstellungsnetz liefert IPv4-DHCP und Internetzugang, sodass das Installationsprogramm öffentliche Spiegelserver ohne VLAN erreichen kann.

Setzen Sie über Startmodus setzen den Modus auf PXE:

curl --request PUT \
  --url https://api.serverside.com/v1/baremetal/{serviceId}/boot-mode \
  --header 'Authorization: Bearer <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "bootMode": "PXE"
}
'

Die Switch-Änderung erfolgt nach der Antwort. Der Aufruf antwortet mit 202, dem status (APPLYING) und since der Änderung oder mit 204, wenn der Server bereits in diesem Modus war. Während einer Bereitstellung oder eines Tests antwortet er mit 409 OPERATION_IN_PROGRESS, während einer anderen Netzwerkänderung mit 409 NETWORK_CHANGE_IN_PROGRESS und einem Retry-After von 10 Sekunden.

Rufen Sie Dienststatus abrufen auf, bis networkChange null ist. Dann verwenden die Switches die neue Konfiguration; FAILED bedeutet, dass sie nicht angewendet werden konnte. Starten Sie den Server anschließend mit einem Strombefehl neu:

curl --request POST \
  --url https://api.serverside.com/v1/baremetal/{serviceId}/power \
  --header 'Authorization: Bearer <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "command": "FORCE_RESTART"
}
'

Eine Konsolensitzung zeigt die Ausführung des Skripts.

3. Zum lokalen Datenträger zurückkehren

Im Startmodus PXE startet jeder einschaltende Strombefehl den Server über das Netzwerk und führt das Skript erneut aus. Ein im Betriebssystem ausgelöster Neustart tut dies möglicherweise nicht: Manche Verwaltungscontroller verwerfen die Netzwerkstarteinstellung nach einem Start, worauf der Server seiner eigenen Startreihenfolge folgt. Setzen Sie den Modus zurück, sobald das Installationsprogramm den Datenträger beschrieben hat:

curl --request PUT \
  --url https://api.serverside.com/v1/baremetal/{serviceId}/boot-mode \
  --header 'Authorization: Bearer <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "bootMode": "LOCAL_DISK"
}
'

Nach der Rückkehr zu LOCAL_DISK sind native Netzwerkverbindungen wieder ungetaggt; ausdrücklich getaggte Netzwerke behalten ihre üblichen VLAN-IDs. Verschieben Sie Adressen und Routen nativer Netzwerke auf die übergeordnete Schnittstelle oder den Bond, entfernen Sie das Bereitstellungs-DHCP und speichern Sie vor dem Neustart die normale Konfiguration des installierten Betriebssystems.

iPXE-Skript löschen entfernt das gespeicherte Skript, wenn es nicht mehr benötigt wird, und antwortet mit 204. Ein im Modus PXE belassener Server ohne gespeichertes Skript startet stattdessen unser Installationsimage, das den Server ausschaltet.

Setzen Sie auch vor einer Bereitstellung aus der Imageliste den Modus auf LOCAL_DISK zurück und warten Sie, bis networkChange leer ist: Eine während der Änderung angeforderte Bereitstellung antwortet mit 409 NETWORK_CHANGE_IN_PROGRESS. Mit gespeichertem Skript kann ein Server im Modus PXE Ihr Skript anstelle des für die Bereitstellung benötigten Installationsprogramms starten.