diff --git a/ansible/roles/nclu-switch/templates/nclu-config.j2 b/ansible/roles/nclu-switch/templates/nclu-config.j2
index 8177e892086122d84d4722b7e2e6b303feac382b..96d1bdc06d71a7ce3962d57ccefec49da877e942 100644
--- a/ansible/roles/nclu-switch/templates/nclu-config.j2
+++ b/ansible/roles/nclu-switch/templates/nclu-config.j2
@@ -4,10 +4,10 @@
 {% endfor %}
 
 {% for interface, config in nclu_switch_interface_config.items() %}
-{% if config.description is defined %}
-add {{ config.type | default("interface") }} {{ interface }} alias {{ config.description }}
-{% endif %}
 {% for line in config.config %}
 add {{ config.type | default("interface") }} {{ interface }} {{ line }}
 {% endfor %}
+{% if config.description is defined %}
+add {{ config.type | default("interface") }} {{ interface }} alias {{ config.description }}
+{% endif %}
 {% endfor %}
diff --git a/releasenotes/notes/nclu-order-dc4cb33d633b73a2.yaml b/releasenotes/notes/nclu-order-dc4cb33d633b73a2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..68c45f34e62aac31299c539def8ced33e6b0258b
--- /dev/null
+++ b/releasenotes/notes/nclu-order-dc4cb33d633b73a2.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Fixes an issue with nclu-switch command ordering, when description was
+    applied first to a non-existent (virtual) interface. See `story 2010279
+    <https://storyboard.openstack.org/#!/story/2010279>`__ for details.