Proxy minion for managing network devices via NAPALM library.
| codeauthor: | Mircea Ulinic <mircea@cloudflare.com> & Jerome Fleury <jf@cloudflare.com> |
|---|---|
| maturity: | new |
| depends: | napalm |
| platform: | unix |
The napalm proxy module requires NAPALM library to be installed: pip install napalm
Please check Installation for complete details.
Note
Beginning with Salt release 2017.7.3, it is recommended to use
napalm >= 2.0.0. The library has been unified into a monolithic
package, as in opposite to separate packages per driver. For more details
you can check this document.
While it will still work with the old packages, bear in mind that the NAPALM
core team will maintain only the main napalm package.
Moreover, for additional capabilities, the users can always define a
library that extends NAPALM’s base capabilities and configure the
provider option (see below).
The napalm proxy configuration requires the following parameters in order to connect to the network device:
hostname, fqdn, ip.The password needed to establish the connection.
Note
This field may not be mandatory when working with SSH-based drivers, and the username has a SSH key properly configured on the device targeted to be managed.
TrueIn certain less dynamic environments, maintaining the remote connection permanently
open with the network device is not always beneficial. In that case, the user can
select to initialize the connection only when needed, by specifying this field to false.
Default: true (maintains the connection with the remote network device).
New in version 2017.7.0.
napalm_baseThe library that provides the get_network_device function.
This option is useful when the user has more specific needs and requires
to extend the NAPALM capabilities using a private library implementation.
The only constraint is that the alternative library needs to have the
get_network_device function available.
New in version 2017.7.1.
FalseOverrides the multiprocessing option, per proxy minion.
The multiprocessing option must be turned off for SSH-based proxies.
However, some NAPALM drivers (e.g. Arista, NX-OS) are not SSH-based.
As multiple proxy minions may share the same configuration file,
this option permits the configuration of the multiprocessing option
more specifically, for some proxy minions.
New in version 2017.7.2.
Proxy pillar file example:
proxy:
proxytype: napalm
driver: junos
host: core05.nrt02
username: my_username
passwd: my_password
optional_args:
port: 12201
Example using a user-specific library, extending NAPALM’s capabilities, e.g. custom_napalm_base:
proxy:
proxytype: napalm
driver: ios
fqdn: cr1.th2.par.as1234.net
username: salt
password: ''
provider: custom_napalm_base
See also
NAPALM grains: select network devices based on their characteristicsNET module: network basic featuresNetwork config state: Manage the configuration using arbitrary templatesNAPALM YANG state: Manage the configuration according to the YANG models (OpenConfig/IETF)Network ACL module: Generate and load ACL (firewall) configurationNetwork ACL state: Manage the firewall configurationNTP operational and configuration management moduleBGP operational and configuration management moduleRoutes detailsSNMP configuration moduleUsers configuration managementNew in version 2016.11.0.
salt.proxy.napalm.alive(opts)¶Return the connection status with the remote device.
New in version 2017.7.0.
salt.proxy.napalm.call(method, *args, **kwargs)¶Calls a specific method from the network driver instance. Please check the readthedocs page for the updated list of getters.
| Parameters: |
|
|---|---|
| Returns: | A dictionary with three keys: |
Example:
__proxy__['napalm.call']('cli'
**{
'commands': [
'show version',
'show chassis fan'
]
})
salt.proxy.napalm.fns()¶Method called by NAPALM grains module.
salt.proxy.napalm.get_device()¶Returns the network device object.
salt.proxy.napalm.get_grains()¶Retrieve facts from the network device.
salt.proxy.napalm.grains_refresh()¶Refresh the grains.
salt.proxy.napalm.init(opts)¶Opens the connection with the network device.
salt.proxy.napalm.initialized()¶Connection finished initializing?
salt.proxy.napalm.ping()¶Connection open successfully?
salt.proxy.napalm.shutdown(opts)¶Closes connection with the device.
Docs for previous releases are available on readthedocs.org.
Latest Salt release: 2018.3.3