Use CSV files as a Nornir Inventory source with hosts, groups and defaults.

Overview

nornir_csv

published

Use CSV files as a Nornir Inventory source with hosts, groups and defaults. This can be used as an equivalent to the Simple Inventory plugin but using CSV files instead of YAML. This does not generate any new files, but instead reads host data from three files:

  • hosts.csv
  • groups.csv
  • defaults.csv

Installation

As of right now, the code hasn't been published to PyPi, so it must be installed from source. Be sure to clone the repository locally:

cd /directory/where/you/clone/git/stuff/
git clone https://github.com/matman26/nornir_csv.git

The nornir_csv directory can then be copied to your project root and added as an external library.

cp nornir_csv/nornir_csv /destination/project/root

Usage

Since this is an external plugin for Nornir 3.0+, it must be registered before usage. The main project file must therefore contain something similar to:

from nornir import InitNornir
from nornir_csv.plugins.inventory.csv_inventory import CsvInventory
from nornir.core.plugins.inventory import InventoryPluginRegister

InventoryPluginRegister.register("CsvInventoryPlugin", CsvInventory)

nr = InitNornir(config_file='sample_config.yaml')

By default, the plugin will look for the files hosts.csv, groups.csv and defaults.csv inside the ./inventory/ directory, but the directory can be changed by specifying the plugin option inventory_dir_path. A sample file such as below can be used:

inventory:
  plugin: CsvInventoryPlugin
  options:
    inventory_dir_path: /path/to/inventory/dir/
runner:
  plugin: threaded
  options:
    num_workers: 20

The name of the csv files to be read for hosts, groups and defaults can also be customized by setting the options hosts_file, groups_file and defaults_file, respectively. These should correspond to the file's basenames (no paths) with extension, if any.

CSV Syntax

Hosts

The hosts_file follows a specific syntax to make it nornir-compatible, see sample below:

name,hostname,username,password,port,platform,groups,custom_var
R1,192.168.122.10,cisco,cisco,22,cisco_ios,core main,foo
R2,192.168.122.20,cisco,cisco,22,cisco_xr,,bar

Note that name, hostname, username, password, port, platform and groups are nornir base attributes. This means they are hosts attributes directly, such that

nr.inventory.hosts['R1'].password

will yield the return value of 'cisco' as expected. Any custom variables that are added will be put inside the 'data' dictionary on the target host. So

nr.inventory.hosts['R1'].data['custom_var']

will return 'foo'.

Notice also that to specify the list of groups to which a host belongs the list must be specified one group at a time, separated by spaces. In the csv above, R1 belongs to the groups 'core' and 'main'. A hosts file is mandatory.

Groups

The groups_file is optional. It can be used to set default values for the base attributes of each host (for example, if every host of the same group uses the same credentials). Any attributes that are non-base attributes will be added to the 'data' container inside the generated group, similar to how it behaves with hosts. If no groups are specified in the csv file, hosts can still be assigned to groups but these will hold no data.

name,username,password,dns_server
core,cisco,cisco,8.8.8.8
main,,,,

Notice that the groups csv does not have any mandatory fields other than name.

Defaults

The defaults_file specifies any default variables. This file is also free-form, but is only composed of two lines: a header with the name of the variable and a second line with its value. The defaults file is optional.

message_of_the_day,foo,port
hello world!,bar,22
You might also like...
Based Telegram Bot and Userbot To Play Music in Your Telegram Groups With Some Cool Extra Features! ๐Ÿฅฐ
Based Telegram Bot and Userbot To Play Music in Your Telegram Groups With Some Cool Extra Features! ๐Ÿฅฐ

CallMusicPlus69 This Repo base on! ๐Ÿค—๏ธ A CallsMusic Based Telegram Bot and Userbot To Play Music in Your Telegram Groups With Some Cool Extra Features

This bot can mention members upto 10,000 in groups and can mention members upto 200 in channels !

Mention All Bot This bot can mention members upto 10,000 in groups and can mention members upto 200 in channels ! ๐Ÿท Infomation Language: Python. Tele

โค๏ธA next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules
โค๏ธA next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules

Natsuki Based on Python Telegram Bot Contributors Video Tutorial: Complete guide on deploying @TheNatsukiBot's clone on Heroku. โ˜† Video by Sadew Jayas

Telegram bot to stream videos in telegram voicechat for both groups and channels

Telegram bot to stream videos in telegram voicechat for both groups and channels. Supports live streams, YouTube videos and telegram media. With record stream support, Schedule streams, and many more.

Amanda-A next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules.
Amanda-A next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules.

Amanda-A next gen powerful telegram group manager bot for manage your groups and have fun with other cool modules.

Telegram bot to stream videos in telegram voicechat for both groups and channels.
Telegram bot to stream videos in telegram voicechat for both groups and channels.

Telegram bot to stream videos in telegram voicechat for both groups and channels. Supports live streams, YouTube videos and telegram media. With record stream support, Schedule streams, and many more.

Add members to unlimited telegram channels and groups
Add members to unlimited telegram channels and groups

Program Features ๐Ÿ“Œ Coded with Python version 10. ๐Ÿ“Œ without the need for a proxy. ๐Ÿ“Œ without the need for a Telegram ID. ๐Ÿ“Œ Ability to add infinite p

Telegram bot to stream videos in telegram Voice Chat for both groups and channels

Telegram bot to stream videos in telegram Voice Chat for both groups and channels. Supports live steams, YouTube videos and telegram media. Supports scheduling streams, recording and many more.

An interactive and multi-function Telegram bot, made especially for Telegram groups.

PyKorone An interaction and fun bot for Telegram groups, having some useful and other useless commands. Created as an experiment and learning bot but

Comments
  • Request: To have more complex csv with data and for nornir_scrapli usecases

    Request: To have more complex csv with data and for nornir_scrapli usecases

    I use more fields in yaml for example of host file below, how can this be documented in CSV? specially for headers like, data: connection_options:, scrapli:, and scrapli_netconf:


    rtr1: hostname: 10.91.11.11 data: interface: TenGigE0/0/0/16 localmepid: 1 remotemepid: 2 rd: 1600 evi: 2600 xrsw: 7.1.2 connection_options: scrapli: platform: cisco_iosxr port: 22 extras: ssh_config_file: True auth_strict_key: False scrapli_netconf: port: 830 extras: ssh_config_file: True auth_strict_key: False

    enhancement 
    opened by jbl241987 5
  • ModuleNotFoundError: No module named 'nornir_csv.plugins'

    ModuleNotFoundError: No module named 'nornir_csv.plugins'

    Hi, thanks for such plugin, I was looking for something like this for sometime. It is really simple, but when I try I get this error

    ModuleNotFoundError: No module named 'nornir_csv.plugins'

    I have the package installed though

    Package Version


    importlib-metadata 4.10.1 mypy-extensions 0.4.3 nornir 3.2.0 nornir-csv 0.1.3

    repo for reference https://github.com/jbl241987/Nornir_Project.git

    opened by jbl241987 5
  • [Bug] Default value handling for Hosts

    [Bug] Default value handling for Hosts

    thanks @matman26 , I will definitely try this option also.

    One more query, I have used hosts.csv as exactly shown in Readme. But i want to remove username and password from hosts.csv and keep only in defaults.csv or groups.csv

    I tried that but that doesn't work. Seems it is mandatory in hosts.csv.

    How can I make it work?

    Originally posted by @jbl241987 in https://github.com/matman26/nornir_csv/issues/2#issuecomment-1019105423

    bug 
    opened by matman26 2
Releases(v0.3)
Owner
Matheus Augusto da Silva
Compulsive-obsessive Bash scripter | Network Programmability and Automation
Matheus Augusto da Silva
This is a open source discord bot project

pythonDiscordBot This is a open source discord bot project #based on the MAX A video: https://www.youtube.com/watch?v=jHZlvRr9KxM Prerequisites Python

Edson Holanda Teixeira Junior 3 Oct 11, 2021
Discord Token Generator of a project - Some stupids ppl are trying to leak it so i'm leaking faster :)

Original creator: Rolf (dort) HCaptcha Bypasser: h0nde Shark.Solar Discord Token Generator of a project - Some stupids ppl are trying to leak it so i'

Stanley 14 Sep 29, 2021
Project developed as part of a selection process for the company Denox

๐Ÿ“ Tabela de conteรบdos Sobre Requisitos para rodar o projeto Instalaรงรฃo Rotas da API Observaรงรตes ๐Ÿง Sobre Projeto desenvolvido como parte de um proces

รcaro Sant'Ana 1 Mar 01, 2022
API which returns cusswords , can be used to check cusswords in bots etc.

Anti-abuse-api-flask API which returns cusswords , can be used to check cusswords in bots etc. Run pip install -r requirements.txt py app.py API Endpo

8 Jan 03, 2023
Powerful Url uploader bot With Mongodb support ๐Ÿ”ฅ

Uploader X Bot Telegram RoBot to Upload Links. Features: ๐Ÿ‘‰ Upload YouTube-dl Supported Links to Telegram. ๐Ÿ‘‰ Upload HTTP/HTTPS as File/Video to Teleg

Cอกlinton Abra๊ซam 250 Jan 06, 2023
A hyper-user friendly bot framework built on hikari

Framework A hyper-user friendly bot framework built on hikari. Framework is based off the blocking discord library disco, In both modularity and struc

Vincent 1 Jan 10, 2022
Instagram Account Creator ๐Ÿฅฐ

Instagram Account Creatorr Instagram account creator that uses requests instead of selenium! Report Bug ยท Request Feature Features Request based Conta

dropout 9 Oct 27, 2021
Asad Alexa VC Bot Is A Telegram Bot Project That's Allow You To Play Audio And Video Music On Telegram Voice Chat Group.

Asad Alexa VC Bot Is A Telegram Bot Project That's Allow You To Play Audio And Video Music On Telegram Voice Chat Group.

Dr Asad Ali 6 Jun 20, 2022
Access LeetCode problems via id

LCid - access LeetCode problems via id Introduction As a world's leading online programming learning platform, LeetCode is quite popular among program

bunnyxt 14 Oct 08, 2022
A simple Discord bot written in Python

Acolyte A small and simple little Discord bot written in Python that utilizes the discord.py library. Dependencies The bot depends on Python 3.9 and u

0 Jul 17, 2021
The Easy-to-use Dialogue Response Selection Toolkit for Researchers

Easy-to-use toolkit for retrieval-based Chatbot Our released data can be found at this link. Make sure the following steps are adopted to use our code

GMFTBY 32 Nov 13, 2022
A discord bot consuming Notion API to add, retrieve data to Notion databases.

Notion-DiscordBot A discord bot consuming Notion API to add and retrieve data from Notion databases. Instructions to use the bot: Pre-Requisites: a)In

Servatom 57 Dec 29, 2022
Total time of all YouTube videos in a playlist.

Youtube Playlist Total Times Total time of all YouTube videos in a playlist. How to Use Download chromedriver depending on your os and chrome version

Mohammad Dori 3 Jul 15, 2022
Template to create a telegram bot in python

Template for Telegram Bot Template to create a telegram bot in python. How to Run Set your telegram bot token as environment variable TELEGRAM_BOT_TOK

Ali Hejazizo 12 Aug 14, 2022
A simple Discord bot wrote with Python. Kizmeow let you track your NFT project and display some useful information

Kizmeow-OpenSea-and-Etherscan-Discord-Bot ไธญๆ–‡็‰ˆ | English Ver A Discord bot wrote with Python. Kizmeow let you track your NFT project and display some u

Xeift 93 Dec 31, 2022
Benachrichtigungs-Bot fรผr das niedersรคchische Impfportal / Notification bot for the lower saxony vaccination portal

Ein kleines Wochenend-Projekt von mir. Der Bot รผberwacht die REST-API des niedersรคchsischen Impfportals auf freie Impfslots und sendet eine Benachrichtigung mit deinem bevorzugtem Service. Ab da gilt

sibalzer 37 May 11, 2022
Python3 library that can retrieve Chrome-based browser's saved login info.

Passax EDUCATIONAL PURPOSES ONLY Python3 library that can retrieve Chrome-based browser's saved login info. Requirements secretstorage~=3.3.1 pywin32=

Auax 1 Jan 25, 2022
This is a free python bot program that crosses you to farm with auto click in space crypto NFT game, having fun :) Creator: Marlon Zanardi

๐Ÿš€ Space Crypto auto click bot ready-to-use ๐Ÿš€ This is a free python bot program that crosses you to farm with auto click in space crypto NFT game, ha

170 Dec 20, 2022
Simple integration between FastAPI and cloud authentication services (AWS Cognito, Auth0, Firebase Authentication).

FastAPI Cloud Auth fastapi-cloudauth standardizes and simplifies the integration between FastAPI and cloud authentication services (AWS Cognito, Auth0

tokusumi 255 Jan 07, 2023