Viacheslav de8d5228fb automate: Add netmiko and napalm examples
(cherry picked from commit d687f9e5623843b075522b3484d58e5ab6c7dc86)
2021-08-19 20:31:39 +02:00

144 lines
2.6 KiB
ReStructuredText

:lastproofread: 2021-06-28
.. _vyos-napalm:
Napalm
======
VyOS supports some napalm_ functions for configuration and op-mode.
It requires more tests.
Install ``napalm-vyos`` module
.. code-block:: none
apt install python3-pip
pip3 install napalm
pip3 install napalm-vyos
Op-mode
-------
.. code-block:: none
#!/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
.. code-block:: none
$ ./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
.. code-block:: none
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
.. code-block:: none
#!/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
.. code-block:: none
$./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]
.. _napalm: https://napalm.readthedocs.io/en/latest/base.html