diff --git a/ansible/roles/nova/tasks/external-ceph.yml b/ansible/roles/nova/tasks/external-ceph.yml
index 79363106bf074e6242d24352673b7e90dd53f03f..2ce1bfca5750f278efab7fe91a32bfc4f8d335b9 100644
--- a/ansible/roles/nova/tasks/external-ceph.yml
+++ b/ansible/roles/nova/tasks/external-ceph.yml
@@ -12,12 +12,15 @@
   local_action: stat path="{{ node_custom_config }}/nova/ceph.client.nova.keyring"
   register: nova_cephx_keyring_file
   failed_when: not nova_cephx_keyring_file.stat.exists
+  when: external_ceph_cephx_enabled | bool
 
 - name: Check cinder keyring file
   local_action: stat path="{{ node_custom_config }}/nova/ceph.client.cinder.keyring"
   register: cinder_cephx_keyring_file
   failed_when: not cinder_cephx_keyring_file.stat.exists
-  when: cinder_backend_ceph | bool
+  when:
+    - cinder_backend_ceph | bool
+    - external_ceph_cephx_enabled | bool
 
 # NOTE: nova-compute and nova-libvirt only need ceph.client.nova.keyring.
 - name: Copy over ceph nova keyring file
@@ -27,7 +30,9 @@
   with_items:
     - nova-compute
     - nova-libvirt
-  when: inventory_hostname in groups['compute']
+  when:
+    - inventory_hostname in groups['compute']
+    - external_ceph_cephx_enabled | bool
 
 - name: Copy over ceph.conf
   copy:
@@ -57,11 +62,14 @@
 - name: Extract nova key from file
   local_action: shell cat "{{ nova_cephx_keyring_file.stat.path }}" | grep -E 'key\s*=' | awk '{ print $3 }'
   register: nova_cephx_raw_key
+  when: external_ceph_cephx_enabled | bool
 
 - name: Extract cinder key from file
   local_action: shell cat "{{ cinder_cephx_keyring_file.stat.path }}" | grep -E 'key\s*=' | awk '{ print $3 }'
   register: cinder_cephx_raw_key
-  when: cinder_backend_ceph | bool
+  when:
+    - cinder_backend_ceph | bool
+    - external_ceph_cephx_enabled | bool
 
 - name: Pushing secrets key for libvirt
   copy:
@@ -71,6 +79,7 @@
   when:
     - inventory_hostname in groups['compute']
     - item.enabled | bool
+    - external_ceph_cephx_enabled | bool
   with_items:
     - uuid: "{{ rbd_secret_uuid }}"
       content: "{{ nova_cephx_raw_key.stdout }}"
diff --git a/ansible/roles/nova/templates/nova.conf.j2 b/ansible/roles/nova/templates/nova.conf.j2
index e40e8d51b035512220ffd43b51927bcf705ceda9..83d592291a2a1a3597010389f964a57860f21de5 100644
--- a/ansible/roles/nova/templates/nova.conf.j2
+++ b/ansible/roles/nova/templates/nova.conf.j2
@@ -192,7 +192,7 @@ disk_cachemodes="network=writeback"
 hw_disk_discard = {{ nova_hw_disk_discard }}
 {% endif %}
 {% endif %}
-{% if nova_backend == "rbd" %}
+{% if nova_backend == "rbd" and external_ceph_cephx_enabled | bool %}
 rbd_secret_uuid = {{ rbd_secret_uuid }}
 {% endif %}
 
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 6f952b6c92131974f670f2cb899c77f4bf35e5ff..e3438869396366f6d9c5137326146dea8e45e4d7 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -207,6 +207,9 @@ kolla_internal_vip_address: "10.10.10.254"
 # Set to no if using external Ceph without cephx.
 #external_ceph_cephx_enabled: "yes"
 
+# Set to no if using external Ceph without cephx.
+#external_ceph_cephx_enabled: "yes"
+
 # Ceph is not able to determine the size of a cache pool automatically,
 # so the configuration on the absolute size is required here, otherwise the flush/evict will not work.
 #ceph_target_max_bytes: ""