diff --git a/ansible/physical-network.yml b/ansible/physical-network.yml index f9137856d..06a4a4ef0 100644 --- a/ansible/physical-network.yml +++ b/ansible/physical-network.yml @@ -27,6 +27,7 @@ - arista - dellos6 - dellos9 + - dellos10 - dell-powerconnect - junos - mellanox @@ -111,7 +112,7 @@ arista_switch_interface_config: "{{ switch_interface_config }}" - name: Ensure DellOS physical switches are configured - hosts: switches_of_type_dellos6:switches_of_type_dellos9:&switches_in_display_mode_False + hosts: switches_of_type_dellos6:switches_of_type_dellos9:switches_of_type_dellos10:&switches_in_display_mode_False gather_facts: no roles: - role: ssh-known-host diff --git a/ansible/roles/dell-switch/README.md b/ansible/roles/dell-switch/README.md index dc763d40c..b98d9d7d2 100644 --- a/ansible/roles/dell-switch/README.md +++ b/ansible/roles/dell-switch/README.md @@ -1,10 +1,10 @@ Dell Switch =========== -This role configures Dell switches using the `dellos6` or `dellos9` Ansible -modules. It provides a fairly minimal abstraction of the configuration -interface provided by the `dellos` modules, allowing for application of -arbitrary switch configuration options. +This role configures Dell switches using the `dellos6`, `dellos9`, or +`dellos10` Ansible modules. It provides a fairly minimal abstraction of the +configuration interface provided by the `dellos` modules, allowing for +application of arbitrary switch configuration options. Requirements ------------ @@ -14,7 +14,8 @@ The switches should be configured to allow SSH access. Role Variables -------------- -`dell_switch_type` is the type of Dell switch. One of `dellos6`, `dellos9`. +`dell_switch_type` is the type of Dell switch. One of `dellos6`, `dellos9`, or +`dellos10`. `dell_switch_provider` is authentication provider information passed as the `provider` argument to the `dellos` modules. diff --git a/ansible/roles/dell-switch/defaults/main.yml b/ansible/roles/dell-switch/defaults/main.yml index 07bec1a39..f642dd325 100644 --- a/ansible/roles/dell-switch/defaults/main.yml +++ b/ansible/roles/dell-switch/defaults/main.yml @@ -1,5 +1,5 @@ --- -# Type of Dell switch. One of dellos6, dellos9. +# Type of Dell switch. One of dellos6, dellos9, or dellos10. dell_switch_type: # Authentication provider information. diff --git a/ansible/roles/dell-switch/tasks/main.yml b/ansible/roles/dell-switch/tasks/main.yml index 4166ed714..07fd3d923 100644 --- a/ansible/roles/dell-switch/tasks/main.yml +++ b/ansible/roles/dell-switch/tasks/main.yml @@ -12,3 +12,10 @@ provider: "{{ dell_switch_provider }}" src: dellos9-config.j2 when: dell_switch_type == 'dellos9' + +- name: Ensure DellOS10 switches are configured + local_action: + module: dellos10_config + provider: "{{ dell_switch_provider }}" + src: "{{ lookup('template', 'dellos10-config.j2') }}" + when: dell_switch_type == 'dellos10' diff --git a/ansible/roles/dell-switch/templates/dellos10-config.j2 b/ansible/roles/dell-switch/templates/dellos10-config.j2 new file mode 100644 index 000000000..94c9dc068 --- /dev/null +++ b/ansible/roles/dell-switch/templates/dellos10-config.j2 @@ -0,0 +1,16 @@ +#jinja2: trim_blocks: True,lstrip_blocks: True + +{% for line in dell_switch_config %} +{{ line }} +{% endfor %} + +{% for interface, config in dell_switch_interface_config.items() %} +interface {{ interface }} +{% if config.description is defined %} +description {{ config.description }} +{% endif %} +{% for line in config.config %} +{{ line }} +{% endfor %} +exit +{% endfor %} diff --git a/doc/source/configuration/reference/physical-network.rst b/doc/source/configuration/reference/physical-network.rst index 298b7ec05..7bfde2ddb 100644 --- a/doc/source/configuration/reference/physical-network.rst +++ b/doc/source/configuration/reference/physical-network.rst @@ -19,6 +19,7 @@ The following switch operating systems are currently supported: `__) * Dell OS 6 * Dell OS 9 +* Dell OS 10 * Dell PowerConnect * Juniper Junos OS * Mellanox MLNX OS @@ -213,13 +214,13 @@ default connection parameters used by Ansible: * ``ansible_user`` is the SSH username. -Dell OS6 and OS9 ----------------- +Dell OS6, OS9, and OS10 +----------------------- -Configuration for these devices is applied using the ``dellos6_config`` and -``dellos9_config`` Ansible modules. +Configuration for these devices is applied using the ``dellos6_config``, +``dellos9_config``, and ``dellos10_config`` Ansible modules. -``switch_type`` should be set to ``dellos6`` or ``dellos9``. +``switch_type`` should be set to ``dellos6``, ``dellos9``, or ``dellos10``. Provider ^^^^^^^^ diff --git a/releasenotes/notes/dellos10-support-31e209bcdb45552a.yaml b/releasenotes/notes/dellos10-support-31e209bcdb45552a.yaml new file mode 100644 index 000000000..09f03211e --- /dev/null +++ b/releasenotes/notes/dellos10-support-31e209bcdb45552a.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Adds support for configuring Dell OS10 Switches using the `dellemc.os10 + Ansible collection `__. This is + integrated with the ``kayobe physical network configure`` command. diff --git a/requirements.txt b/requirements.txt index bab4725ed..c02408183 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,3 +7,4 @@ PyYAML>=3.10.0 # MIT selinux # MIT # INI parsing oslo.config>=5.2.0 # Apache-2.0 +paramiko # LGPL diff --git a/requirements.yml b/requirements.yml index 9b33384e5..6c48cffd6 100644 --- a/requirements.yml +++ b/requirements.yml @@ -3,6 +3,9 @@ collections: - name: https://opendev.org/openstack/ansible-collection-kolla type: git version: master + - name: dellemc.os10 + version: 1.1.1 + roles: - src: ahuffman.resolv version: 1.3.1