Skip to main content

Infrahub Logo

Infrahub Sync

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

Adapter Direction supported
Infrahub source or destination
NetBox NetBox → Infrahub
Nautobot Nautobot → Infrahub
IP Fabric IP Fabric → Infrahub
Cisco ACI Cisco ACI → Infrahub
Peering Manager Peering Manager → Infrahub · Infrahub → Peering Manager
Prometheus Prometheus → Infrahub
Slurp'it Slurp'it → Infrahub
Generic REST API external 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 run Install Infrahub Sync · Create a sync project · Run a sync
Full documentation Infrahub Sync docs
All adapters Adapter reference
Configuration reference Sync instance configuration · CLI reference
Custom CA certificates Custom certificates guide
Local custom adapters Local adapters guide
Contribute Contributing 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.

Metadata

Release files for infrahub-sync 2.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for infrahub-sync 2.0.1
File Size Uploaded
infrahub_sync-2.0.1.tar.gz 782.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for infrahub-sync 2.0.1
File Interpreter ABI Platform
infrahub_sync-2.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 870.0 kB

Release files / infrahub_sync-2.0.1.tar.gz

Download URL infrahub_sync-2.0.1.tar.gz
Size 782.5 kB
Tags Source
SHA-256 checksum
How to use checksums
91548eb3f5aa249cb90a283bfe353dd05b2aa40a2adf5998407e0cc3e2746838
BLAKE2b-256 checksum
How to use checksums
9540c609f523618de56d4b0363e29b47483a4ebb56248cb308c173165cefe9d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / infrahub_sync-2.0.1-py3-none-any.whl

Download URL infrahub_sync-2.0.1-py3-none-any.whl
Size 87.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a4e6d4220bc2f7277faf1c691e65da85108ab09ac33c44b15baf4f41427f4007
BLAKE2b-256 checksum
How to use checksums
8526ea6c29dec17ea2a1bfd7e4711ea6770937da25daa3e456f8a077a3a93269
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

2.0.1 This release

2 release files

2.0.0

2 release files

1.5.7

2 release files

1.5.6

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page