Configuration¶
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: file
params:
path: /path/to/file
context:
default:
fetcher: default
deployer: default
generators: default
storage: default
selected_context: default
Environment variable ANN_SELECTED_CONTEXT can be used to override selected_context parameter.
generators¶
See Generator.
generators:
default:
- /path/to/my_annet_generators/__init__.py
- my_annet_generators # relative import from sys.path
Storages¶
Storages provide information about devices like FQDN, interface and so on.
Netbox storage¶
Uses NetBox as storage.
storage:
default:
adapter: netbox
params:
url: http://127.0.0.1:8000
token: 1234567890abcdef01234567890abcdef0123456
insecure: true # skip SSL verification
exact_host_filter: true # for setup where hostname used instead of fqdn
URL and token may be provided using NETBOX_URL, NETBOX_TOKEN, NETBOX_EXACT_HOST_FILTER and NETBOX_INSECURE environment variable.
export NETBOX_URL="https://demo.netbox.dev"
export NETBOX_TOKEN="1234567890abcdef01234567890abcdef0123456"
File storage¶
Uses local file as storage.
storage:
default:
adapter: file
params:
path: /path/to/file
cat /path/to/file:
devices:
- fqdn: myhost.yndx.net
vendor: mikrotik
interfaces:
- name: eth0
description: test
Fetcher Configuration¶
The fetcher is responsible for connecting to devices and retrieving their configurations. Annet supports multiple connection methods including SSH (default), SSH on custom ports, and Telnet.
SSH with default port¶
Default SSH connection on port 22:
fetcher:
default:
adapter: gnetcli
params:
dev_login: username
dev_password: password
SSH with custom port¶
To connect to devices using a non-standard SSH port:
fetcher:
ssh-custom:
adapter: gnetcli
params:
dev_login: username
dev_password: password
dev_port: 10022
streamer_type: ssh
Telnet support¶
To connect to legacy devices using Telnet:
fetcher:
telnet:
adapter: gnetcli
params:
dev_login: username
dev_password: password
dev_port: 23
streamer_type: telnet
Warning
Telnet transmits data in clear text. Use SSH whenever possible for security reasons.
Multiple Contexts¶
You can define multiple contexts to work with different device groups that require different connection methods:
context:
default:
fetcher: default
deployer: default
generators: default
storage: default
ssh-10022:
fetcher: ssh-custom
deployer: default
generators: default
storage: default
telnet:
fetcher: telnet
deployer: default
generators: default
storage: default
selected_context: default
Switching between contexts:
# Use default SSH context
annet context set-context default
annet diff -g hostname mydevice.example.com
# Switch to telnet context for legacy devices
annet context set-context telnet
annet diff -g hostname legacy-switch.example.com
# Use custom SSH port context
annet context set-context ssh-10022
annet diff -g hostname custom-ssh-device.example.com