Infrahub Sync

July 3, 2026 · View on GitHub

PyPI version Python versions License

Infrahub Sync is the data synchronization layer for Infrahub. It connects your existing infrastructure tools — NetBox, Nautobot, IP Fabric, Slurp'it, ServiceNow-style systems, and others — to Infrahub with pre-configured adapters and a short YAML config, so you can unify infrastructure data without writing integration code.

Built on the diffsync framework, distributed on PyPI under Apache 2.0, maintained by OpsMill as part of the Infrahub ecosystem.


What You Can Do With It

  • Migrate from an existing source of truth, gradually. Move data from NetBox, Nautobot, or another existing system into Infrahub one model at a time. The legacy system keeps running while your team migrates the automation pipelines, scripts, and dashboards that read from it to Infrahub.
  • Keep two systems continuously in sync. Synchronize from IPAM, ITSM, monitoring, network discovery, or in-house databases on a recurring schedule managed by your existing automation tooling. Only deltas apply on each run.
  • Publish inventory to downstream systems. Once Infrahub holds the authoritative inventory, push it to monitoring, observability, or CMDB tools that need a current view of your infrastructure.
  • Build inventory from deployed equipment. Use a network discovery adapter (IP Fabric, Slurp'it) to populate Infrahub from what is actually deployed in the network, rather than curating inventory by hand.
  • Translate between different data models. Map fields declaratively in YAML — identifiers, references, static values, transforms, and custom Jinja filters — instead of writing custom transformation code.
  • Preview changes before applying them. Run infrahub-sync diff to see exactly what a sync would change in the destination before any data moves.

Prerequisites

  • A running Infrahub instance
  • Python 3.10–3.13
  • Credentials and network access for the source and destination systems

Quick Start

# Install Infrahub Sync from PyPI into a virtual environment
python3 -m venv .venv
source .venv/bin/activate
pip install infrahub-sync

# Verify the install
infrahub-sync --help

→ For step-by-step setup, see Install Infrahub Sync, Create a sync project, and Run a sync.


Example: NetBox → Infrahub

The repo includes a complete sync project at examples/netbox_to_infrahub/, named from-netbox. It is pre-configured to pull from the public NetBox demo (demo.netbox.dev) into a local Infrahub at localhost:8000.

# Preview what the sync would change
infrahub-sync diff --name from-netbox --directory ./examples

# Apply the changes
infrahub-sync sync --name from-netbox --directory ./examples

After the sync completes, every NetBox device, interface, VLAN, prefix, and related model appears in Infrahub, mapped per the schema mapping in config.yml.

→ For the full walkthrough of what happens under the hood — adapter generation, diff calculation, and sync ordering — see Run a sync.


Day 2 Operations

Scheduling. Infrahub Sync runs as a CLI, so it plugs into the scheduling tooling your team already uses — cron, CI jobs, Prefect, or any workflow engine. This keeps the footprint small and lets you control sync cadence, observability, and failure handling through systems you already trust.

Observability. Sync runs emit structured logs via structlog. Teams ship those logs to their existing observability stack (Splunk, Datadog, Loki, etc.).

Failure handling. Sync runs are idempotent. If a run fails partway through, re-run it — the next pass calculates a fresh diff against the current destination state and applies only what is still outstanding. The three diffsync_flags (SKIP_UNMATCHED_DST, SKIP_UNMATCHED_SRC, SKIP_MODIFIED) and per-mapping filters give per-project control over what each run is allowed to change.


What's Included

Pre-configured adapters

AdapterDirection supported
Infrahubsource or destination
NetBoxNetBox → Infrahub
NautobotNautobot → Infrahub
IP FabricIP Fabric → Infrahub
Cisco ACICisco ACI → Infrahub
Peering ManagerPeering Manager → Infrahub · Infrahub → Peering Manager
PrometheusPrometheus → Infrahub
Slurp'itSlurp'it → Infrahub
Generic REST APIexternal system → Infrahub

Choosing your adapter

  • If your source is in the table above, use that adapter directly.
  • If your source has a REST API but no dedicated adapter (ServiceNow, Infoblox, internal IPAM, etc.), start with the Generic REST API adapter — most teams do not need anything more.
  • If your source has a non-standard API or you need custom logic, write a local custom adapter using the template at examples/custom_adapter/.

Under the hood

  • Sync engine. Built on diffsync with three sync flags (SKIP_UNMATCHED_DST default, SKIP_UNMATCHED_SRC, SKIP_MODIFIED) and optional Redis-backed store for stateful sync.
  • Declarative YAML configuration. Per-field mapping with 14 filter operations (including regex and is_ip_within), per-field transforms, custom Jinja filters, and ordered cross-reference resolution.
  • Typer-based CLI. Four commands — list, diff (read-only), generate, sync.
  • Custom adapters and certificates. Load custom adapters from filesystem paths, Python module paths, or installed entry points (INFRAHUB_SYNC_ADAPTER_PATHS); custom CA certificate support for internal PKI.
  • Example library. Ready-to-run YAML configurations under examples/ covering every pre-configured adapter plus additional targets (Device42, PeeringDB) and a custom adapter template.

Going Deeper

Install and runInstall Infrahub Sync · Create a sync project · Run a sync
Full documentationInfrahub Sync docs
All adaptersAdapter reference
Configuration referenceSync instance configuration · CLI reference
Custom CA certificatesCustom certificates guide
Local custom adaptersLocal adapters guide
ContributeContributing guide — development environment, tests, code standards

Questions or Contributing?


About Infrahub

Infrahub is an open source infrastructure data management and automation platform (Apache 2.0), developed by OpsMill. Infrastructure teams use it as a schema-driven source of truth with built-in version control and native integrations with Git, Ansible, and Terraform.