Add options for jumphost in netconf connetion

Fixes #37262
Fixes #36284

*  Updates options in netconf connection to enable
   bastion/jump host setting using configuration/enviornment
   varaibles.
*  Update troubleshooting docs from using bastion host with netconf
   connection
pull/42271/head
Ganesh B. Nalawade 6 years ago
parent 08ddd202fb
commit 8d8d4b3d86

@ -597,6 +597,41 @@ no additional changes necessary. The network module will now connect to the
network device by first connecting to the host specified in network device by first connecting to the host specified in
``ansible_ssh_common_args``, which is ``bastion01`` in the above example. ``ansible_ssh_common_args``, which is ``bastion01`` in the above example.
Using bastion/jump host with netconf connection
-----------------------------------------------
Enabling jump host setting
--------------------------
Bastion/jump host with netconf connection can be enable using
- Setting Ansible variable``ansible_netconf_ssh_config`` or
- Setting environment variable ``ANSIBLE_NETCONF_SSH_CONFIG`` or
- Setting ``ssh_config=Ture`` under ``netconf_connection`` section in ansible configuration file
The ssh config file (~/.ssh/config) should have the correct proxycommand and required ssh configuration variables
Example ssh config file (~/.ssh/config)
---------------------------------------
.. code-block:: ini
Host junoshost
HostName junos01
User myuser
ProxyCommand ssh user@bastion01 nc %h %p %r
Example Ansible inventory file
.. code-block:: ini
[junos]
junoshost
[junos:vars]
ansible_connection=netconf
ansible_network_os=junos
ansible_user=myuser
ansible_ssh_pass=!vault...
.. note:: Using ``ProxyCommand`` with passwords via variables .. note:: Using ``ProxyCommand`` with passwords via variables

@ -1632,4 +1632,12 @@ YAML_FILENAME_EXTENSIONS:
- section: defaults - section: defaults
key: yaml_valid_extensions key: yaml_valid_extensions
type: list type: list
NETCONF_SSH_CONFIG:
description: This variable is used to enable bastion/jump host with netconf connection. The bastion/jump
host ssh settings should be present in ssh configuration file (~/.ssh/config).
env: [{name: ANSIBLE_NETCONF_SSH_CONFIG}]
ini:
- {key: ssh_config, section: netconf_connection}
yaml: {key: netconf_connection.ssh_config}
type: boolean
... ...

@ -152,6 +152,21 @@ options:
key: command_timeout key: command_timeout
env: env:
- name: ANSIBLE_PERSISTENT_COMMAND_TIMEOUT - name: ANSIBLE_PERSISTENT_COMMAND_TIMEOUT
netconf_ssh_config:
type: boolean
default: False
description:
- This variable is used to enable bastion/jump host with netconf connection. The bastion/jump
host ssh settings should be present in ssh configuration file (~/.ssh/config).
ini:
- section: netconf_connection
key: ssh_config
version_added: '2.7'
env:
- name: ANSIBLE_NETCONF_SSH_CONFIG
vars:
- name: ansible_netconf_ssh_config
version_added: '2.7'
""" """
import os import os
@ -248,7 +263,7 @@ class Connection(NetworkConnectionBase):
device_params = {'name': NETWORK_OS_DEVICE_PARAM_MAP.get(self._network_os) or self._network_os} device_params = {'name': NETWORK_OS_DEVICE_PARAM_MAP.get(self._network_os) or self._network_os}
ssh_config = os.getenv('ANSIBLE_NETCONF_SSH_CONFIG', False) ssh_config = self.get_option('netconf_ssh_config')
if ssh_config in BOOLEANS_TRUE: if ssh_config in BOOLEANS_TRUE:
ssh_config = True ssh_config = True
else: else:

Loading…
Cancel
Save