Automatiseringsworkflows
Eigen iPXE-scripts via de API
Sla een iPXE-script op een dedicated server op, schakel over op opstarten via het netwerk en keer na de installatie terug naar de lokale schijf.
Met een eigen iPXE-script gebruikt u in plaats van de imagelijst het installatieprogramma of livesysteem waarnaar u verwijst. Wanneer een server in opstartmodus PXE via het netwerk opstart, zoekt het provisioningsysteem het MAC-adres van de opstartpoort op en levert het script dat bij die dienst is opgeslagen. Hiervoor zijn dus het opgeslagen script, opstartmodus PXE en een herstart nodig. Alle drie de iPXE-aanroepen, ook het lezen van het script, vereisen de machtiging organization.baremetal.update.
1. Sla het script op
iPXE-script instellen slaat 1 tot 65.536 tekens op en vervangt een eerder opgeslagen script. Zoals elk iPXE-script begint het met de regel #!ipxe. Stuur het in de body als één JSON-string, met \n tussen de regels:
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"
}
'De aanroep antwoordt met 200 en het opgeslagen script. Dit voorbeeld laadt netboot.xyz, een openbaar menu met installatieprogramma’s. Een installatie zonder tussenkomst laadt in plaats daarvan een kernel en initrd met de argumenten die uw installatieprogramma nodig heeft:
#!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-script ophalen geeft het opgeslagen script terug, of null als er geen script is.
Een nieuwe server kan het script vanaf het begin meekrijgen. Een bestelregel of Dedicated server aanmaken met bootMode op PXE en een ipxeScript start dat script één keer, zodra de provisioning het servernetwerk heeft ingesteld. Stap 1 en 2 zijn dan al uitgevoerd.
2. Start op via het netwerk
In opstartmodus PXE is het native VLAN van de server ons provisioningnetwerk. Elk gekoppeld netwerk komt getagd aan, ook een netwerk dat als native is gekoppeld. Netwerken met een localVlanId gebruiken die ID; door het platform beheerde netwerken zonder ID gebruiken VLAN 10. Elk netwerk in de interfaces van de server vermeldt zijn tag als provisioningVlanId. De switchwijziging kan de verbinding van het draaiende besturingssysteem al vóór de herstart onderbreken. Houd een externe console open en configureer het besturingssysteem voor deze VLAN’s. Het provisioningnetwerk biedt IPv4-DHCP en internettoegang, zodat het installatieprogramma zonder VLAN openbare mirrors kan bereiken.
Stel de opstartmodus in op 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"
}
'De switchwijziging vindt na het antwoord plaats. De aanroep antwoordt met 202, de status (APPLYING) en since van de wijziging, of met 204 als de server al in die modus stond. Tijdens een implementatie of test is het antwoord 409 OPERATION_IN_PROGRESS; tijdens een andere netwerkwijziging 409 NETWORK_CHANGE_IN_PROGRESS, met een Retry-After van 10 seconden.
Roep Dienststatus ophalen aan totdat networkChange null is. Dan hebben de switches de nieuwe indeling; FAILED betekent dat de wijziging niet kon worden toegepast. Herstart de server daarna met een voedingsopdracht:
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"
}
'Via een consolesessie ziet u het script draaien.
3. Keer terug naar de lokale schijf
In opstartmodus PXE start elke voedingsopdracht die de server aanzet hem via het netwerk en voert het script opnieuw uit. Een herstart vanuit het besturingssysteem doet dat mogelijk niet: sommige beheercontrollers laten de netwerkbootinstelling na één keer vervallen, waarna de server zijn eigen opstartvolgorde volgt. Nadat het installatieprogramma de schijf heeft beschreven, zet u de modus terug:
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"
}
'Zodra de modus weer LOCAL_DISK is, zijn native gekoppelde netwerken weer ongetagd; expliciet getagde netwerken houden hun gebruikelijke VLAN-ID’s. Verplaats adressen en routes van native netwerken naar de bovenliggende interface of bond, verwijder provisioning-DHCP en sla de normale indeling van het geïnstalleerde besturingssysteem op voordat u herstart.
iPXE-script verwijderen wist het opgeslagen script wanneer u het niet meer nodig hebt en antwoordt met 204. Een server die in modus PXE blijft zonder opgeslagen script start in plaats daarvan onze installatie-image, die de server uitschakelt.
Zet de modus ook terug op LOCAL_DISK voordat u een implementatie uit de imagelijst start en wacht tot networkChange is verdwenen. Een implementatie tijdens de wijziging antwoordt met 409 NETWORK_CHANGE_IN_PROGRESS. Met een opgeslagen script kan een server in modus PXE uw script starten in plaats van het installatieprogramma dat de implementatie nodig heeft.