mirror of
https://github.com/vyos/vyos-documentation.git
synced 2025-10-26 08:41:46 +01:00
commit
abca9c0c20
@ -17,3 +17,5 @@ VyOS Automation
|
|||||||
vyos-salt
|
vyos-salt
|
||||||
command-scripting
|
command-scripting
|
||||||
cloud-init
|
cloud-init
|
||||||
|
vyos-pyvyos
|
||||||
|
|
||||||
|
|||||||
148
docs/automation/vyos-pyvyos.rst
Normal file
148
docs/automation/vyos-pyvyos.rst
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
:lastproofread: 2023-12-15
|
||||||
|
|
||||||
|
.. _vyos-pyvyos:
|
||||||
|
|
||||||
|
PyVyOS
|
||||||
|
======
|
||||||
|
|
||||||
|
PyVyOS is a Python library for interacting with VyOS devices via their API.
|
||||||
|
This documentation guides you on using PyVyOS to manage your VyOS devices programmatically.
|
||||||
|
The complete PyVyOS documentation is available on [Read the Docs](https://pyvyos.readthedocs.io/en/latest/),
|
||||||
|
and the library can be found on [GitHub](https://github.com/robertoberto/pyvyos)
|
||||||
|
and [PyPI](https://pypi.org/project/pyvyos/).
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
|
||||||
|
You can install PyVyOS using pip:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pip install pyvyos
|
||||||
|
|
||||||
|
Getting Started
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Importing and Disabling Warnings for verify=False
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
import urllib3
|
||||||
|
urllib3.disable_warnings()
|
||||||
|
|
||||||
|
Using API Response Class
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class ApiResponse:
|
||||||
|
status: int
|
||||||
|
request: dict
|
||||||
|
result: dict
|
||||||
|
error: str
|
||||||
|
|
||||||
|
Initializing a VyDevice Object
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
hostname = os.getenv('VYDEVICE_HOSTNAME')
|
||||||
|
apikey = os.getenv('VYDEVICE_APIKEY')
|
||||||
|
port = os.getenv('VYDEVICE_PORT')
|
||||||
|
protocol = os.getenv('VYDEVICE_PROTOCOL')
|
||||||
|
verify_ssl = os.getenv('VYDEVICE_VERIFY_SSL')
|
||||||
|
|
||||||
|
verify = verify_ssl.lower() == "true" if verify_ssl else True
|
||||||
|
|
||||||
|
device = VyDevice(hostname=hostname, apikey=apikey, port=port, protocol=protocol, verify=verify)
|
||||||
|
|
||||||
|
Using PyVyOS
|
||||||
|
------------
|
||||||
|
|
||||||
|
Configure, then Set
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
response = device.configure_set(path=["interfaces", "ethernet", "eth0", "address", "192.168.1.1/24"])
|
||||||
|
if not response.error:
|
||||||
|
print(response.result)
|
||||||
|
|
||||||
|
Configure, then Show a Single Object Value
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
response = device.retrieve_return_values(path=["interfaces", "dummy", "dum1", "address"])
|
||||||
|
print(response.result)
|
||||||
|
|
||||||
|
Configure, then Show Object
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
response = device.retrieve_show_config(path=[])
|
||||||
|
if not response.error:
|
||||||
|
print(response.result)
|
||||||
|
|
||||||
|
Configure, then Delete Object
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
response = device.configure_delete(path=["interfaces", "dummy", "dum1"])
|
||||||
|
|
||||||
|
Configure, then Save
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
response = device.config_file_save()
|
||||||
|
|
||||||
|
Configure, then Save File
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
response = device.config_file_save(file="/config/test300.config")
|
||||||
|
|
||||||
|
Show Object
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
response = device.show(path=["system", "image"])
|
||||||
|
print(response.result)
|
||||||
|
|
||||||
|
Generate Object
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
randstring = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(20))
|
||||||
|
keyrand = f'/tmp/key_{randstring}'
|
||||||
|
response = device.generate(path=["ssh", "client-key", keyrand])
|
||||||
|
|
||||||
|
Reset Object
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
response = device.reset(path=["conntrack-sync", "internal-cache"])
|
||||||
|
if not response.error:
|
||||||
|
print(response.result)
|
||||||
|
|
||||||
|
Configure, then Load File
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
response = device.config_file_load(file="/config/test300.config")
|
||||||
|
|
||||||
|
|
||||||
|
.. _pyvyos: https://github.com/robertoberto/pyvyos
|
||||||
Loading…
x
Reference in New Issue
Block a user