summaryrefslogtreecommitdiff
path: root/docs/automation/vyos-napalm.rst
diff options
context:
space:
mode:
authorViacheslav <v.gletenko@vyos.io>2021-08-16 17:03:23 +0300
committerrebortg <github@ghlr.de>2021-08-19 20:31:39 +0200
commitde8d5228fb4d99d808eb5ba53a798570542b2022 (patch)
tree8a4fbed382a60d2c21c1f8f92694362570bb2c64 /docs/automation/vyos-napalm.rst
parentb0497191f7db7a5a37448ed7ba1f74321d0e2abc (diff)
downloadvyos-documentation-de8d5228fb4d99d808eb5ba53a798570542b2022.tar.gz
vyos-documentation-de8d5228fb4d99d808eb5ba53a798570542b2022.zip
automate: Add netmiko and napalm examples
(cherry picked from commit d687f9e5623843b075522b3484d58e5ab6c7dc86)
Diffstat (limited to 'docs/automation/vyos-napalm.rst')
-rw-r--r--docs/automation/vyos-napalm.rst144
1 files changed, 144 insertions, 0 deletions
diff --git a/docs/automation/vyos-napalm.rst b/docs/automation/vyos-napalm.rst
new file mode 100644
index 00000000..5ff7c01f
--- /dev/null
+++ b/docs/automation/vyos-napalm.rst
@@ -0,0 +1,144 @@
+: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 \ No newline at end of file