Skip to main content

Package and upload a network snapshot

Create the following directory structure to represent a network snapshot.

my-network-snapshot/
├── aws_configs/ # AWS JSON configuration files
├── batfish/ # Batfish ISP configuration (isp_config.json)
├── configs/ # On-premise device configurations
├── def/ # Network and service definitions (Aerleon or Capirca)
└── invariant/
├── locations/ # Location definitions (YAML)
└── policies/ # Access policy rules (YAML)

  • configs/: Contains on-premise device configurations (Cisco, Juniper, Arista, etc.).
  • aws_configs/: Contains AWS resource configurations (optional, requires specific structure for accounts/regions if used).
  • batfish/: Holds optional Batfish configuration like isp_config.json.
  • def/: Contains YAML files defining named networks (IP ranges) and services (ports/protocols) defined in Aerleon format. Capirca format is also accepted.
  • invariant/locations/: Contains YAML files defining named locations (mapping names to device interfaces).
  • invariant/policies/: Contains YAML files defining access policy and critical flow rules.

Run invariant run using the my-network-snapshot directory to upload the snapshot and start the analysis and evaluation process.

If you have not already, create a Network to represent the target network

# Upload the current directory as a snapshot
$ cd my-network-snapshot
$ invariant run --network my-network

# Specify the snapshot directory using --target
$ invariant run --network my-network --target my-network-snapshot

See Docs > Reference > Snapshots for detailed directory structure and file format information.