Nautobot 〡 Tutorials

How to Populate Nautobot Automatically with Simple Labs

Milan Zapletal
May 11, 2026

Table Of Contents

Populating a fresh Nautobot instance manually is a task no network engineer looks forward to. You are staring at an empty dashboard, knowing that weeks of tedious data entry stand between you and a functioning source of truth. This guide shows you exactly how to populate Nautobot automatically using our open-source Simple Labs GitLab repository — turning a manual nightmare into a repeatable, automated workflow.

Why Automate Nautobot Population?

A Network Source of Truth (NSoT) is only as good as the data it holds. When you populate Nautobot manually, you introduce several risks:

  • Human Error: Typos in IP addresses or missing cable connections are inevitable.
  • Stale Data: By the time you finish entering data manually, the network has likely changed.
  • Time Sink: Highly skilled engineers spend time on data entry instead of solving complex problems.

By choosing to populate Nautobot automatically, you ensure accuracy, maintain an up-to-date NSoT, and free up valuable engineering time.

What Is Simple Labs?

Simple Labs is our open-source GitLab repository housing tools designed to accelerate network automation workflows. The Nautobot sync capability is built on top of Simple Facts (sfacts), a CLI tool that handles discovery, fact collection, and syncing — all in one place.

Simple Facts handles the heavy lifting:

  • Discovery: Scanning IP ranges to find active network devices.
  • Fact Collection: Connecting to devices via SSH to retrieve accurate hardware and operational data.
  • Sync: Pushing collected data to Nautobot via its REST API.

Setting Up Your Environment

1. Spin Up a Nautobot Instance

If you do not have a Nautobot instance running, the Simple Labs repository includes a local lab stack you can bring up with Docker Compose:

# Clone the Simple Labs repository
git clone https://gitlab.com/netodata/simple-labs.git
cd simple-labs

# Bring up the Nautobot lab stack
docker compose -f labs/nautobot/docker-compose.yml up -d

# Bootstrap the admin user and API token
./labs/nautobot/bootstrap.sh

This gives you a Nautobot instance at http://localhost:8080 with a pre-configured API token ready to use.

2. Install Simple Facts

python -m venv venv
source venv/bin/activate
pip install .

Then configure your environment variables to point sfacts at your Nautobot instance:

export NAUTOBOT_URL="http://localhost:8080"
export NAUTOBOT_TOKEN="0123456789abcdef0123456789abcdef01234567"

The Three-Step Workflow: Discover, Collect, Sync

To populate Nautobot automatically with Simple Labs, the entire process comes down to three commands.

Step 1 — Discover the Network

sfacts discover --targets 192.168.1.0/24 --output devices.json

This scans the provided subnet, identifies active devices, and saves the inventory to devices.json.

Step 2 — Collect Facts

sfacts collect --inventory devices.json --output facts.json

Simple Facts connects to each device via SSH, gathers OS version, interface data, serial numbers, and more, then structures everything into facts.json.

Step 3 — Sync to Nautobot

sfacts nautobot sync --input facts.json --site-name "HQ"

In a single command, Simple Facts will:

  • Create the necessary Manufacturers, Device Types, and Roles.
  • Create Devices and link them to the specified Site and Location.
  • Populate Interfaces and IP Addresses.
  • Sync VLANs and VRFs.

Alternatively – use Prefect’s UI

Prefect UI showing the completed sync-to-nautobot task run detail panel with task run ID, 27-second duration, and nautobot-sync-summary artifact marker on the timeline
The sync-to-nautobot task run completes in 27 seconds — Prefect tracks each step and surfaces the sync summary as a named artifact.

Verifying the Results

Log into Nautobot at http://localhost:8080 (username: admin, password: admin) and navigate to the Devices section. You will see your network devices fully populated — complete with interfaces, IP addresses, and hardware details. What would have taken days of manual data entry is done in three commands.

Keeping Nautobot Up to Date with Prefect

A one-time sync is a great start, but networks change constantly. Simple Labs integrates natively with Prefect to schedule and monitor ongoing sync workflows. By deploying the sync-to-nautobot Prefect flow, you can run a daily job that automatically discovers the network, collects fresh facts, and syncs any changes to Nautobot — ensuring your NSoT stays accurate without any manual intervention.

Conclusion

The ability to populate Nautobot automatically is the first critical step toward a reliable, continuously accurate Network Source of Truth. With the Nautobot sync tooling now available in the Simple Labs GitLab repository, you can eliminate manual data entry, reduce human error, and keep your automation platform working with real, up-to-date data.

Stop staring at that empty dashboard. Clone Simple Labs, run three commands, and let the tools do the heavy lifting.

👉 Get started with Simple Labs on GitLab →

NETWORK AUTOMATION INSIGHTS
Stay informed about the latest in network automation:
Technical deep dives - Implementation guides -
Industry best practices
Netodata official logo featuring a stylized green geometric icon and the brand name "NETODATA" in white and green typography on a transparent background.
From initial consulting to seamless implementation, we manage your network automation journey every step of the way. Our comprehensive suite of professional services caters to diverse enterprises, ranging from startups to established players.
Contact
1-234-1234
info@netodata.io
Address
Nové sady 988/2
602 00, Brno
Czech Republic
ICO: 23213035
GET IN TOUCH
Address
Netodata Labs, s.r.o. © 2026 All Rights Reserved
Nautobot icon

Nautobot

The central Source of Truth for network infrastructure data. Nautobot serves as:
Authoritative inventory database
IP address components tracking
Configuration template repository
Automation platform

Nornir

A Python automation framework specifically designed for network automation. Nornir provides:
High-performance concurrent task execution
Deep Python integration
Flexible inventory management
Fine-grained control over network operations
CI/CD

Orchestration & CD/CI

We integrate industry-standard orchestration tools to ensure reliable automation delivery:
Git-based version control
Automated pipelines
Controlled deployment workflows
Continuous integration practices

Ansible

An industry-standard automation platform that excels at network configuration management. We utilize Ansible for:
Network device configuration deployment
State validation and compliance checking
Integration with custom Python modules
Standardized workflow automation

Netbox

The central Source of Truth for network infrastructure data. NetBox serves as:
Authoritative inventory database
IP address components tracking
Configuration template repository
REST API provider for automation workflows

Python

The foundation of our automation framework, Python enables us to create modular, maintainable, and efficient network automation solutions. We leverage Python's extensive standard library and carefully selected packages to build:
Reusable automation components
Custom network management tools
API integrations
Data processing pipelines