salt.modules.arista_pyeapi#
Arista pyeapi#
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.
- codeauthor:
Mircea Ulinic <ping@mirceaulinic.net>
- maturity:
new
- depends:
pyeapi
- platform:
unix
Note
To understand how to correctly enable the eAPI on your switch, please check https://eos.arista.com/arista-eapi-101/.
Dependencies#
The pyeapi Execution module requires the Python Client for eAPI (pyeapi) to
be installed: pip install pyeapi.
Usage#
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:
- transport:
https Specifies the type of connection transport to use. Valid values for the connection are
socket,http_local,http, andhttps.- host:
localhost The IP address or DNS host name of the connection device.
- username:
admin The username to pass to the device to authenticate the eAPI connection.
- password
The password to pass to the device to authenticate the eAPI connection.
- port
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 (
80forhttp, or443forhttps).- enablepwd
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.
- salt.modules.arista_pyeapi.call(method, *args, **kwargs)#
Invoke an arbitrary pyeapi method.
- method
The name of the pyeapi method to invoke.
- args
A list of arguments to send to the method invoked.
- kwargs
Key-value dictionary to send to the method invoked.
- transport:
https Specifies the type of connection transport to use. Valid values for the connection are
socket,http_local,http, andhttps.Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.- host:
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
pyeapiProxy Minion.- username:
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
pyeapiProxy Minion.- password
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
pyeapiProxy Minion.- port
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 (
80forhttp, or443forhttps).Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.- enablepwd
The enable mode password if required by the destination node.
Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.
CLI Example:
salt '*' pyeapi.call run_commands "['show version']"
- salt.modules.arista_pyeapi.config(commands=None, config_file=None, template_engine='jinja', context=None, defaults=None, saltenv='base', **kwargs)#
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.
- config_file
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://orhttps://ftp://s3://swift://
- commands
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_fileis specified.- template_engine:
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 toNone.- context
Variables to add to the template context.
- defaults
Default values of the
contextdict.- transport:
https Specifies the type of connection transport to use. Valid values for the connection are
socket,http_local,http, andhttps.Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.- host:
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
pyeapiProxy Minion.- username:
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
pyeapiProxy Minion.- password
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
pyeapiProxy Minion.- port
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 (
80forhttp, or443forhttps).Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.- enablepwd
The enable mode password if required by the destination node.
Note
This argument does not need to be specified when running in a
pyeapiProxy 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']}"
- salt.modules.arista_pyeapi.get_config(config='running-config', params=None, as_string=False, **kwargs)#
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.
- config:
running-config Specifies to return either the nodes
startup-configorrunning-config. The default value is therunning-config.- params
A string of keywords to append to the command for retrieving the config.
- as_string:
False Flag that determines the response. If
True, then the configuration is returned as a raw string. IfFalse, then the configuration is returned as a list. The default value isFalse.- transport:
https Specifies the type of connection transport to use. Valid values for the connection are
socket,http_local,http, andhttps.Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.- host:
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
pyeapiProxy Minion.- username:
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
pyeapiProxy Minion.- password
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
pyeapiProxy Minion.- port
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 (
80forhttp, or443forhttps).Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.- enablepwd
The enable mode password if required by the destination node.
Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.
CLI Example:
salt '*' pyeapi.get_config salt '*' pyeapi.get_config params='section snmp-server' salt '*' pyeapi.get_config config='startup-config'
- config:
- salt.modules.arista_pyeapi.get_connection(**kwargs)#
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.
- kwargs
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'])
- salt.modules.arista_pyeapi.run_commands(*commands, **kwargs)#
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()orenable().- transport:
https Specifies the type of connection transport to use. Valid values for the connection are
socket,http_local,http, andhttps.Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.- host:
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
pyeapiProxy Minion.- username:
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
pyeapiProxy Minion.- password
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
pyeapiProxy Minion.- port
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 (
80forhttp, or443forhttps).Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.- enablepwd
The enable mode password if required by the destination node.
Note
This argument does not need to be specified when running in a
pyeapiProxy 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- transport:
- salt.modules.arista_pyeapi.section(regex, config='running-config', **kwargs)#
Return a section of the config.
- regex
A valid regular expression used to select sections of configuration to return.
- config:
running-config The configuration to return. Valid values for config are
running-configorstartup-config. The default value isrunning-config.- transport:
https Specifies the type of connection transport to use. Valid values for the connection are
socket,http_local,http, andhttps.Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.- host:
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
pyeapiProxy Minion.- username:
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
pyeapiProxy Minion.- password
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
pyeapiProxy Minion.- port
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 (
80forhttp, or443forhttps).Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.- enablepwd
The enable mode password if required by the destination node.
Note
This argument does not need to be specified when running in a
pyeapiProxy Minion.
CLI Example:
salt '*'