From a9a92ff85490f99e6f58ce99655b45a68724716c Mon Sep 17 00:00:00 2001 From: Jan Klare Date: Fri, 26 Jun 2026 09:18:10 +0200 Subject: [PATCH 1/2] add inventory-reconciler to osism-manager diagram in concepts * remove osism-kubernetes container from the diagram to make space for the inventory-reconciler since it just mirrors what osism-ansible, kolla-ansible and ceph-ansible already show Signed-off-by: Jan Klare --- docs/concepts/images/osism-manager.drawio.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/images/osism-manager.drawio.svg b/docs/concepts/images/osism-manager.drawio.svg index 6335c2ae29..d7210705e8 100644 --- a/docs/concepts/images/osism-manager.drawio.svg +++ b/docs/concepts/images/osism-manager.drawio.svg @@ -1,4 +1,4 @@ -
OSISM-Manager
kolla-ansible
github.com/osism/container-image-kolla-ansible
manager-redis
ceph-ansible
github.com/osism/container-image-ceph-ansible
osism-kubernetes
github.com/osism/osism-kubernetes
osism-ansible
github.com/osism/container-image-osism-ansible
osismclient
github.com/osism/python-osism
kolla-ansible job queue
ceph-ansible job queue
osism-kubernetes job queue
osism-ansible job queue
ansible facts cache
ansible
celery
ansible
celery
ansible
celery
ansible
celery
playbooks
runtime dependencies
playbooks
runtime dependencies
playbooks
runtime dependencies
playbooks
runtime dependencies
/opt/configuration:/opt/configuration:ro
\ No newline at end of file +
OSISM-Manager
OSISM-Manager
kolla-ansible
github.com/osism/container-image-kolla-ansible
kolla-ansible...
manager-redis
manager-redis
ceph-ansible
github.com/osism/container-image-ceph-ansible
ceph-ansible...
osism-ansible
github.com/osism/container-image-osism-ansible
osism-ansible...
osismclient
github.com/osism/python-osism
osismclient...
kolla-ansible job queue
kolla-ansible job queue
ceph-ansible job queue
ceph-ansible job queue
osism-ansible job queue
osism-ansible job queue
ansible
ansible
celery
celery
ansible
ansible
celery
celery
ansible
ansible
celery
celery
playbooks/roles/collections
playbooks/roles/collections
runtime dependencies
runtime dependencies
playbooks/roles/collections
playbooks/roles/collections
runtime dependencies
runtime dependencies
playbooks/roles/collections
playbooks/roles/collections
runtime dependencies
runtime dependencies
manager-inventory-reconciler
github.com/osism/container-image-inventory-reconciler
manager-inventory-reconciler...
/opt/configuration:/opt/configuration:ro
/opt/configuration:/opt/configuration:ro
/ansible/inventory/
/ansible/inventory/
runtime dependencies
runtime dependencies
reconciler job queue
reconciler job queue
reconciler
reconciler
celery
celery
NetBox
NetBox
ansible facts cache
ansible facts cache
Text is not SVG - cannot display
\ No newline at end of file From cfa13522a78e0ba63b3a761fa30b396ee4fcf2cf Mon Sep 17 00:00:00 2001 From: Jan Klare Date: Fri, 26 Jun 2026 09:22:11 +0200 Subject: [PATCH 2/2] add inventory-reconciler description to osism-manager concept * explicitly mention, that osism-kubernetes still exists and only was removed from the diagram to make space for the inventory-reconciler AI-assisted: Claude Code Signed-off-by: Jan Klare --- docs/concepts/manager.md | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/docs/concepts/manager.md b/docs/concepts/manager.md index 928b672a6e..ead145f74c 100644 --- a/docs/concepts/manager.md +++ b/docs/concepts/manager.md @@ -36,6 +36,7 @@ queues exist for each workload type: * `ceph-ansible job queue` — Ceph deployment and management * `osism-ansible job queue` — Infrastructure-level playbooks * `osism-kubernetes job queue` — Kubernetes-related operations +* `reconciler job queue` — Inventory reconciliation Separate queues allow operations to run in parallel — for example, an OpenStack deployment and a Ceph operation can proceed simultaneously without waiting for each @@ -65,13 +66,47 @@ Handles Kubernetes-related operations, including cluster provisioning and lifecy management. The source is maintained at [github.com/osism/osism-kubernetes](https://github.com/osism/osism-kubernetes). +To keep the architecture diagram readable, `osism-kubernetes` is not depicted there. It +follows the same pattern as the other Ansible containers: it has its own +`osism-kubernetes job queue`, shares the `manager-redis` facts cache, and mounts both the +`/opt/configuration` and the `/ansible/inventory` volumes. + +### inventory-reconciler + +Reconciles the Ansible inventory that all other Ansible containers operate on. It runs +through its own `reconciler job queue` and is triggered with `osism sync inventory`. The +container image is maintained at +[github.com/osism/container-image-inventory-reconciler](https://github.com/osism/container-image-inventory-reconciler). + +The reconciler combines two inventory sources: + +* the [configuration repository](../guides/configuration-guide/configuration-repository.md) + mounted read-only at `/opt/configuration`, and +* a [NetBox](https://netbox.dev/) instance, if the inventory is generated from NetBox + data (see [Inventory](../guides/configuration-guide/inventory.md)). + +From these sources it renders the effective inventory and writes it to the shared +`/ansible/inventory` volume. Decoupling inventory generation from the workload containers +means the inventory is computed once, in one place, and every Ansible container always +sees a consistent view of the hosts and their group and host variables. + ### Configuration volume All Ansible containers share read-only access to the [configuration repository](../guides/configuration-guide/configuration-repository.md), mounted at `/opt/configuration`. This volume is the single source of truth for the -entire deployment — inventory, group variables, host variables, and secrets are all -read from this location. +entire deployment — the inventory source, group variables, host variables, and secrets +all originate from this location. The `inventory-reconciler` reads the inventory source +from here and turns it into the reconciled inventory described below. + +### Inventory volume + +The reconciled inventory lives on a shared `/ansible/inventory` volume. The +`inventory-reconciler` is the only container that writes to it; all Ansible containers +(`kolla-ansible`, `ceph-ansible`, `osism-ansible`, `osism-kubernetes`) mount it and use it +as their Ansible inventory. Because the inventory is produced centrally by the reconciler +rather than by each Ansible container individually, all workloads share exactly the same, +already reconciled view of the environment. ## Further reading