Bare metal: sigue siendo Python upstream, empaquetado en un chart de OpenKeel; demasiadas configuraciones de hardware que probar.
Chart (Python upstream) Chart de Helm (Python upstream)openkeel-ironic
El módulo
Upstream OpenStack Ironic (Python, 2026.2) in OpenKeel: a Helm chart, not a Go rewrite. Design, decisions and evidence are in openkeel-docs/IRONIC-DESIGN.md.
Extracto de openkeel-ironic/README.md (en inglés).
API REST
131 operaciones de la API REST original (rutas y acciones de cuerpo) y su estado en OpenKeel.
Ironic sigue siendo el servicio Python upstream en un chart de Helm; los tests comprueban que funciona a través del Keystone en Go, el cliente estándar y el Nova en Go, sobre una máquina Redfish simulada.
De extremo a extremo en un laboratorio
Smoke test sobre hardware Redfish simulado
openstack baremetal a través del Keystone en Go da de alta una máquina sushy-tools, la lleva hasta available, la despliega hasta wait call-back y revierte el despliegue.
Ejecución
openkeel-ironic/test/smoke.sh desde un pod cliente (python-ironicclient 6.3.0) en un clúster kind.
Último resultado Verificado (2026-10-31). Ninguna máquina arranca: IPA y active no están cubiertos.
Fuente: openkeel-docs/IRONIC-DESIGN.md
De extremo a extremo en un laboratorio
okadm install, laboratorio y producción
El chart instalado con okadm install --components ironic supera el smoke test en ambos modos de despliegue.
Ejecución
okadm install en modo laboratorio (kind, 3 nodos) y en modo producción (3 API, 2 conductors, Galera 3), y luego smoke.sh en cada uno.
Último resultado Ejecutado el 2026-11-02; la producción en kind requirió dos añadidos exclusivos de las pruebas (solución alternativa de NetworkPolicy para DNS, automated_clean: false).
Fuente: openkeel-docs/IRONIC-DESIGN.md
Escenario
Servidor bare metal a través de Nova
openstack server create con un flavor bare metal controla Ironic a través del Nova en Go, y la eliminación libera el nodo.
Ejecución
openkeel-ironic/test/nova.sh en un laboratorio con Nova e Ironic, Neutron flat y sushy-tools.
Último resultado Verificado en kind hasta wait call-back; máquina real, IPA, config drive y active no verificados.
Fuente: openkeel-nova/docs/CONFORMANCE.md
Excluido del rewrite
Ironic sigue siendo el Python de upstream en un chart de OpenKeel, desplegado sin RabbitMQ, sin URL temporales de Swift ni scripts de arranque de Kolla.
Mecánica interna simplificada
RPC de RabbitMQ entre API y conductor
Por qué se excluyó
Ironic no necesita RabbitMQ para nada más; json-rpc en el puerto 8089 del conductor, con nombres DNS por Pod procedentes del StatefulSet, cumple la misma función.
Por qué la solución no se ve afectada
La API y el conductor se comportan como en upstream; las notificaciones siguen desactivadas. JSON-RPC aún no está cifrado, y una NetworkPolicy lo limita a la API.
Fuente: openkeel-docs/IRONIC-DESIGN.md
Mecánica interna simplificada
URL temporales de Swift para imágenes
Por qué se excluyó
OpenKeel no tiene un servicio Swift propio.
Por qué la solución no se ve afectada
Las imágenes y los config drives los sirve el servidor HTTP del conductor (image_download_source http, configdrive_use_object_store false), por lo que el despliegue sigue funcionando.
Fuente: openkeel-docs/IRONIC-DESIGN.md
Mecánica interna simplificada
Scripts de arranque de Kolla y sudo
Asumido por Kubernetes
Por qué se excluyó
Las imágenes de Kolla se fijan por digest y sus binarios se ejecutan directamente, configurados desde un ConfigMap, sin kolla_start ni sudo.
Por qué la solución no se ve afectada
Mismo código de Ironic; la API y el conductor se ejecutan sin privilegios, con una raíz de solo lectura y sin capacidades.
Fuente: openkeel-docs/IRONIC-DESIGN.md
Aquí solo figura lo que se excluyó por diseño; el trabajo aún no realizado está en los Known gaps del docs/CONFORMANCE.md del módulo. Todos los módulos
Interacciones Ironic
Vista de servicio generada por la skill de diagramas a partir del modelo de OpenKeel.