New in version 2019.2.0.
Execution module to interface the connection with Arista switches, connecting to
the remote network device using the
pyeapi library. It is
flexible enough to execute the commands both when running under an Arista Proxy
Minion, as well as running under a Regular Minion by specifying the connection
arguments, i.e., device_type
, host
, username
, password
etc.
Mircea Ulinic <ping@mirceaulinic.net>
new
pyeapi
unix
Note
To understand how to correctly enable the eAPI on your switch, please check https://eos.arista.com/arista-eapi-101/.
The pyeapi
Execution module requires the Python Client for eAPI (pyeapi) to
be installed: pip install pyeapi
.
This module can equally be used via the pyeapi
Proxy module or directly from an arbitrary (Proxy) Minion that is running on a
machine having access to the network device API, and the pyeapi
library is
installed.
When running outside of the pyeapi Proxy
(i.e., from another Proxy Minion type, or regular Minion), the pyeapi connection
arguments can be either specified from the CLI when executing the command, or
in a configuration block under the pyeapi
key in the configuration opts
(i.e., (Proxy) Minion configuration file), or Pillar. The module supports these
simultaneously. These fields are the exact same supported by the pyeapi
Proxy Module:
https
Specifies the type of connection transport to use. Valid values for the
connection are socket
, http_local
, http
, and https
.
localhost
The IP address or DNS host name of the connection device.
admin
The username to pass to the device to authenticate the eAPI connection.
The password to pass to the device to authenticate the eAPI connection.
The TCP port of the endpoint for the eAPI connection. If this keyword is
not specified, the default value is automatically determined by the
transport type (80
for http
, or 443
for https
).
The enable mode password if required by the destination node.
Example (when not running in a pyeapi
Proxy Minion):
pyeapi:
username: test
password: test
In case the username
and password
are the same on any device you are
targeting, the block above (besides other parameters specific to your
environment you might need) should suffice to be able to execute commands from
outside a pyeapi
Proxy, e.g.:
salt '*' pyeapi.run_commands 'show version' 'show interfaces'
salt '*' pyeapi.config 'ntp server 1.2.3.4'
Note
Remember that the above applies only when not running in a pyeapi
Proxy
Minion. If you want to use the pyeapi Proxy
,
please follow the documentation notes for a proper setup.
Invoke an arbitrary pyeapi method.
The name of the pyeapi method to invoke.
A list of arguments to send to the method invoked.
Key-value dictionary to send to the method invoked.
https
Specifies the type of connection transport to use. Valid values for the
connection are socket
, http_local
, http
, and https
.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
localhost
The IP address or DNS host name of the connection device.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
admin
The username to pass to the device to authenticate the eAPI connection.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The password to pass to the device to authenticate the eAPI connection.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The TCP port of the endpoint for the eAPI connection. If this keyword is
not specified, the default value is automatically determined by the
transport type (80
for http
, or 443
for https
).
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The enable mode password if required by the destination node.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
CLI Example:
salt '*' pyeapi.call run_commands "['show version']"
Configures the node with the specified commands.
This method is used to send configuration commands to the node. It will take either a string or a list and prepend the necessary commands to put the session into config mode.
Returns the diff after the configuration commands are loaded.
The source file with the configuration commands to be sent to the device.
The file can also be a template that can be rendered using the template engine of choice.
This can be specified using the absolute path to the file, or using one of the following URL schemes:
salt://
, to fetch the file from the Salt fileserver.
http://
or https://
ftp://
s3://
swift://
The commands to send to the node in config mode. If the commands argument is a string it will be cast to a list. The list of commands will also be prepended with the necessary commands to put the session in config mode.
Note
This argument is ignored when config_file
is specified.
jinja
The template engine to use when rendering the source file. Default:
jinja
. To simply fetch the file without attempting to render, set
this argument to None
.
Variables to add to the template context.
Default values of the context
dict.
https
Specifies the type of connection transport to use. Valid values for the
connection are socket
, http_local
, http
, and https
.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
localhost
The IP address or DNS host name of the connection device.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
admin
The username to pass to the device to authenticate the eAPI connection.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The password to pass to the device to authenticate the eAPI connection.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The TCP port of the endpoint for the eAPI connection. If this keyword is
not specified, the default value is automatically determined by the
transport type (80
for http
, or 443
for https
).
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The enable mode password if required by the destination node.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
CLI Example:
salt '*' pyeapi.config commands="['ntp server 1.2.3.4', 'ntp server 5.6.7.8']"
salt '*' pyeapi.config config_file=salt://config.txt
salt '*' pyeapi.config config_file=https://bit.ly/2LGLcDy context="{'servers': ['1.2.3.4']}"
Retrieves the config from the device.
This method will retrieve the config from the node as either a string or a list object. The config to retrieve can be specified as either the startup-config or the running-config.
running-config
Specifies to return either the nodes startup-config
or running-config
. The default value is the running-config
.
A string of keywords to append to the command for retrieving the config.
False
Flag that determines the response. If True
, then the configuration
is returned as a raw string. If False
, then the configuration is
returned as a list. The default value is False
.
https
Specifies the type of connection transport to use. Valid values for the
connection are socket
, http_local
, http
, and https
.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
localhost
The IP address or DNS host name of the connection device.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
admin
The username to pass to the device to authenticate the eAPI connection.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The password to pass to the device to authenticate the eAPI connection.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The TCP port of the endpoint for the eAPI connection. If this keyword is
not specified, the default value is automatically determined by the
transport type (80
for http
, or 443
for https
).
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The enable mode password if required by the destination node.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
CLI Example:
salt '*' pyeapi.get_config
salt '*' pyeapi.get_config params='section snmp-server'
salt '*' pyeapi.get_config config='startup-config'
Return the connection object to the pyeapi Node.
Warning
This function returns an unserializable object, hence it is not meant to be used on the CLI. This should mainly be used when invoked from other modules for the low level connection with the network device.
Key-value dictionary with the authentication details.
USAGE Example:
conn = __salt__['pyeapi.get_connection'](host='router1.example.com',
username='example',
password='example')
show_ver = conn.run_commands(['show version', 'show interfaces'])
Sends the commands over the transport to the device.
This function sends the commands to the device using the nodes
transport. This is a lower layer function that shouldn't normally
need to be used, preferring instead to use config()
or enable()
.
https
Specifies the type of connection transport to use. Valid values for the
connection are socket
, http_local
, http
, and https
.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
localhost
The IP address or DNS host name of the connection device.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
admin
The username to pass to the device to authenticate the eAPI connection.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The password to pass to the device to authenticate the eAPI connection.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The TCP port of the endpoint for the eAPI connection. If this keyword is
not specified, the default value is automatically determined by the
transport type (80
for http
, or 443
for https
).
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The enable mode password if required by the destination node.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
CLI Example:
salt '*' pyeapi.run_commands 'show version'
salt '*' pyeapi.run_commands 'show version' encoding=text
salt '*' pyeapi.run_commands 'show version' encoding=text host=cr1.thn.lon username=example password=weak
Output example:
veos1:
|_
----------
architecture:
i386
bootupTimestamp:
1527541728.53
hardwareRevision:
internalBuildId:
63d2e89a-220d-4b8a-a9b3-0524fa8f9c5f
internalVersion:
4.18.1F-4591672.4181F
isIntlVersion:
False
memFree:
501468
memTotal:
1893316
modelName:
vEOS
serialNumber:
systemMacAddress:
52:54:00:3f:e6:d0
version:
4.18.1F
Return a section of the config.
A valid regular expression used to select sections of configuration to return.
running-config
The configuration to return. Valid values for config are
running-config
or startup-config
. The default value is
running-config
.
https
Specifies the type of connection transport to use. Valid values for the
connection are socket
, http_local
, http
, and https
.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
localhost
The IP address or DNS host name of the connection device.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
admin
The username to pass to the device to authenticate the eAPI connection.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The password to pass to the device to authenticate the eAPI connection.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The TCP port of the endpoint for the eAPI connection. If this keyword is
not specified, the default value is automatically determined by the
transport type (80
for http
, or 443
for https
).
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
The enable mode password if required by the destination node.
Note
This argument does not need to be specified when running in a
pyeapi
Proxy Minion.
CLI Example:
salt '*'