mirror of
https://github.com/vyos/vyos-documentation.git
synced 2025-10-26 08:41:46 +01:00
144 lines
2.6 KiB
ReStructuredText
144 lines
2.6 KiB
ReStructuredText
:lastproofread: 2023-01-16
|
|
|
|
.. _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 |