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 | ||||
|    command-scripting | ||||
|    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