Object Manager
Skill: infrahub-managing-objects
The Object Manager produces and updates YAML data files for Infrahub infrastructure objects (devices, locations, organizations, interfaces, modules, and any custom node type). It applies the correct file structure, value mappings, and load order so files are ready to load into a running Infrahub instance.
When to use
- Creating initial data files for a new Infrahub instance
- Populating objects from a spreadsheet, CSV, or description
- Creating a batch of devices, interfaces, or IP addresses with consistent structure
- Generating test or demo data for a schema
- Adding new infrastructure objects to an existing instance
- Updating attributes or relationships on objects already defined in a data file, or working out why a file fails to load
What it produces
- YAML files with
apiVersion,kind: Object, and aspecblock - Each file covers one or more objects of the same node type
- Supports multi-document YAML files (multiple objects in one file separated by
---) - Supports
expand_range: truefor sequential interface/object generation (e.g.,eth0througheth47) - Output respects load order: schemas must be loaded before objects
Example prompts
- "Create object files for 3 spine switches and 6 leaf switches with loopback interfaces"
- "Populate 5 locations: 2 regions, 2 sites within each region, and a rack in each site"
- "Generate 48 interfaces on a device named
spine-01using expand_range" - "Create organization objects for Cisco, Juniper, and Arista as manufacturers"
- "Change the rack assignment on leaf-03 through leaf-06 and fix whatever is breaking the load"
Key rules enforced
- File structure:
apiVersion,kind: Object,specwithnodeslist; missing any of these causes load failure - Value mapping: Text values wrapped in
value:key; Dropdown fields use the choice name not the label; relationship references use the node'shuman_friendly_idvalue - Children and hierarchy: child objects (e.g., interfaces on a device) use the correct nesting structure with
kind:specified - Load order: objects referencing other objects (e.g., interfaces referencing a device) must be in the right file or the right order within a multi-document file
- Numeric file prefixes: files are named with numeric prefixes (e.g.,
01_organizations.yml,02_locations.yml) to enforce load order - Profiles and templates: assigns shared defaults via a
profiles:list (explicit values override), creates objects from a template viaobject_template, and authors template objects under the generatedTemplate<Kind>kind, with the referenced profile or template loaded first
Common mistakes it catches
| Mistake | What the skill does instead |
|---|---|
Missing value: wrapper on text attributes | Wraps all text values in value: |
| Using Dropdown label instead of name | Uses the choice name (e.g., "active" not "Active") |
Relationship references that don't match human_friendly_id | Uses the correct identifier value |
| Incorrect nesting for child objects | Applies the correct children structure with kind: |
| Load order violations | Orders files and documents so dependencies are satisfied |
Loading it
Load object files into a running Infrahub instance:
infrahubctl object load <file>
warning
Load schemas before objects. Objects that reference node types not yet in the schema will fail to load.