Modelos de recursos

Conceptos de bare metal de la API

Qué es un servicio bare metal en la API, sus estados, las operaciones que lo cambian y los endpoints de alimentación, arranque, acceso remoto y ancho de banda.

Un servicio bare metal es un servidor físico asignado a tu organización. El objeto del servicio describe la máquina (hardware: CPU, memoryGb, unidades y capabilities), dónde está (region: code del centro de datos, ciudad, instalación y rack), sus puertos de red (interfaces), sus direcciones (primaryIpv4, primaryIpv6), el último sistema operativo instalado (operatingSystem), su bootMode y la cuota mensual de tráfico (bandwidth.includedEgressGb). Obtener servicio bare metal devuelve todo ello junto con la operation en curso y la última finalizada como lastOperation. Listar servicios bare metal devuelve los servicios de la organización por páginas, sin interfaces, state ni las operaciones; ?datacenter= lo limita a un centro de datos, identificado por un código como ams1 o por su ID. Actualizar servicio bare metal cambia name, que el siguiente despliegue también convierte en el nombre de host del servidor.

Estados

Para los controles de bloqueo de la consola y su alcance, consulta Bloquear y desbloquear un servidor.

state responde a una pregunta: ¿puede el servidor aceptar una operación nueva ahora mismo?

stateSignificado
ACTIVENo hay nada ejecutándose, así que puede empezar un despliegue o una prueba.
OPERATION_IN_PROGRESSHay un despliegue, borrado o prueba en curso; operation indica cuál.
SUSPENDEDEl servicio está suspendido y no acepta operaciones.
DELETINGEl servicio se está apagando y eliminando tras una petición de eliminación.

Si se aplica más de uno, prevalece DELETING, después SUSPENDED y después OPERATION_IN_PROGRESS.

isLocked acompaña al estado y no lo cambia. Bloquear y desbloquear lo activan y desactivan; ambos requieren el permiso organization.baremetal.lock y responden 204. Un servidor bloqueado rechaza despliegues, pruebas de hardware, cancelación de ambos, comandos de alimentación, reinicios del BMC, cambios de segmentos, conexión y desconexión de redes virtuales y su propia eliminación, cada uno con 422 y SERVICE_LOCKED. Siguen funcionando el cambio de nombre, iPXE y el modo de arranque, las sesiones de consola y los medios virtuales.

isSuspended pasa a true al suspenderse el servicio. Un servidor suspendido rechaza los despliegues, pruebas, cancelaciones, comandos de alimentación, reinicios del BMC, cambios de segmentos y conexiones de red que rechaza uno bloqueado, y también los cambios de nombre, iPXE y modo de arranque, las sesiones de consola y los medios virtuales, las lecturas de hardware y las listas de imágenes y aplicaciones para desplegar. Cada uno responde 422 SERVICE_SUSPENDED hasta que se restablece el servicio. Un servidor que muestra DELETING rechaza el mismo conjunto con 422 SERVICE_DELETING.

Operaciones

Instalar, borrar y probar un servidor se ejecutan como operaciones de tipo DEPLOYMENT, WIPE o TEST. Solo puede ejecutarse una a la vez en un servidor: iniciar una segunda responde 409 con OPERATION_IN_PROGRESS. Solo nuestro equipo inicia borrados y el historial de operaciones los omite.

Un despliegue instala un sistema operativo de Listar imágenes de SO. La petición de despliegue lo identifica como image, por su id o slug, y acepta sshKeyIds o una password (con username opcional), un raidVariant (NONE, RAID0, RAID1, RAID5, RAID6 o RAID10; elige uno de los raidVariants de la imagen) y un documento cloudInit opcional. Niveles RAID para servidores dedicados compara RAID 0, 1, 5 y 10 por capacidad útil y tolerancia a fallos. Un despliegue puede instalar una aplicación en lugar de una imagen simple: application, un id o slug de Listar aplicaciones, sustituye a image, y una petición que envíe ambos o ninguno se rechaza con un detalle DEPLOY_SELECTION_INVALID. applicationMetadata es un objeto JSON con los ajustes descritos por el metadataSchema de esa aplicación. Desplegar tu primer servidor enumera las demás comprobaciones que debe superar una petición de despliegue.

Una prueba de hardware somete la máquina a pruebas sin instalar nada y funciona sin destruir datos, conservando los datos de los discos. Ejecutar prueba de hardware acepta cuatro interruptores obligatorios, isCpuIncluded, isMemoryIncluded, isDiskIncluded e isSmartIncluded. Los ajustes opcionales afinan las fases: cpuDurationSeconds, memoryDurationSeconds y diskDurationSeconds (de 10 a 1800 cada uno), cpuWorkers (de 1 a 1024), memoryPercent (de 1 a 95), diskBlockSize (de 512 bytes a 16m en pasos de 512, escrito en bytes o con sufijo k o m) y diskIoDepth (de 1 a 256). Un ajuste omitido conserva el valor predeterminado de la herramienta y uno fuera del intervalo responde 400 VALIDATION_ERROR. El resultado de la prueba terminada es details.report en Obtener operación: isPassed para toda la ejecución y para cada fase, con rendimiento de disco en bytes por segundo.

Un despliegue muestra CREATED, después WAITING_FOR_PXE_BOOT, después CHECKED_IN cuando el instalador del servidor se ha comunicado, y termina como COMPLETED, FAILED o CANCELLED. Un despliegue de aplicación también pasa por IN_PROGRESS tras la fase del sistema operativo. Trata cualquier estado distinto de los tres finales como aún en ejecución y sigue progress y lastProgressMessage para conocer su avance. Listar operaciones es el historial del servidor, del más reciente al más antiguo, y Obtener operación devuelve una ejecución con todos los informes de progreso enviados.

Cancelar operación detiene un despliegue o prueba en curso identificado por su id y responde 204. Una operación que ya terminó, o que termina mientras se guarda la cancelación, responde 422 ENTITY_STATE_INVALID. Un ID que no identifica ningún despliegue ni prueba de este servidor responde 404.

Alimentación y lecturas de hardware

Enviar comando de alimentación acepta ON, FORCE_OFF, GRACEFUL_SHUTDOWN, FORCE_RESTART y GRACEFUL_RESTART. Los comandos ordenados piden al sistema operativo que se apague; los forzados actúan directamente sobre la alimentación. El estado de alimentación actual es powerState en Obtener estado del servicio. El controlador de gestión del servidor también informa del estado de las fuentes, sensores térmicos y consumo, y Reiniciar BMC reinicia el controlador cuando deja de responder. Alimentación y acceso remoto explica cada llamada.

Acceso remoto

Una sesión de consola abre la pantalla y el teclado del servidor en un navegador, para un sistema operativo que no responde por red o para un ajuste del BIOS. Los medios virtuales montan una ISO de tu biblioteca ISO como unidad del servidor para arrancar un instalador que no está en la lista de imágenes. No todos los controladores de gestión ofrecen todo esto y hardware.capabilities enumera lo que ofrece el del servidor:

CapacidadQué funciona
KVMUna sesión de consola en el navegador.
IPMIUna sesión de consola mediante la interfaz web del controlador, con credenciales emitidas para ella.
VIRTUAL_MEDIAMontar una ISO.
METRICS_POWER, METRICS_THERMALS, METRICS_PSULecturas de consumo, temperatura y ventiladores y fuentes de alimentación.

Una llamada que el controlador no puede atender responde 422 OPERATION_NOT_SUPPORTED_PLATFORM y la consola desactiva la pestaña.

Modo de arranque e iPXE

bootMode es LOCAL_DISK o PXE. El modo determina qué redes transportan los puertos del servidor, por lo que Establecer modo de arranque es un cambio de red: responde 202 mientras se reconfiguran los conmutadores y networkChange en Obtener estado del servicio sigue el cambio hasta aplicarse. Cuando un servidor en modo PXE arranca desde la red, el sistema de aprovisionamiento busca la MAC del puerto que arranca y sirve el script iPXE guardado en ese servicio. Scripts iPXE personalizados muestra las llamadas.

Puertos de red

interfaces enumera los segmentos del servidor. Un segmento es un puerto de red o dos puertos agregados con LACP (bondMode LACP) y transporta las redes virtuales conectadas. Su name es el nombre de interfaz que un despliegue escribe en el host: el nombre del puerto o bond0, bond1, etc. para un enlace agregado. Su segmentId es el ID que aceptan las llamadas de segmentos, conexiones y direcciones, y cada puerto en physicalInterfaces lleva el mismo segmentId.

Obtener capacidades de red enumera cada puerto con su segmentId y los grupos de agregación, uno por pareja de conmutadores, cada uno con los interfaceIds de los puertos conectados a esa pareja y su cantidad como maxBondSize. Crear segmento acepta interfaceIds: un puerto crea un segmento simple y dos crean un enlace agregado. Los dos puertos de un enlace deben proceder de un grupo de agregación, estar en distintos conmutadores de la pareja y usar el mismo número de puerto en ambos; tres o más puertos, o dos que incumplan una de esas reglas, responden 422 con un detalle BOND_INVALID. Un puerto ya perteneciente a un segmento responde 409 INTERFACE_IN_USE, así que elimina primero ese segmento. Ambas llamadas encolan un cambio del conmutador y se rechazan mientras hay una operación u otro cambio de red en curso. La conexión de redes virtuales a un segmento se explica en Configurar redes virtuales.

Tráfico

bandwidth.includedEgressGb es la cuota mensual del servicio y null significa ilimitada. La cuota solo cuenta el tráfico de salida, en gigabytes decimales de 10^9 bytes. El tráfico que la supera no se limita. En una suscripción por hora se factura cada GB que supere la cuota del plan.

El tráfico se mide en los puertos del conmutador desde que se creó el servicio. Obtener uso de ancho de banda informa de los últimos 30 días, de periodStart a periodEnd: egressBytes e ingressBytes para toda la ventana y por día en daily, junto a la cuota como includedEgressBytes. Obtener serie temporal de ancho de banda devuelve tasas en bits por segundo, para todo el servidor y por puerto, entre un start y un end (las últimas 24 horas por defecto) con un stepSeconds de 60 o más. Un paso que genere demasiados puntos para la ventana responde 422 con un detalle BANDWIDTH_STEP_INVALID. En ambos, null significa que no se midió nada ese día o paso, mientras que 0 es un valor medido.

Eliminar un servicio

Eliminar servicio bare metal necesita el permiso organization.billing.subscriptions.manage y responde 202 sin cuerpo. La facturación del servidor se detiene de inmediato. Después muestra state DELETING mientras se apaga y se desmontan sus redes y, al terminar, Obtener servicio bare metal responde 404. Enviar de nuevo la eliminación durante DELETING no cambia nada. Si el servidor es el último de su suscripción (Obtener suscripción del servicio la identifica), los bloques de direcciones de la suscripción se liberan cuando desaparece el servidor; Facturación explica las suscripciones.

Una eliminación se rechaza cuando:

EstadocodeCausa
422SERVICE_LOCKEDEl servidor está bloqueado.
422SUBSCRIPTION_NOT_ACTIVELa suscripción que lo factura se ha cancelado.
422TERMINATION_BLOCKEDEs el último servidor de la suscripción y uno de sus bloques de IP sirve a otro servicio.
422SUBSCRIPTION_SERVER_TRANSFERREDNuestro equipo ha trasladado el servidor a otra organización.
404ENTITY_NOT_FOUNDNinguna suscripción de tu organización factura este servidor.

Cuando desaparece el servidor, sus discos se borran de forma segura y la máquina no se ofrece a nadie más hasta que el borrado termina correctamente. Ninguna ruta revierte una eliminación, así que copia los datos que necesites antes de enviarla.