Lenovo doc update (#45483)

* Merge issue

* Update cnos_rollback.py

* Updating license for the refactored method

* Update cnos_rollback.py

* Removing the BSD License as suggested by Legal

* To add Documentation for ENOS as well as CNOS

* Merge issue

* Revert "To add Documentation for ENOS as well as CNOS"

This reverts commit 80e6e39054be0c3a8f95d16dc39ca9d93baf8c4b.

* Adding Docs for ENOS and CNOS

* Update cnos.py

* Update cnos_rollback.py

* Update cnos.py

* Update platform_cnos.rst

* Update platform_enos.rst

* Removed version 2.7

* Removing 2.7
This commit is contained in:
Anil Kumar Muraleedharan 2018-09-15 00:53:57 +05:30 committed by Sandra McCann
parent 7aaa5da41d
commit 4ec317ceca
4 changed files with 144 additions and 7 deletions

View file

@ -0,0 +1,69 @@
.. _cnos_platform_options:
***************************************
CNOS Platform Options
***************************************
CNOS supports Enable Mode (Privilege Escalation). This page offers details on how to use Enable Mode on CNOS in Ansible.
.. contents:: Topics
Connections Available
================================================================================
+---------------------------+-----------------------------------------------+
|.. | CLI |
+===========================+===============================================+
| **Protocol** | SSH |
+---------------------------+-----------------------------------------------+
| | **Credentials** | | uses SSH keys / SSH-agent if present |
| | | | accepts ``-u myuser -k`` if using password |
+---------------------------+-----------------------------------------------+
| **Indirect Access** | via a bastion (jump host) |
+---------------------------+-----------------------------------------------+
| | **Connection Settings** | | ``ansible_connection: network_cli`` |
| | | | |
| | | | |
+---------------------------+-----------------------------------------------+
| | **Enable Mode** | | supported - use ``ansible_become: yes`` |
| | (Privilege Escalation) | | with ``ansible_become_method: enable`` |
| | | | and ``ansible_become_pass:`` |
+---------------------------+-----------------------------------------------+
| **Returned Data Format** | ``stdout[0].`` |
+---------------------------+-----------------------------------------------+
For legacy playbooks, CNOS still supports ``ansible_connection: local``. We recommend modernizing to use ``ansible_connection: network_cli`` as soon as possible.
Using CLI in Ansible
================================================================================
Example CLI ``group_vars/cnos.yml``
--------------------------------------------------------------------------------
.. code-block:: yaml
ansible_connection: network_cli
ansible_network_os: cnos
ansible_user: myuser
ansible_ssh_pass: !vault...
ansible_become: yes
ansible_become_method: enable
ansible_become_pass: !vault...
ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q bastion01"'
- If you are using SSH keys (including an ssh-agent) you can remove the ``ansible_ssh_pass`` configuration.
- If you are accessing your host directly (not through a bastion/jump host) you can remove the ``ansible_ssh_common_args`` configuration.
- If you are accessing your host through a bastion/jump host, you cannot include your SSH password in the ``ProxyCommand`` directive. To prevent secrets from leaking out (for example in ``ps`` output), SSH does not support providing passwords via environment variables.
Example CLI Task
----------------
.. code-block:: yaml
- name: Retreive CNOS OS version
cnos_command:
commands: show version
when: ansible_network_os == 'cnos'
.. include:: shared_snippets/SSH_warning.txt

View file

@ -0,0 +1,69 @@
.. _enos_platform_options:
***************************************
ENOS Platform Options
***************************************
ENOS supports Enable Mode (Privilege Escalation). This page offers details on how to use Enable Mode on ENOS in Ansible.
.. contents:: Topics
Connections Available
================================================================================
+---------------------------+-----------------------------------------------+
|.. | CLI |
+===========================+===============================================+
| **Protocol** | SSH |
+---------------------------+-----------------------------------------------+
| | **Credentials** | | uses SSH keys / SSH-agent if present |
| | | | accepts ``-u myuser -k`` if using password |
+---------------------------+-----------------------------------------------+
| **Indirect Access** | via a bastion (jump host) |
+---------------------------+-----------------------------------------------+
| | **Connection Settings** | | ``ansible_connection: network_cli`` |
| | | | |
| | | | |
+---------------------------+-----------------------------------------------+
| | **Enable Mode** | | supported - use ``ansible_become: yes`` |
| | (Privilege Escalation) | | with ``ansible_become_method: enable`` |
| | | | and ``ansible_become_pass:`` |
+---------------------------+-----------------------------------------------+
| **Returned Data Format** | ``stdout[0].`` |
+---------------------------+-----------------------------------------------+
For legacy playbooks, ENOS still supports ``ansible_connection: local``. We recommend modernizing to use ``ansible_connection: network_cli`` as soon as possible.
Using CLI in Ansible
================================================================================
Example CLI ``group_vars/enos.yml``
--------------------------------------------------------------------------------
.. code-block:: yaml
ansible_connection: network_cli
ansible_network_os: enos
ansible_user: myuser
ansible_ssh_pass: !vault...
ansible_become: yes
ansible_become_method: enable
ansible_become_pass: !vault...
ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q bastion01"'
- If you are using SSH keys (including an ssh-agent) you can remove the ``ansible_ssh_pass`` configuration.
- If you are accessing your host directly (not through a bastion/jump host) you can remove the ``ansible_ssh_common_args`` configuration.
- If you are accessing your host through a bastion/jump host, you cannot include your SSH password in the ``ProxyCommand`` directive. To prevent secrets from leaking out (for example in ``ps`` output), SSH does not support providing passwords via environment variables.
Example CLI Task
----------------
.. code-block:: yaml
- name: Retreive ENOS OS version
enos_command:
commands: show version
when: ansible_network_os == 'enos'
.. include:: shared_snippets/SSH_warning.txt

View file

@ -10,6 +10,8 @@ Some Ansible Network platforms support multiple connection types, privilege esca
:maxdepth: 2
:caption: Platform Options
platform_cnos
platform_enos
platform_eos
platform_exos
platform_ios
@ -58,6 +60,10 @@ Settings by Platform
+-------------------+-------------------------+----------------------+----------------------+------------------+------------------+
| Junos OS* | ``junos`` | in v. >=2.5 | in v. >=2.5 | N/A | in v. >=2.4 |
+-------------------+-------------------------+----------------------+----------------------+------------------+------------------+
| Lenovo CNOS | ``cnos`` | in v. >=2.5 | N/A | N/A | in v. >=2.3 |
+-------------------+-------------------------+----------------------+----------------------+------------------+------------------+
| Lenovo ENOS | ``enos`` | in v. >=2.5 | N/A | N/A | in v. >=2.5 |
+-------------------+-------------------------+----------------------+----------------------+------------------+------------------+
| MikroTik RouterOS | ``routeros`` | in v. >=2.7 | N/A | N/A | N/A |
+-------------------+-------------------------+----------------------+----------------------+------------------+------------------+
| Nokia SR OS | ``sros`` | in v. >=2.5 | N/A | N/A | in v. >=2.4 |

View file

@ -1328,10 +1328,6 @@ def interfaceLevel2Config(module, cmd, prompt, answer):
# EOM
# Method Method for enter enable mode
#
def enterEnableModeForDevice(enablePassword, timeout, obj):
command = "enable\n"
pwdPrompt = "password:"
@ -1384,9 +1380,6 @@ def enterEnableModeForDevice(enablePassword, timeout, obj):
return retVal
# EOM
# Method for device response than time delay
#
def waitForDeviceResponse(command, prompt, timeout, obj):
obj.settimeout(int(timeout))