mirror of
				https://github.com/vyos/vyos-documentation.git
				synced 2025-10-26 08:41:46 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			216 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			216 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| :lastproofread: 2023-01-16
 | |
| 
 | |
| .. _vyos-salt:
 | |
| 
 | |
| .. include:: /_include/need_improvement.txt
 | |
| 
 | |
| Salt
 | |
| ====
 | |
| 
 | |
| VyOS supports op-mode and configuration via salt_.
 | |
| 
 | |
| Without proxy it requires VyOS minion configuration
 | |
| and supports op-mode data:
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   set service salt-minion id 'r14'
 | |
|   set service salt-minion master '192.0.2.250'
 | |
| 
 | |
| Check salt-keys on the salt master
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # salt-key --list-all
 | |
|   Accepted Keys:
 | |
|   r11
 | |
|   Denied Keys:
 | |
|   Unaccepted Keys:
 | |
|   r14
 | |
|   Rejected Keys:
 | |
| 
 | |
| Accept minion key
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # salt-key --accept r14
 | |
|   The following keys are going to be accepted:
 | |
|   Unaccepted Keys:
 | |
|   r14
 | |
|   Proceed? [n/Y] y
 | |
|   Key for minion r14 accepted.
 | |
| 
 | |
| 
 | |
| 
 | |
| Check that salt master can communicate with minions
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # salt '*' test.ping
 | |
|   r14:
 | |
|       True
 | |
|   r11:
 | |
|       True
 | |
| 
 | |
| At this step we can get some op-mode information from VyOS nodes:
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # salt '*' network.interface eth0
 | |
|   r11:
 | |
|       |_
 | |
|         ----------
 | |
|         address:
 | |
|             192.0.2.11
 | |
|         broadcast:
 | |
|             192.0.2.255
 | |
|         label:
 | |
|             eth0
 | |
|         netmask:
 | |
|             255.255.255.0
 | |
|   r14:
 | |
|       |_
 | |
|         ----------
 | |
|         address:
 | |
|             192.0.2.14
 | |
|         broadcast:
 | |
|             192.0.2.255
 | |
|         label:
 | |
|             eth0
 | |
|         netmask:
 | |
|             255.255.255.0
 | |
| 
 | |
| 
 | |
|   / # salt r14 network.arp
 | |
|   r14:
 | |
|       ----------
 | |
|       aa:bb:cc:dd:f3:db:
 | |
|           192.0.2.1
 | |
|       aa:bb:cc:dd:2e:80:
 | |
|           203.0.113.1
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| Netmiko-proxy
 | |
| -------------
 | |
| 
 | |
| It is possible to configure VyOS via netmiko_ proxy module.
 | |
| It requires a minion with installed packet  ``python3-netmiko`` module
 | |
| who has a connection to VyOS nodes. Salt-minion have to communicate
 | |
| with salt master
 | |
| 
 | |
| Configuration
 | |
| ^^^^^^^^^^^^^
 | |
| 
 | |
| Salt master configuration:
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # cat /etc/salt/master
 | |
|   file_roots:
 | |
|     base:
 | |
|       - /srv/salt/states
 | |
| 
 | |
|   pillar_roots:
 | |
|     base:
 | |
|       - /srv/salt/pillars
 | |
| 
 | |
| Structure of /srv/salt:
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # tree /srv/salt/
 | |
|   /srv/salt/
 | |
|   |___ pillars
 | |
|   |      |__ r11-proxy.sls
 | |
|   |      |__ top.sls
 | |
|   |___ states
 | |
|          |__ commands.txt
 | |
| 
 | |
| top.sls
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # cat /srv/salt/pillars/top.sls
 | |
|   base:
 | |
|     r11-proxy:
 | |
|       - r11-proxy
 | |
| 
 | |
| 
 | |
| r11-proxy.sls Includes parameters for connecting to salt-proxy minion
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # cat /srv/salt/pillars/r11-proxy.sls 
 | |
|   proxy:
 | |
|     proxytype: netmiko # how to connect to proxy minion, change it
 | |
|     device_type: vyos  # 
 | |
|     host: 192.0.2.250
 | |
|     username: user
 | |
|     password: secret_passwd
 | |
| 
 | |
| commands.txt
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # cat /srv/salt/states/commands.txt 
 | |
|   set interfaces ethernet eth0 description 'WAN'
 | |
|   set interfaces ethernet eth1 description 'LAN'
 | |
| 
 | |
| Check that proxy minion is alive:
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # salt r11-proxy test.ping
 | |
|   r11-proxy:
 | |
|       True
 | |
|   / #
 | |
| 
 | |
| Examples
 | |
| ^^^^^^^^
 | |
| 
 | |
| Example of op-mode:
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # salt r11-proxy netmiko.send_command 'show interfaces ethernet eth0 brief' host=192.0.2.14 device_type=vyos username=vyos password=vyos
 | |
|   r11-proxy:
 | |
|       Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
 | |
|       Interface        IP Address                        S/L  Description
 | |
|       ---------        ----------                        ---  -----------
 | |
|       eth0             192.0.2.14/24                     u/u  Upstream
 | |
|   / # 
 | |
| 
 | |
| Example of configuration:
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # salt r11-proxy netmiko.send_config config_commands=['set interfaces ethernet eth0 description Link_to_WAN'] commit=True host=192.0.2.14 device_type=vyos username=vyos password=vyos
 | |
|   r11-proxy:
 | |
|       configure
 | |
|       set interfaces ethernet eth0 description Link_to_WAN
 | |
|       [edit]
 | |
|       vyos@r14# commit
 | |
|       [edit]
 | |
|       vyos@r14#
 | |
|   / #
 | |
| 
 | |
| Example of configuration commands from the file "/srv/salt/states/commands.txt"
 | |
| 
 | |
| .. code-block:: none
 | |
| 
 | |
|   / # salt r11-proxy netmiko.send_config config_file=salt://commands.txt commit=True host=192.0.2.11 device_type=vyos username=vyos password=vyos
 | |
|   r11-proxy:
 | |
|       configure
 | |
|       set interfaces ethernet eth0 description 'WAN'
 | |
|       [edit]
 | |
|       vyos@r1# set interfaces ethernet eth1 description 'LAN'
 | |
|       [edit]
 | |
|       vyos@r1# commit
 | |
|       [edit]
 | |
|       vyos@r1#
 | |
|   / #
 | |
| 
 | |
| .. _salt: https://docs.saltproject.io/en/latest/contents.html
 | |
| .. _netmiko: https://docs.saltproject.io/en/latest/ref/modules/all/salt.modules.netmiko_mod.html#module-salt.modules.netmiko_mod |