Nautobot Bootstrap Data Reference
This document provides a comprehensive reference for the YAML schema types used to populate Nautobot with baseline Config Manager data. The LoadBootstrapData job (located in jobs/load_bootstrap_data.py) processes these YAML files in a specific dependency order to create manufacturers, device types, platforms, roles, tags, statuses, locations, tenants, namespaces, relationships, and config contexts in Nautobot.
The bootstrap data files are located in the data/ directory and are organized by schema type. The job supports deployment type filtering using the NV_CONFIG_MANAGER_DEPLOYMENT_TYPE environment variable, allowing different data sets to be loaded for different deployment scenarios (for example, superpod, a site-specific label, or all).
Loading Order and Dependencies
The LoadBootstrapData job processes schemas in the following order to ensure dependencies are satisfied:
Notes:
- Manufacturers must be loaded first as they are required by Device Types and optionally by Platforms
- Location Types should define parent types before child types in the YAML file
- Locations are sorted by hierarchy (Provider → Region → Site → Module) before processing
- Statuses should include “Active” as it is the default for locations
- Roles and Platforms must exist before Config Contexts that reference them
- Missing dependencies result in warnings, and the item is skipped (except for required fields which cause errors)
About the Data
You must populate several key data structures to make Config Manager work.
Devices / Device Types / Device Roles / Interfaces
Devices are the fundamental unit of configuration. They are the items you rack and configure, and in Config Manager, that usually means network switches. Device records contain hostnames, primary IPv4 addresses, and critical identifying attributes like MAC addresses and serial numbers. Create these operational records through the Nautobot UI, Nautobot API, bulk import, migration scripts, or Design Builder topology jobs so provisioning and rendering know which device gets what.
Device Types are the manufacturer’s model of what you are deploying. For example, NVIDIA SN5600.
Device Roles define the function of an individual Device. The Role of a Device defines much of the base template applied by the Config Manager system, so this can be considered the base unit of Config Manager deployment. Examples may include “access-switch,” “TOR,” or “Spine.”
Interfaces are physical device ports, for things like Ethernet, Infiniband, BMC, and so on. These connect to Cables and link to IP addresses. There are also logical interface types, like VLAN Interfaces or Loopbacks. These connect to IP addresses, but not Cables.
Racks / Cables / Location Types / Locations
Racks are where you rack your gear, and how you tell your datacenter operators where to put things.
Cables define how you connect devices together. The full set of cables in your data set will be used to validate that the deployment has been properly cabled and powered up, in the Cable Validation workflow. Populating this precisely will help you bring up your fleet quickly and get accurate reports on any problems you need to fix.
Location Types define the generic hierarchy of how your locations fit together. For example, Regions may be at your top level, with Sites nested under those, and perhaps Modules below that. At minimum, most operators likely want a Site Location Type.
Locations are instances of Location Types. Racks belong to Locations.
Prefixes, IP Addresses, VLANs
IPAM objects need to be populated and applied to Devices or Location objects respectively, to establish connectivity and routing for Devices.
Common Schema Patterns
Deployment Type Filtering
Most schema types support a deployment_types field that controls when an item is loaded:
- Type: Array of strings or single string
- Default:
["all"]if not specified - Values: Common values include
all,superpod, or site-specific labels you define - Behavior: Item is loaded if
NV_CONFIG_MANAGER_DEPLOYMENT_TYPEmatches any value in the array, or ifallis in the array
Example:
Content Types
Roles, tags, and statuses can specify which Nautobot content types they apply to using the content_types field:
- Type: Array of strings
- Format:
{app_label}.{model}(for example,dcim.device,dcim.interface,ipam.prefix) - Common Content Types:
dcim.device- Devicesdcim.interface- Interfacesipam.prefix- IP Prefixesipam.ipaddress- IP Addressesipam.vlan- VLANsipam.vrf- VRFscircuits.circuit- Circuits
Hierarchical References
Some schemas support parent relationships using either:
-
String format: Simple parent name lookup
-
Dictionary format: Nested lookup with multiple criteria
Field Naming Conventions
- Field names use lowercase with underscores (snake_case)
- Required fields are typically
nameormodel - Optional fields often have sensible defaults
- Boolean fields default to
truewhen not specified
Schema Reference
1. Manufacturers
File Location: data/manufacturers.yaml
Description: Network equipment vendors, server manufacturers, and infrastructure providers.
Required Fields
Optional Fields
Relationships
- Used by: Device Types (by directory structure), Platforms
Example
Notes
- Manufacturer names must match directory names in
data/device_types/for device types to be associated correctly. - The job uses a
get_or_createupsert method, so existing manufacturers are not overwritten.
2. Device Types
File Location: data/device_types/{manufacturer}/*.yaml
Description: Physical device models organized by manufacturer in subdirectories.
Required Fields
Optional Fields
Console Ports Structure
Power Ports Structure
Interfaces Structure
Module Bays Structure
Relationships
- Requires: Manufacturer (must exist)
- Used by: Devices created through the Nautobot UI, Nautobot API, bulk import, migration scripts, or Design Builder topology jobs
Example
Notes
- Device type files must be placed in a subdirectory matching the manufacturer name
- Interface names can use bracket notation for ranges (for example,
swp[1-48]) - The
manufacturerfield in the YAML must match the directory name - Only
model,part_number,u_height, andis_full_depthare stored in Nautobot; other fields are informational
3. Platforms
File Location: data/platforms.yaml
Description: Network operating systems and software platforms that run on devices.
Required Fields
Optional Fields
Relationships
- Requires: Manufacturer (optional, but must exist if specified)
- Used by: Config Contexts, Devices
Example
Notes
- If
manufactureris specified, it must exist in the manufacturers list. - Platforms are created with a
get_or_createupsert method, so existing platforms are not overwritten
4. Roles
File Location: data/roles.yaml
Description: Functional roles assigned to devices and interfaces to categorize their purpose in the network.
Required Fields
Optional Fields
Relationships
- Used by: Config Contexts (using the
rolesfield), Devices, Interfaces
Example
Notes
- The
content_typesfield must be set for both new and existing roles. - Content type format is
{app_label}.{model}(for example,dcim.device). - Roles are created with a
get_or_createupsert method, butcontent_typesare always updated.
5. Tags
File Location: data/tags.yaml
Description: Labels used to categorize and filter devices, interfaces, and other objects.
Required Fields
Optional Fields
Relationships
- Used by: Any object type specified in
content_types
Example
Notes
- Tags use
update_or_create, so color and description are always updated content_typesmust be set for both new and existing tags- Tags are commonly used for automation workflows and filtering
6. Statuses
File Location: data/statuses.yaml
Description: Operational states for devices, interfaces, IP addresses, and other objects.
Required Fields
Optional Fields
Relationships
- Used by: Locations (defaults to “Active” if not specified), Devices, Interfaces, IP objects
Example
Notes
- Statuses use
update_or_create, so color and description are always updated content_typesmust be set for both new and existing statuses- Locations default to “Active” status if not specified or if the specified status does not exist
7. Location Types
File Location: data/location_types.yaml
Description: Hierarchical types that define the structure of physical locations (for example, Provider → Region → Site → Module).
Required Fields
Optional Fields
Relationships
- Requires: Parent Location Type (optional, but must exist if specified)
- Used by: Locations
Example
Notes
- Location types form a hierarchy using the
parentfield - Parent location types must be defined before child types
- The
nestablefield controls whether locations of this type can contain other locations
8. Locations
File Location: data/locations.yaml
Description: Physical location instances organized in a hierarchical structure.
Required Fields
Optional Fields
Parent Reference Formats
String format (simple name lookup):
Dictionary format (nested lookup):
Relationships
- Requires: Location Type (must exist), Status (defaults to “Active”), Tenant (optional), Parent Location (optional)
- Used by: Devices, Racks, Circuits
Example
Notes
- Locations are processed in hierarchy order (Provider → Region → Site → Module) to ensure parents exist before children
- If parent lookup fails, the location is created without a parent
- If tenant lookup fails, the location is created without a tenant
- Locations use
update_or_createbased onnameandlocation_type
9. Tenants
File Location: data/tenants.yaml
Description: Organizational tenants for grouping and isolating resources.
Required Fields
Optional Fields
Relationships
- Used by: Locations, Devices, IP Addresses, Prefixes, VLANs, VRFs
Example
Notes
- Tenants are created with a
get_or_createupsert method, so existing tenants are not overwritten. - Tenants are commonly used for multi-tenant isolation.
10. Namespaces
File Location: data/namespaces.yaml
Description: IP address and VLAN namespaces for organizing network addressing.
Required Fields
Optional Fields
Relationships
- Used by: IP Addresses, Prefixes, VLANs, VRFs
Example
Notes
- Namespaces are created with a
get_or_createupsert method, so existing namespaces are not overwritten. - Namespaces provide logical separation of IP addressing schemes.
11. Relationships
File Location: data/relationships.yaml
Description: Custom relationships between different object types in Nautobot.
Required Fields
Optional Fields
Relationships
- Requires: Source and destination content types must exist in Nautobot
Example
Notes
- Relationships use a
update_or_createupsert method based onlabel, so existing relationships are updated. - Content types must be valid Nautobot content types (for example,
dcim.device,ipam.prefix). - The
namefield is for reference only;labelis the unique identifier.
12. Config Contexts
File Location: data/config_contexts.yaml
Description: JSON data structures applied to devices based on roles and platforms for configuration management.
Required Fields
Optional Fields
Relationships
- Requires: Roles and Platforms (must exist if specified in
rolesorplatformsarrays) - Used by: Devices (matched by role and/or platform)
Example
Notes
- Config contexts use an
update_or_createupsert method based onname, so existing contexts are updated. - If a role or platform in the
rolesorplatformsarray does not exist, it is skipped with a warning. - The
datafield contains arbitrary JSON that is merged into device configuration contexts. - Config contexts are applied to devices that match the specified roles and/or platforms.
- Multiple config contexts can apply to the same device; they are merged by weight.