Skip to content

Ilma · Module 1: Inventory

One inventory. Everything else reads from it.

An operational source of truth is one inventory of what you run and who owns it: the servers, the systems on them and the applications on top. Alerting, patching and reporting all read from it, so the answer to “whose server is this, and when may we patch it?” sits in one place instead of in someone’s head.

What the inventory records

Applications, the platforms they run on and the infrastructure underneath. Every record carries the same four attributes.

Level 3

Applications and services

What the business uses. An application runs on a cluster or an instance, never directly on a VM.

  • Owner
  • Environment
  • Criticality
  • Patch group
Level 2

Operating systems and platforms

OS, system software, clusters and instances.

  • Owner
  • Environment
  • Criticality
  • Patch group
Level 1

Infrastructure

Sites, devices, virtual machines and networks.

  • Owner
  • Environment
  • Criticality
  • Patch group

In every record, on every level

team-*
Owner

Who gets the alert and who approves a change.

env-*
Environment

Production, test or development.

crit-*
Criticality

How fast a failure needs an answer.

patch-*
Patch group

Which maintenance window applies.

Who uses it

The four attributes are written in one place. Everything that needs them reads them from there, so a change of owner or window is one change, not five.

Alerting

The alert goes to the team the inventory names

When ownership changes, routing changes with it. Nobody has to find and edit the alert rules that used to carry a team name.

Reads
  • Owner
  • Criticality
  • Environment
Patching

Windows are data, not a table in an admin’s head

Patch groups and their windows live in the inventory. The automation reads them to decide which servers go into which night.

Reads
  • Patch group
  • Environment
  • Criticality
Reporting

Every change shows up on the charts

Dashboards show state against the inventory, and each change to it appears as an annotation: who changed what, and when. The audit trail needs no extra tool.

Reads
  • All four

Catching drift

The inventory holds the desired state, written as code in Git. Automation keeps comparing it with what is really running and puts every difference on one dashboard, where someone resolves it.

Desired state

Written in Git

A change is a merge request: checked automatically, approved by a person, then applied. Nobody edits the inventory by hand.

All the time

Compared with reality

Monitoring reports what actually runs: OS version, resources, when a server was last seen. The inventory never claims what only the server can report.

Finding

Unregistered assets

Servers that are running but missing from the inventory. Each gets a proposed record for a person to approve.

Finding

Drift

Reality differs from the desired state, such as a different OS version than the one on record.

One place

On the dashboard

Every finding is listed, with the latest changes to the inventory next to it, until someone resolves it.

Examples of rules the pipeline enforces before a change is merged

  • Every application has an owner.
  • Primary and standby of one database never share a patch group.
  • An application never runs directly on a virtual machine.
  • Derived tags are generated, never typed.

What it looks like

The dashboard where every finding lands. The coloured frames and numbers are added for this page only; the legend below says what each part shows.

Dashboard comparing the inventory with monitoring: four unrecorded servers, one OS drift, two servers waiting for a reboot, and a log of recent inventory changes 1 2 3 4
  1. 1
    Unregistered serversRunning and reported by monitoring, but missing from the inventory. One already has a proposed record waiting for approval.
  2. 2
    DriftA server running a different OS version than the one declared in Git.
  3. 3
    Reboot pendingServers with a new kernel installed that still run the old one. Read from monitoring, never stored in the inventory.
  4. 4
    Changes to the inventoryWho changed what, and when: automation writing measured values, and merged changes from the pipeline.

Tech stack

The inventory is the foundation module of Ilma, our operations framework: every other module works on top of it. It runs on proven open-source tools, joined by components we built to make them work as one.

Desired state
Git
Records as code, changed only through a merge request.
Built by Grow2FIT
Validator
Checks every change against the rules before it is merged.
Inventory
NetBox
Holds the records: three levels, four attributes on each.
Reality check
Zabbix
Reports what actually runs.
Built by Grow2FIT
Observed writer
Writes measured values from monitoring into the inventory.
Built by Grow2FIT
Discovery bot
Opens a merge request for each server the inventory is missing.
Built by Grow2FIT
Drift exporter
Compares the inventory with monitoring and publishes every difference as a metric.
View
Prometheus
Keeps the comparison results over time.
Grafana
The dashboard with every finding and every change.

Running a different monitoring tool or Git platform? We adapt the integrations to the stack you already have. For the rest of the platform this inventory feeds, see our reference stack.

See the inventory and its two checks running.

A live demo walks through the inventory, one change from merge request to dashboard, and both checks against reality. About an hour. No slides.