Commit 83a13a88 authored by Bill Grant's avatar Bill Grant

baseconfig working

parent 5ded6a49
! Base configuration
!
hostname {{ hostname }}
ip name-server {{ defaults.nameserver1 }}
ip name-server {{ defaults.nameserver2 }}
ip domain-name {{ defaults.domainname }}
!
ntp source Management1
ntp server {{ defaults.ntpserver1 }} prefer
ntp server {{ defaults.ntpserver2 }}
!
username admin role network-admin secret {{ defaults.password }}
!
clock timezone {{ site.timezone }}
!
vrf definition management
!
! Use https in production
!
management api http-commands
protocol http
no shutdown
!
vrf management
no shutdown
!
interface Management1
vrf forwarding management
ip address {{ host.managementip }}
!
ip route vrf management 0.0.0.0/0 {{ host.managementgw }}
!
end
\ No newline at end of file
! Base configuration
!
hostname leaf-1
ip name-server 8.8.8.8
ip name-server 8.8.4.4
ip domain-name example.net
!
ntp source Management1
ntp server 0.pool.ntp.org prefer
ntp server 1.pool.ntp.org
!
username admin role network-admin secret admin
!
clock timezone America/New_York
!
vrf definition management
!
! Use https in production
!
management api http-commands
protocol http
no shutdown
!
vrf management
no shutdown
!
interface Management1
vrf forwarding management
ip address 198.51.100.252/24
!
ip route vrf management 0.0.0.0/0 198.51.100.1
!
end
\ No newline at end of file
! Base configuration
!
hostname leaf-2
ip name-server 8.8.8.8
ip name-server 8.8.4.4
ip domain-name example.net
!
ntp source Management1
ntp server 0.pool.ntp.org prefer
ntp server 1.pool.ntp.org
!
username admin role network-admin secret admin
!
clock timezone America/New_York
!
vrf definition management
!
! Use https in production
!
management api http-commands
protocol http
no shutdown
!
vrf management
no shutdown
!
interface Management1
vrf forwarding management
ip address 198.51.100.251/24
!
ip route vrf management 0.0.0.0/0 198.51.100.1
!
end
\ No newline at end of file
! Base configuration
!
hostname spine-1
ip name-server 8.8.8.8
ip name-server 8.8.4.4
ip domain-name example.net
!
ntp source Management1
ntp server 0.pool.ntp.org prefer
ntp server 1.pool.ntp.org
!
username admin role network-admin secret admin
!
clock timezone America/New_York
!
vrf definition management
!
! Use https in production
!
management api http-commands
protocol http
no shutdown
!
vrf management
no shutdown
!
interface Management1
vrf forwarding management
ip address 198.51.100.254/24
!
ip route vrf management 0.0.0.0/0 198.51.100.1
!
end
\ No newline at end of file
! Base configuration
!
hostname spine-2
ip name-server 8.8.8.8
ip name-server 8.8.4.4
ip domain-name example.net
!
ntp source Management1
ntp server 0.pool.ntp.org prefer
ntp server 1.pool.ntp.org
!
username admin role network-admin secret admin
!
clock timezone America/New_York
!
vrf definition management
!
! Use https in production
!
management api http-commands
protocol http
no shutdown
!
vrf management
no shutdown
!
interface Management1
vrf forwarding management
ip address 198.51.100.253/24
!
ip route vrf management 0.0.0.0/0 198.51.100.1
!
end
\ No newline at end of file
#!/usr/bin/env python3
from jinja2 import Environment, FileSystemLoader
import yaml
class ConfigureLeafSpine():
"""Class to configure and maintain leaf spine switches"""
def __init__(
self,
hosts,
groups,
baseconfig
):
with open(hosts) as file1:
self.hosts = yaml.load(file1)
with open(groups) as file2:
self.groups = yaml.load(file2)
self.baseconfig = baseconfig
self.ENV = Environment(loader=FileSystemLoader('.'))
def generatebaseconfig(self):
"""Generates base configuration files"""
template = self.ENV.get_template(self.baseconfig)
for key, value in self.hosts.items():
config = template.render(
defaults=self.groups['defaults'],
hostname=key,
host=value,
site=self.groups[value['site']]
)
filename = 'configs/{0}-base.config'.format(key)
with open(filename, 'w') as file:
file.writelines(config)
if __name__ == "__main__":
lsconfig = ConfigureLeafSpine(
'hosts.yaml',
'groups.yaml',
'baseconfig.j2'
)
lsconfig.generatebaseconfig()
---
defaults:
domain: example.net
ntpserver1: 0.pool.ntp.org
ntpserver2: 1.pool.ntp.org
nameserver1: 8.8.8.8
nameserver2: 8.8.4.4
domainname: example.net
username: admin
password: admin
ny:
timezone: America/New_York
arista_eos:
nos: eos
iprouting: True
lldp: True
---
spine-1:
managementip: 198.51.100.254/24
managementgw: 198.51.100.1
site: ny
spine-2:
managementip: 198.51.100.253/24
managementgw: 198.51.100.1
site: ny
leaf-1:
managementip: 198.51.100.252/24
managementgw: 198.51.100.1
site: ny
leaf-2:
managementip: 198.51.100.251/24
managementgw: 198.51.100.1
site: ny
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment