Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ttafsir/nornir-apps
pluggable Nornir- and Napalm-based CLI framework to quickly build a network automation toolset
https://github.com/ttafsir/nornir-apps
network-automation nornir nornir-napalm
Last synced: 28 days ago
JSON representation
pluggable Nornir- and Napalm-based CLI framework to quickly build a network automation toolset
- Host: GitHub
- URL: https://github.com/ttafsir/nornir-apps
- Owner: ttafsir
- Created: 2022-06-20T03:14:04.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-02-08T03:33:15.000Z (almost 2 years ago)
- Last Synced: 2024-11-10T20:52:08.393Z (about 1 month ago)
- Topics: network-automation, nornir, nornir-napalm
- Language: Python
- Homepage:
- Size: 34.2 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# NORNIR-APPS
Pluggable Network CLI tool built on top of Nornir and Napalm
## Why do I need this?
`nornir_apps` is a lightweight wrapper around Nornir and Napalm and it provides a CLI that makes it easy to plugin Nornir-based scripts you have. The ClI tool comes with a few plugins that use the `nornir_napalm` tools that may already be suitable for quick tasks. However, you can easily add to the CLI by writing your own plugin.
## Getting Started
### Installation
Install `nornir_apps` using pip:
```sh
pip install nornir-apps
```### Configure your Nornir inventory and Initialization config
You can use your existing nornir configuration files and inventory without any modifications. By default, `nornir_apps` looks for a `config.yaml` file in the root of directory from which you're using the `nornir-app` CLI command. You can pass another file using the `-i` or `--init-file` flag as well. You can review sample configuration and inventory files below. They are samples from the [examples](./examples/) directory in the root of this repo.
Sample hosts file
```yaml
# examples/inventory/hosts.yaml
cat9k:
hostname: 10.253.175.87
port: 22
username: cisco
password: cisco
groups:
- cisco_iosxe
```Sample Groups file
```yaml
# examples/inventory/groups.yaml
---
cisco_iosxe:
platform: ios
data:
role: router
connection_options:
napalm:
extras:
optional_args:
fast_cli: False
secret: cisco
conn_timeout: 30
```Nornir Initialization file
```yaml
---
core:
raise_on_error: Falserunner:
plugin: threaded
options:
num_workers: 100logging:
enabled: Trueinventory:
plugin: SimpleInventory
options:
host_file: "inventory/hosts.yaml"
group_file: "inventory/groups.yaml"
defaults_file: "inventory/defaults.yaml"
```### Getting Started with the CLI
#### View available commands
Use `nornir_apps --help` to view the included commands based on the `napalm_nornir` project. Any plugin that you create and register will show as an available command in the future.
```sh
➜ nornir_app --helpCommands:
napalm-configure Retrieve device configuration
napalm-get Retrieve device configuration using napalm getters
napalm-ping Ping device
napalm-validate Validate device compliance using napalm_validate
```#### Examples
```sh
nornir_app -i inventory/config.yaml -h cat9k napalm-ping -d 8.8.8.8
```> Note: the CLI looks for a `config.yaml` file by default to initiliaze Nornir
If you have a `config.yaml` file present in the current directory, you can omit the `-i` flag:
```sh
nornir_app -h cat9k napalm-ping -d 8.8.8.8
```The `-h` or `--host-filter` option allows you to pass a simple filter to the inventory for host selection.
```sh
nornir_app -h platform=ios,role=router napalm-ping -d 8.8.8.8
```