Config Store Service
The Config Store service provides PostgreSQL-backed configuration storage with versioning, compression, and fine-grained locking.
Overview
The Config Store service:
- Stores versioned device configurations (intended and backup)
- Integrates with Nautobot for device metadata enrichment
- Provides a REST API for configuration management
- Includes a web UI for browsing and comparing configurations
Features
- Versioned Storage: Full version history with configurable retention
- File Types: Separate
intendedandbackupconfigurations - Diff Generation: Compare any two versions
- Batch Operations: Bulk writes for multiple files on one device
- Modern Web UI: Browse, search, and compare configurations
For detailed feature descriptions and system architecture, see Config Store Architecture.
File Types
The service tracks two distinct file types:
This separation enables:
- Drift Detection: Compare intended vs backup
- Independent Locking: Writes do not block each other
- Compliance Auditing: Track both desired and actual state
See Concurrent Write Handling for locking mechanism details.
API Endpoints
Configuration Operations
file_type separates intended configuration from backup configuration. For GET /v1/config/{device_uuid}/{filename}, GET /v1/config/{device_uuid}/{filename}/versions, and GET /v1/config/{device_uuid}/{filename}/diff, pass file_type as an optional query parameter. It defaults to intended when omitted.
For POST /v1/config/{device_uuid}/{filename}, pass file_type in the request body as ConfigCreateRequest.file_type. It also defaults to intended when omitted.
Batch requests should be a single config type in normal operation. Intended config batches typically write boot-script and startup.yaml together. The render service passes the same Nautobot-change-derived commit_message for every file in the batch. Backup captures are typically single-file writes to POST /v1/config/{device_uuid}/{filename} with "file_type": "backup".
The batch endpoint returns version metadata for files that were created or updated and a list of filenames that were skipped because their content already matched the latest stored version:
Full success example:
Idempotent no-op example:
Failure example:
The batch operation is atomic at the database transaction level. If any file in the batch fails during processing, the service returns a non-2xx error and rolls back the whole request; it does not commit a subset of files from the failed batch. Request validation errors return before any write occurs.
For retry behavior, treat identical content as idempotent. If a request fails with a server error or the client loses the connection before reading the response, retry the full same-type batch. Files that were already committed with identical content are skipped, and files that were not committed are written. If you need to recover a backup capture, retry the single backup file write rather than mixing it into an intended config batch.
Admin Operations
Web UI
The Config Store includes a Next.js web interface.
Features
- Device Browser: Search and browse by device UUID or name
- Version History: View all versions with metadata
- Diff Viewer: Side-by-side comparison of any versions
- Device Search: Find devices by name and switch between intended and backup config views
- Nautobot Integration: Rich device metadata display
Accessing the UI
Configuration
INI Configuration
Relevant sections of the Config Manager INI are as follows:
Cache Refresh Service
A background service keeps Redis cache in sync with Nautobot:
Metrics
Prometheus metrics are available at the operational /metrics endpoint. See Prometheus Metrics for available metrics and their descriptions.
Troubleshooting
In general:
-
If you are seeing a large number of 503 errors, or high latency, scale up the number of replicas.
-
Check pod status and logs:
-
Check an application’s (for example,
redisorpostgres) status and logs:
Nautobot Integration Issues
Check the service logs for Nautobot connection errors:
Gateway Not Working
Check that the gateway has an address and is programmed:
Ensure that all routes are properly installed:
For further information on the Envoy gateway, see the Envoy documentation.
Related Documentation
- Render Service — Writes intended configs
- Temporal — Writes backup configs
- ZTP Service — Reads configs for devices
- API Reference