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
This commit is contained in:
Ganesh B. Nalawade 2018-07-03 23:54:26 +05:30
parent 08ddd202fb
commit 8d8d4b3d86
3 changed files with 59 additions and 1 deletions

View file

@ -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
``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

View file

@ -1632,4 +1632,12 @@ YAML_FILENAME_EXTENSIONS:
- section: defaults
key: yaml_valid_extensions
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
...

View file

@ -152,6 +152,21 @@ options:
key: command_timeout
env:
- 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
@ -248,7 +263,7 @@ class Connection(NetworkConnectionBase):
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:
ssh_config = True
else: