Napalm
VyOS supports some napalm functions for configuration and op-mode. It requires more tests.
Install napalm-vyos
module
apt install python3-pip
pip3 install napalm
pip3 install napalm-vyos
Op-mode
#!/usr/bin/env python3
import json
from napalm import get_network_driver
driver = get_network_driver('vyos')
vyos_router = driver(
hostname="192.0.2.1",
username="vyos",
password="vyospass",
optional_args={"port": 22},
)
vyos_router.open()
output = vyos_router.get_facts()
print(json.dumps(output, indent=4))
output = vyos_router.get_arp_table()
print(json.dumps(output, indent=4))
vyos_router.close()
Output op-mode
$ ./vyos-napalm.py
{
"uptime": 7185,
"vendor": "VyOS",
"os_version": "1.3.0-rc5",
"serial_number": "",
"model": "Standard PC (Q35 + ICH9, 2009)",
"hostname": "r4-1.3",
"fqdn": "vyos.local",
"interface_list": [
"eth0",
"eth1",
"eth2",
"lo",
"vtun10"
]
}
[
{
"interface": "eth1",
"mac": "52:54:00:b2:38:2c",
"ip": "192.0.2.2",
"age": 0.0
},
{
"interface": "eth0",
"mac": "52:54:00:a2:b9:5b",
"ip": "203.0.113.11",
"age": 0.0
}
]
Configuration
We need 2 files, commands.conf and script itself.
Content of commands.conf
set service ssh disable-host-validation
set service ssh port '2222'
set system name-server '192.0.2.8'
set system name-server '203.0.113.8'
set interfaces ethernet eth1 description 'FOO'
Script vyos-napalm.py
#!/usr/bin/env python3
from napalm import get_network_driver
driver = get_network_driver('vyos')
vyos_router = driver(
hostname="192.0.2.1",
username="vyos",
password="vyospass",
optional_args={"port": 22},
)
vyos_router.open()
vyos_router.load_merge_candidate(filename='commands.conf')
diffs = vyos_router.compare_config()
if bool(diffs) == True:
print(diffs)
vyos_router.commit_config()
else:
print('No configuration changes to commit')
vyos_router.discard_config()
vyos_router.close()
Output
$./vyos-napalm.py
[edit interfaces ethernet eth1]
+description FOO
[edit service ssh]
+disable-host-validation
+port 2222
[edit system]
+name-server 192.0.2.8
+name-server 203.0.113.8
[edit]