Annet is a configuration generator that can translate differences between old and new configurations into sequence of commands. This feature is vital for CLI-based devices, such as Huawei, Cisco IOS, Cisco NX-OS, Juniper. Devices configured via separate config files, Linux, FreeBSD and Cumulus are also supported.
It works this way. Annet generates configuration for a device by running Python code, which usually goes to the Network Source of Truth, like NetBox. Annet then gets the difference by getting the configuration from the device and comparing it. Finally, Annet translates the difference into a sequence of commands, called a patch. After deploying these commands, the diff will be empty.
Annet has a number of modes (subcommands):
annet gen- generates the entire config for the specified devices or specified parts of itannet diff- first does gen and then builds diff with current config versionannet patch- first does diff and then generates a list of commands to apply diff on the deviceannet deploy- first does patch and then deploys it to the device
Usage help can be obtained by calling annet -h or for a specific command, such as annet gen -h.
The path to the configuration file is searched in following order:
ANN_CONTEXT_CONFIG_PATHenv.~/.annet/context.yml.annet/configs/context.yml.
Config example:
generators:
default:
- my_annet_generators.example
storage:
default:
adapter: annet.adapters.file.provider
params:
path: /path/to/file
context:
default:
generators: default
storage: default
selected_context: defaultEnvironment variable ANN_SELECTED_CONTEXT can be used to override selected_context parameter.
Install from PyPI:
pip install annetOr install from source:
git clone https://github.com/annetutil/annet
cd annet
pip install -e .- Install dependencies:
pip install -r requirements-doc.txt- Build
sphinx-build -M html docs docs-build- Open rendered html in browser
open docs-build/html/index.html # macOS
xdg-open docs-build/html/index.html # Linux
start docs-build/html/index.html # Windows