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