salt.proxy.netmiko_px#

Netmiko#

New in version 2019.2.0.

Proxy module for managing network devices via Netmiko.

codeauthor:

Mircea Ulinic <ping@mirceaulinic.net> & Kirk Byers <ktbyers@twb-tech.com>

maturity:

new

depends:

netmiko

platform:

unix

Dependencies#

The netmiko proxy modules requires Netmiko to be installed: pip install netmiko.

Pillar#

The netmiko proxy configuration requires the following parameters in order to connect to the network device:

  • device_type - Class selection based on device type. Supported options:

    • a10: A10 Networks

    • accedian: Accedian Networks

    • alcatel_aos: Alcatel AOS

    • alcatel_sros: Alcatel SROS

    • apresia_aeos: Apresia AEOS

    • arista_eos: Arista EOS

    • aruba_os: Aruba

    • avaya_ers: Avaya ERS

    • avaya_vsp: Avaya VSP

    • brocade_fastiron: Brocade Fastiron

    • brocade_netiron: Brocade Netiron

    • brocade_nos: Brocade NOS

    • brocade_vdx: Brocade NOS

    • brocade_vyos: VyOS

    • checkpoint_gaia: Check Point GAiA

    • calix_b6: Calix B6

    • ciena_saos: Ciena SAOS

    • cisco_asa: Cisco SA

    • cisco_ios: Cisco IOS

    • cisco_nxos: Cisco NX-oS

    • cisco_s300: Cisco S300

    • cisco_tp: Cisco TpTcCe

    • cisco_wlc: Cisco WLC

    • cisco_xe: Cisco IOS

    • cisco_xr: Cisco XR

    • coriant: Coriant

    • dell_force10: Dell Force10

    • dell_os10: Dell OS10

    • dell_powerconnect: Dell PowerConnect

    • eltex: Eltex

    • enterasys: Enterasys

    • extreme: Extreme

    • extreme_wing: Extreme Wing

    • f5_ltm: F5 LTM

    • fortinet: Fortinet

    • generic_termserver: TerminalServer

    • hp_comware: HP Comware

    • hp_procurve: HP Procurve

    • huawei: Huawei

    • huawei_vrpv8: Huawei VRPV8

    • juniper: Juniper Junos

    • juniper_junos: Juniper Junos

    • linux: Linux

    • mellanox: Mellanox

    • mrv_optiswitch: MrvOptiswitch

    • netapp_cdot: NetAppcDot

    • netscaler: Netscaler

    • ovs_linux: OvsLinux

    • paloalto_panos: PaloAlto Panos

    • pluribus: Pluribus

    • quanta_mesh: Quanta Mesh

    • ruckus_fastiron: Ruckus Fastiron

    • ubiquiti_edge: Ubiquiti Edge

    • ubiquiti_edgeswitch: Ubiquiti Edge

    • vyatta_vyos: VyOS

    • vyos: VyOS

    • brocade_fastiron_telnet: Brocade Fastiron over Telnet

    • brocade_netiron_telnet: Brocade Netiron over Telnet

    • cisco_ios_telnet: Cisco IOS over Telnet

    • apresia_aeos_telnet: Apresia AEOS over Telnet

    • arista_eos_telnet: Arista EOS over Telnet

    • hp_procurve_telnet: HP Procurve over Telnet

    • hp_comware_telnet: HP Comware over Telnet

    • juniper_junos_telnet: Juniper Junos over Telnet

    • calix_b6_telnet: Calix B6 over Telnet

    • dell_powerconnect_telnet: Dell PowerConnect over Telnet

    • generic_termserver_telnet: TerminalServer over Telnet

    • extreme_telnet: Extreme Networks over Telnet

    • ruckus_fastiron_telnet: Ruckus Fastiron over Telnet

    • cisco_ios_serial: Cisco IOS over serial port

  • ip - IP address of target device (not required if host is provided)

  • host - Hostname of target device (not required if ip is provided)

  • username - Username to authenticate against target device, if required

  • password - Password to authenticate against target device, if required

  • secret - The enable password if target device requires one

  • port - The destination port used to connect to the target device

  • global_delay_factor - Multiplication factor affecting Netmiko delays (default: 1)

  • use_keys - Connect to target device using SSH keys (default: False)

  • key_file - Filename path of the SSH key file to use

  • allow_agent - Enable use of SSH key-agent

  • ssh_strict - Automatically reject unknown SSH host keys (default: False, which means unknown SSH host keys will be accepted)

  • system_host_keys - Load host keys from the user's "known_hosts" file (default: False)

  • alt_host_keys - If True, host keys will be loaded from the file specified in alt_key_file (default: False)

  • alt_key_file - SSH host key file to use (if alt_host_keys=True)

  • ssh_config_file - File name of OpenSSH configuration file

  • timeout - Connection timeout, in seconds (default: 90)

  • session_timeout - Set a timeout for parallel requests, in seconds (default: 60)

  • keepalive - Interval, in seconds, at which to send SSH KEEPALIVE packets on a currently open connection so the remote device does not drop the session for inactivity. Currently defaults to 0 for backwards compatibility (no KEEPALIVE packets are sent). This option only takes effect while a connection is open; it does not influence whether a new connection is opened. To control whether the proxy keeps a single persistent connection or reconnects per call, use always_alive (see below).

  • default_enter - Character(s) to send to correspond to enter key (default: \n)

  • response_return - Character(s) to use in normalized return data to represent enter key (default: \n)

  • always_alive - Controls connection lifecycle. When True (the default), the proxy opens a single SSH session on start-up and reuses it for every call. When False, the proxy opens a fresh SSH session for each call and closes it on completion -- useful in less dynamic environments, when the target device has aggressive idle timers, or when many proxies share a single connection limit on the device. This setting governs whether a connection is opened at all; the keepalive setting governs whether KEEPALIVE packets are sent on an open connection.

  • multiprocessing - Overrides the multiprocessing option, per proxy minion, as the Netmiko communication channel is mainly SSH (default: False)

  • connection_timeout - The number of seconds to attempt to connect to the device in seconds. (default: 300)

Proxy Pillar Example#

proxy:
  proxytype: netmiko
  device_type: juniper_junos
  host: router1.example.com
  username: example
  password: example
proxy:
  proxytype: netmiko
  device_type: cisco_ios
  ip: 1.2.3.4
  username: test
  use_keys: true
  secret: w3@k
salt.proxy.netmiko_px.alive(opts)#

Return the connection status with the network device.

salt.proxy.netmiko_px.args()#

Return the Netmiko device args.

salt.proxy.netmiko_px.call(method, *args, **kwargs)#

Calls an arbitrary netmiko method.

salt.proxy.netmiko_px.conn()#

Return the connection object.

salt.proxy.netmiko_px.connection(connection_timeout=300)#
salt.proxy.netmiko_px.init(opts)#

Open the connection to the network device managed through netmiko.

salt.proxy.netmiko_px.initialized()#

Connection finished initializing?

salt.proxy.netmiko_px.make_con(connection_timeout=300)#
salt.proxy.netmiko_px.ping()#

Connection open successfully?

salt.proxy.netmiko_px.shutdown(opts)#

Closes connection with the device.