Once the generic openstack-sync-operator from #2205 lands, the existing Ironic runbook shell-operator should be folded into it rather than maintained as a second, differently-shaped shell-operator framework.
What exists today:
containers/shell-operator-ironic/Dockerfile — ghcr.io/flant/shell-operator:v1.13.1 base, apk add python3 + venv, pip install -r requirements.txt (kubernetes, python-openstackclient, python-ironicclient), then COPY containers/shell-operator-ironic/hooks /hooks
containers/shell-operator-ironic/hooks/{create,update,delete}_runbook.sh — bash hooks with the standard --config JSON block, binding-context handling for Synchronization and Event, status patched via kubectl patch --type merge --subresource status
components/ironic/runbook-operator/ — Deployment, ServiceAccount, ClusterRole, RoleBinding, wired through kustomization.yaml
components/ironic/runbook-crd/bases/baremetal.ironicproject.org_runbooks.yaml — the CRD
- Built in
.github/workflows/containers.yaml as shell-operator-ironic with target: prod
Scope of the migration:
- Move the runbook hooks onto the generic operator image (projected in, not baked into the image)
- Move the CRD and the runbook custom resources into a separate resource-loading chart, following the
charts/nautobot-job-queues pattern
- Register the reconcile schedule through whatever uniform crontab mechanism the generic operator settles on
- Retire
containers/shell-operator-ironic and components/ironic/runbook-operator, and drop the container from the containers.yaml build matrix
Blocked on #2205.
🤖 Generated with Claude Code
Once the generic
openstack-sync-operatorfrom #2205 lands, the existing Ironic runbook shell-operator should be folded into it rather than maintained as a second, differently-shaped shell-operator framework.What exists today:
containers/shell-operator-ironic/Dockerfile—ghcr.io/flant/shell-operator:v1.13.1base,apk add python3+ venv,pip install -r requirements.txt(kubernetes, python-openstackclient, python-ironicclient), thenCOPY containers/shell-operator-ironic/hooks /hookscontainers/shell-operator-ironic/hooks/{create,update,delete}_runbook.sh— bash hooks with the standard--configJSON block, binding-context handling forSynchronizationandEvent, status patched viakubectl patch --type merge --subresource statuscomponents/ironic/runbook-operator/— Deployment, ServiceAccount, ClusterRole, RoleBinding, wired throughkustomization.yamlcomponents/ironic/runbook-crd/bases/baremetal.ironicproject.org_runbooks.yaml— the CRD.github/workflows/containers.yamlasshell-operator-ironicwithtarget: prodScope of the migration:
charts/nautobot-job-queuespatterncontainers/shell-operator-ironicandcomponents/ironic/runbook-operator, and drop the container from thecontainers.yamlbuild matrixBlocked on #2205.
🤖 Generated with Claude Code