https://github.com/cmsirbu/gencfg
A script that applies csv data to configuration templates (in jinja2 format)
https://github.com/cmsirbu/gencfg
Last synced: 4 months ago
JSON representation
A script that applies csv data to configuration templates (in jinja2 format)
- Host: GitHub
- URL: https://github.com/cmsirbu/gencfg
- Owner: cmsirbu
- License: mit
- Created: 2016-03-03T13:59:21.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-03-13T16:35:05.000Z (over 9 years ago)
- Last Synced: 2025-10-28T10:06:39.395Z (8 months ago)
- Language: Python
- Size: 8.79 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gencfg
A Python (works in both 2 and 3) script that applies csv data to configuration templates (in jinja2 format).
## Requirements
- [Python](https://www.python.org/)
- [Jinja2](http://jinja.pocoo.org/)
To install dependencies, run `pip install -r requirements.txt` after cloning the repo (or `pip3` if running under python3).
## Usage
Script has two modes:
1. Generate a `csv` header from a template file: `t.py csvheader -t template.j2`
2. Generate device configuration based on a template and data: `t.py gencfg -t template.j2 -d data.csv`
The `csv` file MUST have a header row defining the variables used in the template and all of the variables must be present. Any extra columns will be ignored.
## Example
With the template in `example.j2`:
```
!
hostname {{ROUTER_HOSTNAME}}
!
!
no ip domain lookup
no ip http server
no ip http secure-server
ip ssh source-interface Loopback0
ip ssh version 2
!
!
ip vrf {{VRF_NAME}}
description {{CUSTOMER_NAME}} {{VRF_NAME}}
!
!
interface Loopback0
description Management interface
ip vrf forwarding {{VRF_NAME}}
ip address {{PRIMARY_MGMT_LOOPBACK}} 255.255.255.255
!
```
And data in `example.csv`:
```
ID,CUSTOMER_NAME,PRIMARY_MGMT_LOOPBACK,ROUTER_HOSTNAME,VRF_NAME
1,Mega Super Market,10.0.255.1,msmarket-brtr-1,MSM
2,Mega Super Market,10.0.255.2,msmarket-brtr-2,MSM
3,Mega Super Market,10.0.255.3,msmarket-brtr-3,MSM
4,Mega Super Market,10.0.255.4,msmarket-brtr-4,MSM
5,Mega Super Market,10.0.255.5,msmarket-brtr-5,MSM
6,Mega Super Market,10.0.255.6,msmarket-brtr-6,MSM
7,Mega Super Market,10.0.255.7,msmarket-brtr-7,MSM
8,Mega Super Market,10.0.255.8,msmarket-brtr-8,MSM
9,Mega Super Market,10.0.255.9,msmarket-brtr-9,MSM
10,Mega Super Market,10.0.255.10,msmarket-brtr-10,MSM
```
The result of running `t.py gencfg -t example.j2 -d example.csv` will be `10` files in the `config` subdirectory. For example, `cfg-4` will contain:
```
!
hostname msmarket-brtr-4
!
!
no ip domain lookup
no ip http server
no ip http secure-server
ip ssh source-interface Loopback0
ip ssh version 2
!
!
ip vrf MSM
description Mega Super Market MSM
!
!
interface Loopback0
description Management interface
ip vrf forwarding MSM
ip address 10.0.255.4 255.255.255.255
```