Flujos de automatización
Scripts iPXE personalizados mediante la API
Guarda un script iPXE en un servicio bare metal, cambia el servidor a arranque por red para ejecutarlo y vuelve al disco local al terminar la instalación.
Un script iPXE personalizado sustituye la lista de imágenes por el instalador o sistema en vivo al que apunte. Cuando un servidor en modo de arranque PXE arranca desde la red, el sistema de aprovisionamiento busca la MAC del puerto de arranque y sirve el script guardado en ese servicio, así que ejecutarlo requiere el script guardado, el modo PXE y un reinicio. Las tres llamadas de iPXE, incluida la lectura del script, necesitan el permiso organization.baremetal.update.
1. Guardar el script
Establecer script iPXE guarda de 1 a 65.536 caracteres y sustituye cualquier script anterior. El script empieza por la línea #!ipxe, como todo script iPXE, y va en el cuerpo como una cadena JSON con \n entre sus líneas:
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"
}
'La llamada responde 200 con el script guardado. Este ejemplo encadena a netboot.xyz, un menú público de instaladores. Una instalación desatendida carga en su lugar un núcleo y un initrd con los argumentos que necesita tu instalador:
#!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
Obtener script iPXE devuelve el script guardado o null si no hay ninguno.
Un servidor nuevo puede tener su script desde el principio. Un elemento de pedido o Crear servicio bare metal que envía bootMode PXE con un ipxeScript arranca ese script una vez en cuanto el aprovisionamiento configura la red del servidor, así que sus pasos 1 y 2 ya están hechos.
2. Arrancar desde la red
Mientras el modo de arranque es PXE, la VLAN nativa del servidor es nuestra red de aprovisionamiento y todas las redes conectadas llegan etiquetadas, incluida una conectada como nativa. Las redes con localVlanId usan ese ID; las gestionadas por la plataforma sin él usan VLAN 10. Cada red de interfaces del servidor expone su etiqueta como provisioningVlanId. El cambio del conmutador puede interrumpir el SO en ejecución antes de reiniciar. Mantén abierta una consola remota y configura el SO para estas VLAN. La red de aprovisionamiento proporciona DHCP IPv4 y acceso a Internet, por lo que el instalador puede acceder a réplicas públicas sin VLAN.
Establece el modo de arranque en 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"
}
'El cambio del conmutador se ejecuta tras la respuesta. La llamada responde 202 con el status del cambio (APPLYING) y since, o 204 si el servidor ya estaba en ese modo. Mientras se ejecuta un despliegue o prueba responde 409 OPERATION_IN_PROGRESS y, mientras se aplica otro cambio de red, 409 NETWORK_CHANGE_IN_PROGRESS con un Retry-After de 10 segundos.
Envía Obtener estado del servicio hasta que networkChange sea null, lo que significa que los conmutadores tienen la nueva configuración; FAILED significa que no se pudo aplicar el cambio. Después reinicia el servidor con un comando de alimentación:
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"
}
'Una sesión de consola muestra el script en ejecución.
3. Volver al disco local
Mientras el modo de arranque es PXE, cada comando de alimentación que inicia el servidor lo arranca desde la red y ejecuta el script de nuevo. Un reinicio desde el sistema operativo puede no hacerlo: algunos controladores de gestión eliminan el ajuste de arranque por red tras un arranque y el servidor sigue su propio orden. Cuando el instalador haya escrito el disco, restablece el modo:
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"
}
'Una vez en LOCAL_DISK, las redes conectadas como nativas vuelven a estar sin etiquetar; las explícitamente etiquetadas conservan sus ID de VLAN habituales. Mueve las direcciones y rutas de la red nativa a la interfaz principal o al enlace agregado, elimina el DHCP de aprovisionamiento y guarda la configuración normal del SO instalado antes de reiniciar.
Eliminar script iPXE borra el script guardado cuando ya no lo necesitas y responde 204. Un servidor dejado en modo PXE sin script arranca nuestra imagen de instalación, que apaga el servidor.
Vuelve también a LOCAL_DISK antes de iniciar un despliegue desde la lista de imágenes y espera a que se borre networkChange: un despliegue solicitado mientras se aplica el cambio responde 409 NETWORK_CHANGE_IN_PROGRESS. Con un script guardado, un servidor en modo PXE puede arrancarlo en lugar del instalador que necesita el despliegue.