diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 438e68d949c87378882bfbe2669a47de1925ebbf..65d43c88539b8fb08ddba77b3b5a199aceb77856 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -329,6 +329,10 @@ openstack_auth:
     project_name: "admin"
     domain_name: "default"
 
+# Endpoint type used to connect with OpenStack services with ansible modules.
+# Valid options are [ public, internal, admin ]
+openstack_interface: "admin"
+
 # These roles are required for Kolla to be operation, however a savvy deployer
 # could disable some of these required roles and run their own services.
 enable_glance: "yes"
diff --git a/ansible/roles/aodh/tasks/register.yml b/ansible/roles/aodh/tasks/register.yml
index 2f722f1060806cc93b135184bb45dab32d4bfa04..8e7bab40d01de1dbf55dfdf0c65bbf27fa4cc030 100644
--- a/ansible/roles/aodh/tasks/register.yml
+++ b/ansible/roles/aodh/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_aodh_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_aodh_auth: "{{ openstack_aodh_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_aodh_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_aodh_auth: "{{ openstack_aodh_auth }}"
   run_once: True
diff --git a/ansible/roles/barbican/tasks/register.yml b/ansible/roles/barbican/tasks/register.yml
index 4fa214c42fb71f9effbc6492db4d7d54fca6961e..82fc928a60bc2a5154a1cfac181de3635e70452e 100644
--- a/ansible/roles/barbican/tasks/register.yml
+++ b/ansible/roles/barbican/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_barbican_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_barbican_auth: "{{ openstack_barbican_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_barbican_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_barbican_auth: "{{ openstack_barbican_auth }}"
   run_once: True
@@ -39,6 +41,7 @@
     module_args:
       name: "{{ item }}"
       auth: "{{ '{{ openstack_barbican_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_barbican_auth: "{{ openstack_barbican_auth }}"
   run_once: True
diff --git a/ansible/roles/ceilometer/tasks/register.yml b/ansible/roles/ceilometer/tasks/register.yml
index 2f81202f47ce769a5747a90b186bed362cb90ee5..0904cbad2fd1a6baccf35bf537c2af3c93738a2a 100644
--- a/ansible/roles/ceilometer/tasks/register.yml
+++ b/ansible/roles/ceilometer/tasks/register.yml
@@ -9,6 +9,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_ceilometer_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
      openstack_ceilometer_auth: "{{ openstack_ceilometer_auth }}"
   run_once: True
@@ -22,6 +23,7 @@
       role: "ResellerAdmin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_ceilometer_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
      openstack_ceilometer_auth: "{{ openstack_ceilometer_auth }}"
   when: enable_swift | bool
diff --git a/ansible/roles/ceph/tasks/start_rgw_keystone.yml b/ansible/roles/ceph/tasks/start_rgw_keystone.yml
index b611a0fad85f75101dd6528af4c261327bb11157..aac281a6f90774b123481807b356ebb482c377f5 100644
--- a/ansible/roles/ceph/tasks/start_rgw_keystone.yml
+++ b/ansible/roles/ceph/tasks/start_rgw_keystone.yml
@@ -16,6 +16,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_swift_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_swift_auth: "{{ openstack_swift_auth }}"
   run_once: True
@@ -34,6 +35,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_ceph_rgw_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_ceph_rgw_auth: "{{ openstack_swift_auth }}"
   run_once: True
diff --git a/ansible/roles/cinder/tasks/check.yml b/ansible/roles/cinder/tasks/check.yml
index 939ca6d34c5cb7e51a6aa968c77c28942f8d3a65..0f3ca0df6cd50721cc708c54d7e664175b496977 100644
--- a/ansible/roles/cinder/tasks/check.yml
+++ b/ansible/roles/cinder/tasks/check.yml
@@ -7,6 +7,7 @@
       state: present
       size: 1
       display_name: kolla_test_volume
+      endpoint_type: "{{ openstack_interface }}"
   run_once: True
   delegate_to: "{{ groups['cinder-api'][0] }}"
   when: kolla_enable_sanity_cinder | bool
@@ -18,6 +19,7 @@
       auth: "{{ openstack_cinder_auth }}"
       state: absent
       display_name: kolla_test_volume
+      endpoint_type: "{{ openstack_interface }}"
   run_once: True
   delegate_to: "{{ groups['cinder-api'][0] }}"
   when: kolla_enable_sanity_cinder | bool
diff --git a/ansible/roles/cinder/tasks/register.yml b/ansible/roles/cinder/tasks/register.yml
index bf09801092773ec536457db4a31d2d707740f483..abdccbdf0d4500747e4b5c407062a1607ba22a05 100644
--- a/ansible/roles/cinder/tasks/register.yml
+++ b/ansible/roles/cinder/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_cinder_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_cinder_auth: "{{ openstack_cinder_auth }}"
   run_once: True
@@ -35,6 +36,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_cinder_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_cinder_auth: "{{ openstack_cinder_auth }}"
   run_once: True
diff --git a/ansible/roles/cloudkitty/tasks/register.yml b/ansible/roles/cloudkitty/tasks/register.yml
index 497a38838e78732d343a48743d209137b2a17377..9c11e0582b1ce7613e6b6807501474ce9b6f7168 100644
--- a/ansible/roles/cloudkitty/tasks/register.yml
+++ b/ansible/roles/cloudkitty/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_cloudkitty_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_cloudkitty_auth: "{{ openstack_cloudkitty_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_cloudkitty_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_cloudkitty_auth: "{{ openstack_cloudkitty_auth }}"
   run_once: True
@@ -39,6 +41,7 @@
     module_args:
       name: "{{ cloudkitty_openstack_keystone_default_role }}"
       auth: "{{ '{{ openstack_cloudkitty_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_cloudkitty_auth: "{{ openstack_cloudkitty_auth }}"
   run_once: True
diff --git a/ansible/roles/congress/tasks/register.yml b/ansible/roles/congress/tasks/register.yml
index 1ea06e6611927a7cb251b3f3268040b746a98314..b1a08b77953ce1f4513bfb527d60598a9395e2b3 100644
--- a/ansible/roles/congress/tasks/register.yml
+++ b/ansible/roles/congress/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_congress_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_congress_auth: "{{ openstack_congress_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_congress_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_congress_auth: "{{ openstack_congress_auth }}"
   run_once: True
diff --git a/ansible/roles/designate/tasks/register.yml b/ansible/roles/designate/tasks/register.yml
index 2d5b310d79e4860b4fd597f488b722f3116541f6..0265692c5060517228b7204c0d76ffa6d9bbb5e6 100644
--- a/ansible/roles/designate/tasks/register.yml
+++ b/ansible/roles/designate/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_designate_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_designate_auth: "{{ openstack_designate_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_designate_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_designate_auth: "{{ openstack_designate_auth }}"
   run_once: True
diff --git a/ansible/roles/freezer/tasks/register.yml b/ansible/roles/freezer/tasks/register.yml
index 8cb204ec116b9ee73042d4862d86835561077836..8dc101f6f9df64a545999796df92d858a2d3a18d 100644
--- a/ansible/roles/freezer/tasks/register.yml
+++ b/ansible/roles/freezer/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_freezer_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_freezer_auth: "{{ openstack_freezer_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: admin
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_freezer_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_freezer_auth: "{{ openstack_freezer_auth }}"
   run_once: True
diff --git a/ansible/roles/glance/tasks/check.yml b/ansible/roles/glance/tasks/check.yml
index d6651b2ad59d33243bfddef19e762c0aa8e1eaea..af408d41d38cba9c1b94bb19de449a87d82c00b4 100644
--- a/ansible/roles/glance/tasks/check.yml
+++ b/ansible/roles/glance/tasks/check.yml
@@ -6,6 +6,7 @@
       auth: "{{ openstack_glance_auth }}"
       name: "glance_sanity_check"
       filename: "/etc/hostname"
+      endpoint_type: "{{ openstack_interface }}"
   delegate_to: "{{ groups['glance-api'][0] }}"
   run_once: True
   when: kolla_enable_sanity_glance | bool
@@ -17,6 +18,7 @@
       auth: "{{ openstack_glance_auth }}"
       name: "glance_sanity_check"
       state: absent
+      endpoint_type: "{{ openstack_interface }}"
   delegate_to: "{{ groups['glance-api'][0] }}"
   run_once: True
   when: kolla_enable_sanity_glance | bool
diff --git a/ansible/roles/glance/tasks/register.yml b/ansible/roles/glance/tasks/register.yml
index 54db8f90df7e448ec6951aebcd05cd594845c35a..62be22309984f98b48cc4fd6155c1cfe9664f764 100644
--- a/ansible/roles/glance/tasks/register.yml
+++ b/ansible/roles/glance/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_glance_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_glance_auth: "{{ openstack_glance_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_glance_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_glance_auth: "{{ openstack_glance_auth }}"
   run_once: True
diff --git a/ansible/roles/gnocchi/tasks/register.yml b/ansible/roles/gnocchi/tasks/register.yml
index 8b092e662ce89944140f60f68509cce7d9c03430..829809586509a0b585f96cb3c44aedec6edcfaae 100644
--- a/ansible/roles/gnocchi/tasks/register.yml
+++ b/ansible/roles/gnocchi/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_gnocchi_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_gnocchi_auth: "{{ openstack_gnocchi_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_gnocchi_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_gnocchi_auth: "{{ openstack_gnocchi_auth }}"
   run_once: True
diff --git a/ansible/roles/heat/tasks/register.yml b/ansible/roles/heat/tasks/register.yml
index 5b1c4cacd98a2b1c4c4a1dd86ed5721d29f04808..08fd009bdc0914f0a309f2d04a08a144697428c5 100644
--- a/ansible/roles/heat/tasks/register.yml
+++ b/ansible/roles/heat/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_heat_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_heat_auth: "{{ openstack_heat_auth }}"
   run_once: True
@@ -32,6 +33,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_heat_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_heat_auth: "{{ openstack_heat_auth }}"
   run_once: True
@@ -42,6 +44,7 @@
     module_args:
       name: "{{ heat_stack_user_role }}"
       auth: "{{ '{{ openstack_heat_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_heat_auth: "{{ openstack_heat_auth }}"
   run_once: True
@@ -52,6 +55,7 @@
     module_args:
       name: "{{ heat_stack_owner_role }}"
       auth: "{{ '{{ openstack_heat_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_heat_auth: "{{ openstack_heat_auth }}"
   run_once: True
@@ -65,6 +69,7 @@
       role: "{{ heat_stack_owner_role }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_heat_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_heat_auth: "{{ openstack_heat_auth }}"
   run_once: True
diff --git a/ansible/roles/ironic/tasks/register.yml b/ansible/roles/ironic/tasks/register.yml
index 34506f3237a85b0e9b1e041a4bbbbc1aa9e5a5ea..e215f748a7358580e4f6714430721b9b33b44d23 100644
--- a/ansible/roles/ironic/tasks/register.yml
+++ b/ansible/roles/ironic/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_ironic_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_ironic_auth: "{{ openstack_ironic_auth }}"
   run_once: True
@@ -30,6 +31,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_ironic_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_ironic_auth: "{{ openstack_ironic_auth }}"
   run_once: True
@@ -47,6 +49,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_ironic_inspector_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_ironic_inspector_auth: "{{ openstack_ironic_inspector_auth }}"
   run_once: True
@@ -66,6 +69,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_ironic_inspector_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_ironic_inspector_auth: "{{ openstack_ironic_inspector_auth }}"
   run_once: True
diff --git a/ansible/roles/karbor/tasks/register.yml b/ansible/roles/karbor/tasks/register.yml
index e5057f8aa5fcc503ae9e833130ca952f7f82e646..68e55e18bf2a700de6cbab018175859d8f81a5af 100644
--- a/ansible/roles/karbor/tasks/register.yml
+++ b/ansible/roles/karbor/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_karbor_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_karbor_auth: "{{ openstack_karbor_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_karbor_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_karbor_auth: "{{ openstack_karbor_auth }}"
   run_once: True
diff --git a/ansible/roles/keystone/tasks/check.yml b/ansible/roles/keystone/tasks/check.yml
index 4a49db8186c2714f3491a8e0e45834eb21726ff6..84531d88864ac3a6d84ad9a32f3616623a6117d7 100644
--- a/ansible/roles/keystone/tasks/check.yml
+++ b/ansible/roles/keystone/tasks/check.yml
@@ -4,6 +4,7 @@
     module_name: os_auth
     module_args:
       auth: "{{ openstack_keystone_auth }}"
+      endpoint_type: "{{ openstack_interface }}"
   run_once: True
   delegate_to: "{{ groups['keystone'][0] }}"
   when: kolla_enable_sanity_keystone | bool
diff --git a/ansible/roles/keystone/tasks/register.yml b/ansible/roles/keystone/tasks/register.yml
index 611897a387f79391a1f902c5c585c0937c809264..42aae40275af867a7852f7f736c9ec4bd9ad2733 100644
--- a/ansible/roles/keystone/tasks/register.yml
+++ b/ansible/roles/keystone/tasks/register.yml
@@ -13,6 +13,7 @@
     module_args:
       name: "{{ keystone_default_user_role }}"
       auth: "{{ '{{ openstack_keystone_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_keystone_auth: "{{ openstack_keystone_auth }}"
   register: default_role
diff --git a/ansible/roles/keystone/tasks/update_endpoints.yml b/ansible/roles/keystone/tasks/update_endpoints.yml
index 7cf9466ae0849925ca2550c8d590910b0d8f5dba..bfa9155b40d181d7b8611ac3d6df05f0118f9e4e 100644
--- a/ansible/roles/keystone/tasks/update_endpoints.yml
+++ b/ansible/roles/keystone/tasks/update_endpoints.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_keystone_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_keystone_auth: "{{ openstack_keystone_auth }}"
   run_once: True
diff --git a/ansible/roles/kuryr/tasks/register.yml b/ansible/roles/kuryr/tasks/register.yml
index 1d6a271c89ac9954677841802a9291c36a2932f3..4232ae4a9be7a56c84a8993500602dd88d32078e 100644
--- a/ansible/roles/kuryr/tasks/register.yml
+++ b/ansible/roles/kuryr/tasks/register.yml
@@ -9,6 +9,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_kuryr_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_kuryr_auth: "{{ openstack_kuryr_auth }}"
   run_once: True
diff --git a/ansible/roles/magnum/tasks/register.yml b/ansible/roles/magnum/tasks/register.yml
index c153922b377c2613d350963510977dc3b284321e..6414143efb209dc3f4529167df3c6709f2419d49 100644
--- a/ansible/roles/magnum/tasks/register.yml
+++ b/ansible/roles/magnum/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_magnum_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_magnum_auth: "{{ openstack_magnum_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_magnum_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_magnum_auth: "{{ openstack_magnum_auth }}"
   run_once: True
@@ -40,6 +42,7 @@
       name: "{{ magnum_trustee_domain }}"
       description: "Owns users and projects created by magnum"
       auth: "{{ '{{ openstack_magnum_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_magnum_auth: "{{ openstack_magnum_auth }}"
   register: trustee_domain
@@ -53,6 +56,7 @@
       domain: "{{ magnum_trustee_domain }}"
       password: "{{ magnum_keystone_password }}"
       auth: "{{ '{{ openstack_magnum_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_magnum_auth: "{{ openstack_magnum_auth }}"
   run_once: True
@@ -65,6 +69,7 @@
       user: "{{ magnum_trustee_domain_admin }}"
       role: "admin"
       auth: "{{ '{{ openstack_magnum_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_magnum_auth: "{{ openstack_magnum_auth }}"
   run_once: True
diff --git a/ansible/roles/manila/tasks/register.yml b/ansible/roles/manila/tasks/register.yml
index 00446b52a514f2233024e2c6bc6d498fbdc8b62a..1ee68414e3669ad0950dbdea72d10da677f29df4 100644
--- a/ansible/roles/manila/tasks/register.yml
+++ b/ansible/roles/manila/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_manila_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_manila_auth: "{{ openstack_manila_auth }}"
   run_once: True
@@ -32,6 +33,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_manila_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_manila_auth: "{{ openstack_manila_auth }}"
   run_once: True
diff --git a/ansible/roles/mistral/tasks/register.yml b/ansible/roles/mistral/tasks/register.yml
index eb8b4b36fcb111a2a27570995ed0e65a18483880..e8a063aa6b13894c9726b360666fcc94d79a45ae 100644
--- a/ansible/roles/mistral/tasks/register.yml
+++ b/ansible/roles/mistral/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_mistral_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_mistral_auth: "{{ openstack_mistral_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_mistral_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_mistral_auth: "{{ openstack_mistral_auth }}"
   run_once: True
diff --git a/ansible/roles/murano/tasks/register.yml b/ansible/roles/murano/tasks/register.yml
index 484012935bc7d7e2611310189747889399a1980b..b1d7beb939ef8eacde3ff4db60e54a843d926188 100644
--- a/ansible/roles/murano/tasks/register.yml
+++ b/ansible/roles/murano/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_murano_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_murano_auth: "{{ openstack_murano_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_murano_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_murano_auth: "{{ openstack_murano_auth }}"
   run_once: True
diff --git a/ansible/roles/neutron/tasks/register.yml b/ansible/roles/neutron/tasks/register.yml
index 3cefe75e1168222e18e49582f293f954f52fc971..521a30b955b617a651d3fc07f9cd133018ea16f7 100644
--- a/ansible/roles/neutron/tasks/register.yml
+++ b/ansible/roles/neutron/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_neutron_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_neutron_auth: "{{ openstack_neutron_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_neutron_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_neutron_auth: "{{ openstack_neutron_auth }}"
   run_once: True
diff --git a/ansible/roles/nova/tasks/register.yml b/ansible/roles/nova/tasks/register.yml
index 847fbf01884a0d8b7acdaf84f8e223df6e4f5722..1156bb877015b5fbd0be04fa6ce8fd5a798ddb33 100644
--- a/ansible/roles/nova/tasks/register.yml
+++ b/ansible/roles/nova/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_nova_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_nova_auth: "{{ openstack_nova_auth }}"
   run_once: True
@@ -36,6 +37,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_nova_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_nova_auth: "{{ openstack_nova_auth }}"
   run_once: True
@@ -50,6 +52,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_placement_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_placement_auth: "{{ openstack_placement_auth }}"
   register: placement_user
diff --git a/ansible/roles/octavia/tasks/register.yml b/ansible/roles/octavia/tasks/register.yml
index 41fcc30a0297529efa406f6de63481f7cbed329c..ef7520328dea0c7ed7385b3856944b4b0fb1b184 100644
--- a/ansible/roles/octavia/tasks/register.yml
+++ b/ansible/roles/octavia/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_octavia_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_octavia_auth: "{{ openstack_octavia_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_octavia_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_octavia_auth: "{{ openstack_octavia_auth }}"
   run_once: True
@@ -41,6 +43,7 @@
       role: admin
       project: admin
       auth: "{{ '{{ openstack_octavia_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_octavia_auth: "{{ openstack_octavia_auth }}"
   run_once: True
diff --git a/ansible/roles/panko/tasks/register.yml b/ansible/roles/panko/tasks/register.yml
index 498de705666a0f00191238a9e0dcf858dd744420..d832ab85767de1f9b35ebafc3ef9f85e07764bc9 100644
--- a/ansible/roles/panko/tasks/register.yml
+++ b/ansible/roles/panko/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_panko_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_panko_auth: "{{ openstack_panko_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_panko_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_panko_auth: "{{ openstack_panko_auth }}"
   run_once: True
diff --git a/ansible/roles/sahara/tasks/register.yml b/ansible/roles/sahara/tasks/register.yml
index eea8a0168fb52a43fe60194bdd4e4862b8e34c88..0c69b91e36bc17855de760a66cb8c7535edadb02 100644
--- a/ansible/roles/sahara/tasks/register.yml
+++ b/ansible/roles/sahara/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_sahara_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_sahara_auth: "{{ openstack_sahara_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_sahara_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_sahara_auth: "{{ openstack_sahara_auth }}"
   run_once: True
diff --git a/ansible/roles/searchlight/tasks/register.yml b/ansible/roles/searchlight/tasks/register.yml
index c331ed50b9a1c1846b222357451f5257ed5db71f..2755c137ff93b31849f3ef77ef034a337159721a 100644
--- a/ansible/roles/searchlight/tasks/register.yml
+++ b/ansible/roles/searchlight/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_searchlight_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_searchlight_auth: "{{ openstack_searchlight_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_searchlight_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_searchlight_auth: "{{ openstack_searchlight_auth }}"
   run_once: True
diff --git a/ansible/roles/senlin/tasks/register.yml b/ansible/roles/senlin/tasks/register.yml
index 2ad0cfd4bd329ed49aeb9234cac21e70d04e91e5..6113882dd1871ab249a997d02a14bfbefdb4e625 100644
--- a/ansible/roles/senlin/tasks/register.yml
+++ b/ansible/roles/senlin/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_senlin_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_senlin_auth: "{{ openstack_senlin_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_senlin_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_senlin_auth: "{{ openstack_senlin_auth }}"
   run_once: True
diff --git a/ansible/roles/solum/tasks/register.yml b/ansible/roles/solum/tasks/register.yml
index eda3b906d0ba6ee71535a9aa00c472753e3cb9ed..8a8db355f75f9c5a19e81d80c5353913f3ba8a27 100644
--- a/ansible/roles/solum/tasks/register.yml
+++ b/ansible/roles/solum/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_solum_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_solum_auth: "{{ openstack_solum_auth }}"
   run_once: True
@@ -31,6 +32,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_solum_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_solum_auth: "{{ openstack_solum_auth }}"
   run_once: True
@@ -49,6 +51,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_solum_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_solum_auth: "{{ openstack_solum_auth }}"
   run_once: True
diff --git a/ansible/roles/swift/tasks/register.yml b/ansible/roles/swift/tasks/register.yml
index 714ba9965a3630015e77dc5d16e6fb768b7f3eee..bd623f42bdc537e949ed91633004238bf027f299 100644
--- a/ansible/roles/swift/tasks/register.yml
+++ b/ansible/roles/swift/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_swift_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_swift_auth: "{{ openstack_swift_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "{{ swift_admin_tenant_name }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_swift_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_swift_auth: "{{ openstack_swift_auth }}"
   run_once: True
@@ -40,6 +42,7 @@
       name: "ResellerAdmin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_swift_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_swift_auth: "{{ openstack_swift_auth }}"
   run_once: True
diff --git a/ansible/roles/tacker/tasks/register.yml b/ansible/roles/tacker/tasks/register.yml
index 8da2eb1696ba84d1f932ee86aec1e99374de38ea..acece3259208b6ab3133f71da760e02d3f489c84 100644
--- a/ansible/roles/tacker/tasks/register.yml
+++ b/ansible/roles/tacker/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_tacker_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_tacker_auth: "{{ openstack_tacker_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_tacker_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_tacker_auth: "{{ openstack_tacker_auth }}"
   run_once: True
diff --git a/ansible/roles/trove/tasks/register.yml b/ansible/roles/trove/tasks/register.yml
index e48bbffe55dabf12c7dd1d13ed5e13eb2d33b282..dab38f90557236b3aacc604e4dfe9f62c262651c 100644
--- a/ansible/roles/trove/tasks/register.yml
+++ b/ansible/roles/trove/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_trove_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_trove_auth: "{{ openstack_trove_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_trove_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_trove_auth: "{{ openstack_trove_auth }}"
   run_once: True
diff --git a/ansible/roles/watcher/tasks/register.yml b/ansible/roles/watcher/tasks/register.yml
index e59dcf0a8a00805c6e4455abcc2020b9688ee9de..b5e6689efc1935732f9862724f51dd50521a54e9 100644
--- a/ansible/roles/watcher/tasks/register.yml
+++ b/ansible/roles/watcher/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_watcher_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_watcher_auth: "{{ openstack_watcher_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_watcher_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_watcher_auth: "{{ openstack_watcher_auth }}"
   run_once: True
diff --git a/ansible/roles/zun/tasks/register.yml b/ansible/roles/zun/tasks/register.yml
index 40b6609e556f960bdc26f14cd3a87dcbc74769dc..78f41255e5631c1b5291f2e9e297d084dab97693 100644
--- a/ansible/roles/zun/tasks/register.yml
+++ b/ansible/roles/zun/tasks/register.yml
@@ -11,6 +11,7 @@
       interface: "{{ item.interface }}"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_zun_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_zun_auth: "{{ openstack_zun_auth }}"
   run_once: True
@@ -29,6 +30,7 @@
       role: "admin"
       region_name: "{{ openstack_region_name }}"
       auth: "{{ '{{ openstack_zun_auth }}' }}"
+      endpoint_type: "{{ openstack_interface }}"
     module_extra_vars:
       openstack_zun_auth: "{{ openstack_zun_auth }}"
   run_once: True