Dell OS6 network switch series

This page describes configuration of Dell switch series N1000, N2000, N3000 running Dell OS6 network OS.

Initial switch configuration

Connecting to the switch

To monitor and configure the switch via the USB console, use the console port on the front panel of the switch to connect it to a computer running VT100 terminal emulation software using the supplied USB cable. It may be necessary to download and install a driver on first use of the USB cable.

Perform the following tasks to connect a terminal to the switch console port:

  • Connect the USB type B connector on the supplied switch and connect the other end to a computer running VT100 terminal emulation software.

  • The Linux PC will create a new serial USB device:

    /dev/ttyUSB0
    

    Change device permissions:

    chmod 666 /dev/ttyUSB0
    

    Connect using minicom (or screen):

    minicom -D /dev/ttyUSB0
    
  • Configure the terminal emulation software as follows:

    • Select the appropriate serial port (for example, COM 1) to connect to the console.

    • Set the data rate to 115,200 baud.

    • Set the data format to 8 data bits, 1 stop bit, and no parity.

    • Set the flow control to none.

    • Set the terminal emulation mode to VT100.

    • Select Terminal keys for Function, Arrow, and Ctrl keys. Make sure that the setting is for Terminal keys (not Microsoft Windows keys).

Initial setup

When connected through the serial port go to the enable mode and then to the configure mode:

console>enable
console#configure
console(config)#

Now create an administrator user name:

console(config)#username admin password (secret-pwd) privilege 15

Set the hostname and gateway:

console(config)#hostname switchname
switchname(config)#ip default-gateway 10.2.128.2

The switch MAC-address for DHCP is printed on the service tag pull-out tab on the front of the switch cabinet.

It can also be learned from the CLI:

show ip interface
Burned In MAC Address.......................... E4F0.046D.14A0

Fixed IP address:

switchname(config)#interface vlan 1
switchname(config-if-vlan1)#ip address none     # Disables DHCP client
switchname(config-if-vlan1)#ip address 10.2.128.61 /16   # Fixed IP address
switchname(config-if-vlan1)#exit

For dynamic IP address by DHCP:

switchname(config)#interface vlan 1
switchname(config-if-vlan1)#ip address dhcp     # Enable DHCP client
switchname(config-if-vlan1)#exit

SSH enable

SSH and SSH keys setup:

crypto key zeroize rsa
crypto key zeroize dsa
crypto key generate rsa
crypto key generate dsa
ip ssh protocol 2
ip ssh server
ip telnet server disable
show ip ssh

Now you should be able to connect to the switch using SSH from a server:

$ ssh admin@switchname

Write configuration to NVRAM

Remember to write the configuration to NVRAM in enable mode:

console(config)#exit
console#write

Ansible configuration

See our main Ansible configuration of Linux servers and desktops page to get started.

Ansible modules for automation of Dell EMC Networking OS6 switches:

Relevant roles from Ansible_Galaxy:

Install Dell-Networking roles by:

ansible-galaxy install Dell-Networking.dellos-system
ansible-galaxy install Dell-Networking.dellos-snmp
ansible-galaxy install Dell-Networking.dellos-ntp
ansible-galaxy install Dell-Networking.dellos-interface
ansible-galaxy install Dell-Networking.dellos-vlan
ansible-galaxy install Dell-Networking.dellos-users

Using the network_cli connection

See the blog https://www.ansible.com/blog/porting-ansible-network-playbooks-with-new-connection-plugins about the new network_cli connection.

First set up the switches for DHCP client IP address and SSH logins as shown above.

Define switches and variables in /etc/ansible/hosts for configuration connection:

# Dell Poweredge N1100 series switches
[DellN1100]
switchname

[DellN1100:vars]
ansible_network_os=dellos6
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=
ansible_user=admin
ansible_password=<secret!>

Dellos6 bugs

There are (as of Jan. 2019) some bugs which you must fix.

In /usr/lib/python2.7/site-packages/ansible/modules/network/dellos6/dellos6_config.py fix the yes answer to become y:

# diff -u /usr/lib/python2.7/site-packages/ansible/modules/network/dellos6/dellos6_config.py.orig /usr/lib/python2.7/site-packages/ansible/modules/network/dellos6/dellos6_config.py
--- /usr/lib/python2.7/site-packages/ansible/modules/network/dellos6/dellos6_config.py.orig   2018-12-13 22:14:39.000000000 +0100
+++ /usr/lib/python2.7/site-packages/ansible/modules/network/dellos6/dellos6_config.py        2019-01-03 11:17:45.322096619 +0100
@@ -287,7 +287,7 @@
         result['changed'] = True
         if not module.check_mode:
                 cmd = {'command': 'copy running-config startup-config',
-                       'prompt': r'\(y/n\)\s?$', 'answer': 'yes'}
+                       'prompt': r'\(y/n\)\s?$', 'answer': 'y'}
                 run_commands(module, [cmd])
                 result['saved'] = True
         else:

Dellos6 example

We will use the hosts [DellN1100] defined in /etc/ansible/hosts as shown above.

Go to your Ansible root directory, for example:

cd ~/ansible

Create files in the host_vars directory with SNMP location and any other host-specific information for each switch, for example host_vars/switchname.yml:

location: "DK:Lyngby:Building:Room:Rack:Slot"

Please note that semicolon (;) apparently will be stripped from Ansible strings. We have not found any way to protect/escape the ; character.

Create the group file group_vars/DellN1100.yml with variables that are common to all DellN1100 switches and which will be used by the Dell networking roles:

ntp_server: 10.54.1.2
contact: support@your.domain
snmp_server: 10.54.1.1

dellos_system:
  hostname: "{{ inventory_hostname }}"

dellos_snmp:
  snmp_contact: "{{ contact }}"
  snmp_location: "{{ location }}"
  snmp_host:
    - ip: "{{ snmp_server }}"
      version: "2c"
      communitystring: "public"
      state: present
  snmp_community:
    - name: public
      access_mode: ro
      state: present

dellos_ntp:
  server:
    -  ip: "{{ ntp_server }}"

Create the Ansible playbook file DellN1100.yml containing some pre_tasks which must be run before the Dell Ansible roles:

- hosts: DellN1100
  connection: network_cli
  gather_facts: no
  pre_tasks:
    - name: Set SSH Exec Timeout
      dellos6_config:
        lines: ['exec-timeout 600']
        parents: ['line ssh']
        match: exact

    - name: Set console Exec Timeout
      dellos6_config:
        lines: ['exec-timeout 600']
        parents: ['line console']
        match: exact

    - name: Set Timezone
      dellos6_config:
        lines:
          - 'clock summer-time recurring EU'
          - 'clock timezone 1 minutes 0'
        match: line

    - name: Disable telnet server
      dellos6_config:
        lines: ['ip telnet server disable']
        match: line

    - name: Disable http port 80 server
      dellos6_config:
        lines: ['no ip http server']
        match: line

    - name: Enable sntp unicast client
      dellos6_config:
        lines: ['sntp unicast client enable']
        match: line

  roles:
    - Dell-Networking.dellos-snmp
    - Dell-Networking.dellos-system
    - Dell-Networking.dellos-ntp

  post_tasks:
  - name: "Save running configuration to NVRAM, and make a backup"
    dellos6_config:
      backup: yes
      save: yes

The post_tasks performed at the end writes to configuration to NVRAM and makes a backup on the Ansible server in the backup/ directory.

Run this playbook:

ansible-playbook DellN1100.yml

Firmware upgrade

Ansible roles for upgrading the switch firmware exist only for the OS10 switch series, not for OS6 switches. See https://galaxy.ansible.com/dell-networking/dellos-image-upgrade

You may install the role:

ansible-galaxy install Dell-Networking.dellos-image-upgrade