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-1.10.0.tar.gz (88.7 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-1.10.0-py3-none-any.whl (265.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: invariant_client-1.10.0.tar.gz
  • Upload date:
  • Size: 88.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.3 Linux/6.4.16-linuxkit

File hashes

Hashes for invariant_client-1.10.0.tar.gz
Algorithm Hash digest
SHA256 71344be9eb658a15c70853f25f50cf5bf11fef87db3f10dc24985e25cff0fcd2
MD5 e98f4abb65491197b4af72753810e34c
BLAKE2b-256 48372f5cd15558327f0c9dd478f535af0043d42e0840fbdf6390a64e2229b494

See more details on using hashes here.

File details

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

File metadata

  • Download URL: invariant_client-1.10.0-py3-none-any.whl
  • Upload date:
  • Size: 265.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.3 Linux/6.4.16-linuxkit

File hashes

Hashes for invariant_client-1.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14b567ae0ba525d189a2ebf8eb0f2e61cac34532dffd01c65871d350464c3268
MD5 22d06e363260ed6387ef1e7b3cc2239a
BLAKE2b-256 4029cada9a144a0f04fd25e7a6db8f6328d6c7cf17d877f9009c9a483dc24522

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