Skip to main content

Invariant: manage ACLs in an entirely new way

Project description

Invariant CLI and Python SDK

Installation

The Invariant client is available as a Python package. You can install it through pip or pipx like so:

pip install invariant-client

# Or using pipx
pipx install invariant-client

The Invariant CLI can be used to run Invariant from your test automation workflow. This example shows one way to install it for Github Actions:

steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
  with:
    python-version: '3.11'
    cache: 'pip'
- name: Install dependencies
  run: python -m pip install --upgrade pip invariant-client
- name: Evaluate current directory using Invariant
  run: |
    python -m invariant-client run

Usage: Command Line Interface

The Invariant CLI can analyize local changes to network configuration files.

$ invariant login
Open this link in your browser to log in:
https://prod.invariant.tech/login?code=320664
Login successful.

$ invariant run
Uploading snapshot...
Processing... (5b7f28b5-95b3-44ee-8c42-ea0240ef52f5)
Analysis complete.

╭───────────────────────┬────────╮
│ Network Information      Rows │
├───────────────────────┼────────┤
│ nodes                      38 │
│ interfaces                201 │
│ named_structures          148 │
│ defined_structures        334 │
│ referenced_structures     333 │
│ unused_structures           5 │
│ vlan_properties            14 │
│ hsrp_properties             0 │
│ mlag_properties             0 │
│ ip_owners                  75 │
│ undefined_references        0 │
│ vrrp_properties             8 │
╰───────────────────────┴────────╯

╭───────────────┬────────╮
│ Topology         Rows │
├───────────────┼────────┤
│ edges             120 │
│ layer_1_edges       0 │
│ layer_3_edges     120 │
│ network_map         1 │
╰───────────────┴────────╯

╭────────────────────────────┬────────╮
│ Routing                       Rows │
├────────────────────────────┼────────┤
│ routes                        8994 │
│ bgp_process_config              12 │
│ bgp_peer_config                 24 │
│ bgp_session_compatibility       24 │
│ bgp_session_status              24 │
│ bgp_edges                       20 │
│ bgp_ribs                      4320 │
│ ospf_process_config              6 │
│ ospf_interface_config           36 │
│ ospf_area_config                 6 │
│ ospf_session_compatibility      20 │
╰────────────────────────────┴────────╯

╭───────────────────┬────────╮
│ Setup                Rows │
├───────────────────┼────────┤
│ unconnected_nodes       3 │
│ ignored_lines          49 │
│ file_parse_status      16 │
│ parse_warnings         92 │
│ errors                  0 │
╰───────────────────┴────────╯

╭────────────────────────┬────────╮
│ Inconsistent Traffic      Rows │
├────────────────────────┼────────┤
│ subnet_multipath             0 │
│ loopback_multipath           0 │
╰────────────────────────┴────────╯

╭──────────┬────────╮
│ Probes      Rows │
├──────────┼────────┤
│ probes         4 │
╰──────────┴────────╯

$ invariant show probes --json
[
  {
    "target": "8.8.8.8/32",
    "type": "ICMP_ECHO",
    "comment": "Custom 8.8.8.8 ECHO No-Ignore Filters",
    "ignore_filters": false,
    "node_outcomes": {
      "asa": "always",
      "border-1": "always",
      "core-1": "always",
      "core-2": "always",
      "dc-1": "always",
      "dist-1": "always",
      "dist-2": "always",
      "dmzfw-1": "always",
      "dmzsw-1": "always",
      "host-srv-dmz": "always",
      "i-01602d9efaed4409a": "always",
      "i-02cae6eaa9edeed70": "always",
      "i-04cd3db5124a05ee6": "never",
      "i-0a5d64b8b58c6dd09": "never",
      "internet": "always",
      "isp_64501": "always",
      "isp_64502": "always",
      "subnet-009d57c7f13813630": "never",
      "subnet-0333a0749ea4ce3df": "never",
      "subnet-03acae3b9a534fff9": "never",
      "subnet-06005943afe32f714": "never",
      "subnet-06a692ed4ef84368d": "never",
      "subnet-09b389def558a9c7d": "never",
      "subnet-0cb5f4c094bee5214": "never",
      "subnet-0f84a4be105f7aaef": "never",
      "tgw-06b348adabd13452d": "partial",
      "tgw-0888a76c8a371246d": "partial"
    }
  }
]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

invariant_client-2.0.0.tar.gz (139.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

invariant_client-2.0.0-py3-none-any.whl (420.3 kB view details)

Uploaded Python 3

File details

Details for the file invariant_client-2.0.0.tar.gz.

File metadata

  • Download URL: invariant_client-2.0.0.tar.gz
  • Upload date:
  • Size: 139.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.5 Linux/6.10.14-linuxkit

File hashes

Hashes for invariant_client-2.0.0.tar.gz
Algorithm Hash digest
SHA256 bb62e76bdbbdf8bb64ccaea1d512c151c80237c152a2cc1c47317a873fe6d4e8
MD5 1c9a0d9f0d85ca9f2c973e1969a37cbd
BLAKE2b-256 48d66729e3ae735bd608afd82c495e56ccad6e352e785e1797f5724f01cad231

See more details on using hashes here.

File details

Details for the file invariant_client-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: invariant_client-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 420.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.5 Linux/6.10.14-linuxkit

File hashes

Hashes for invariant_client-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4c7e60b60c2a8c484f31bdb171c6d060fd1b281f952b427431eb05785b46ad1
MD5 f4082cecfd35df2d4040c68c8592ef9b
BLAKE2b-256 a79573aeb61b6d01d5602cbfaf5b638adb16a555a73eabd9f608c6a3e7e46ee9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page