diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index f192562852..074ce21350 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -561,7 +561,7 @@ kolla_sysctl_conf_path: /etc/sysctl.conf
 
 # Endpoint type used to connect with OpenStack services with ansible modules.
 # Valid options are [ public, internal, admin ]
-openstack_interface: "admin"
+openstack_interface: "internal"
 
 # Openstack CA certificate bundle file
 # CA bundle file must be added to both the Horizon and Kolla Toolbox containers
@@ -735,11 +735,9 @@ monasca_enable_alerting_pipeline: True
 # directly to Elasticsearch.
 monasca_ingest_control_plane_logs: True
 
-monasca_api_admin_base_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn  | put_address_in_context('url') }}:{{ monasca_api_port }}"
 monasca_api_internal_base_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn  | put_address_in_context('url') }}:{{ monasca_api_port }}"
 monasca_api_public_base_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn  | put_address_in_context('url') }}:{{ monasca_api_port }}"
 
-monasca_log_api_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn  | put_address_in_context('url') }}:{{ monasca_log_api_port }}"
 monasca_log_api_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn  | put_address_in_context('url') }}:{{ monasca_log_api_port }}"
 monasca_log_api_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn  | put_address_in_context('url') }}:{{ monasca_log_api_port }}"
 
@@ -901,7 +899,6 @@ glance_api_hosts: "{{ [groups['glance-api']|first] if glance_backend_file | bool
 # NOTE(mnasiadka): For use in common role
 glance_enable_tls_backend: "{{ kolla_enable_tls_backend }}"
 
-glance_admin_endpoint: "{{ admin_protocol }}://{{ glance_internal_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}"
 glance_internal_endpoint: "{{ internal_protocol }}://{{ glance_internal_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}"
 glance_public_endpoint: "{{ public_protocol }}://{{ glance_external_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}"
 
@@ -912,7 +909,6 @@ glance_public_endpoint: "{{ public_protocol }}://{{ glance_external_fqdn | put_a
 barbican_crypto_plugin: "simple_crypto"
 barbican_library_path: "/usr/lib/libCryptoki2_64.so"
 
-barbican_admin_endpoint: "{{ admin_protocol }}://{{ barbican_internal_fqdn | put_address_in_context('url') }}:{{ barbican_api_port }}"
 barbican_internal_endpoint: "{{ internal_protocol }}://{{ barbican_internal_fqdn | put_address_in_context('url') }}:{{ barbican_api_port }}"
 barbican_public_endpoint: "{{ public_protocol }}://{{ barbican_external_fqdn | put_address_in_context('url') }}:{{ barbican_api_port }}"
 
@@ -964,7 +960,6 @@ designate_backend_external_bind9_nameservers: ""
 # Valid options are [ '', redis ]
 designate_coordination_backend: "{{ 'redis' if enable_redis|bool else '' }}"
 
-designate_admin_endpoint: "{{ admin_protocol }}://{{ designate_internal_fqdn | put_address_in_context('url') }}:{{ designate_api_port }}"
 designate_internal_endpoint: "{{ internal_protocol }}://{{ designate_internal_fqdn | put_address_in_context('url') }}:{{ designate_api_port }}"
 designate_public_endpoint: "{{ public_protocol }}://{{ designate_external_fqdn | put_address_in_context('url') }}:{{ designate_api_port }}"
 
@@ -992,7 +987,6 @@ neutron_legacy_iptables: "no"
 # Enable distributed floating ip for OVN deployments
 neutron_ovn_distributed_fip: "no"
 
-neutron_admin_endpoint: "{{ admin_protocol }}://{{ neutron_internal_fqdn | put_address_in_context('url') }}:{{ neutron_server_port }}"
 neutron_internal_endpoint: "{{ internal_protocol }}://{{ neutron_internal_fqdn | put_address_in_context('url') }}:{{ neutron_server_port }}"
 neutron_public_endpoint: "{{ public_protocol }}://{{ neutron_external_fqdn | put_address_in_context('url') }}:{{ neutron_server_port }}"
 
@@ -1158,7 +1152,6 @@ distro_python_version: "{{ distro_python_version_map[kolla_base_distro] }}"
 # telemetry data.
 telegraf_enable_docker_input: "no"
 
-vitrage_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ vitrage_api_port }}"
 vitrage_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ vitrage_api_port }}"
 vitrage_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ vitrage_api_port }}"
 
@@ -1171,7 +1164,6 @@ grafana_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_a
 #############
 # Ironic
 #############
-ironic_admin_endpoint: "{{ admin_protocol }}://{{ ironic_internal_fqdn | put_address_in_context('url') }}:{{ ironic_api_port }}"
 ironic_internal_endpoint: "{{ internal_protocol }}://{{ ironic_internal_fqdn | put_address_in_context('url') }}:{{ ironic_api_port }}"
 ironic_public_endpoint: "{{ public_protocol }}://{{ ironic_external_fqdn | put_address_in_context('url') }}:{{ ironic_api_port }}"
 
@@ -1180,7 +1172,6 @@ ironic_public_endpoint: "{{ public_protocol }}://{{ ironic_external_fqdn | put_a
 ########
 swift_internal_base_endpoint: "{{ internal_protocol }}://{{ swift_internal_fqdn | put_address_in_context('url') }}:{{ swift_proxy_server_port }}"
 
-swift_admin_endpoint: "{{ admin_protocol }}://{{ swift_internal_fqdn | put_address_in_context('url') }}:{{ swift_proxy_server_port }}/v1"
 swift_internal_endpoint: "{{ swift_internal_base_endpoint }}/v1/AUTH_%(tenant_id)s"
 swift_public_endpoint: "{{ public_protocol }}://{{ swift_external_fqdn | put_address_in_context('url') }}:{{ swift_proxy_server_port }}/v1/AUTH_%(tenant_id)s"
 
@@ -1200,7 +1191,6 @@ octavia_auto_configure: yes
 #   on the Octavia woker nodes on the same provider network.
 octavia_network_type: "provider"
 
-octavia_admin_endpoint: "{{ admin_protocol }}://{{ octavia_internal_fqdn | put_address_in_context('url') }}:{{ octavia_api_port }}"
 octavia_internal_endpoint: "{{ internal_protocol }}://{{ octavia_internal_fqdn | put_address_in_context('url') }}:{{ octavia_api_port }}"
 octavia_public_endpoint: "{{ public_protocol }}://{{ octavia_external_fqdn | put_address_in_context('url') }}:{{ octavia_api_port }}"
 
diff --git a/ansible/roles/aodh/defaults/main.yml b/ansible/roles/aodh/defaults/main.yml
index a25839b38b..5ee7de36dc 100644
--- a/ansible/roles/aodh/defaults/main.yml
+++ b/ansible/roles/aodh/defaults/main.yml
@@ -190,7 +190,6 @@ aodh_notifier_extra_volumes: "{{ aodh_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-aodh_admin_endpoint: "{{ admin_protocol }}://{{ aodh_internal_fqdn | put_address_in_context('url') }}:{{ aodh_api_port }}"
 aodh_internal_endpoint: "{{ internal_protocol }}://{{ aodh_internal_fqdn | put_address_in_context('url') }}:{{ aodh_api_port }}"
 aodh_public_endpoint: "{{ public_protocol }}://{{ aodh_external_fqdn | put_address_in_context('url') }}:{{ aodh_api_port }}"
 
@@ -217,7 +216,6 @@ aodh_ks_services:
     type: "alarming"
     description: "OpenStack Alarming Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ aodh_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ aodh_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ aodh_public_endpoint }}'}
 
diff --git a/ansible/roles/barbican/defaults/main.yml b/ansible/roles/barbican/defaults/main.yml
index 36583a9392..f005194cc9 100644
--- a/ansible/roles/barbican/defaults/main.yml
+++ b/ansible/roles/barbican/defaults/main.yml
@@ -167,7 +167,6 @@ barbican_ks_services:
     type: "key-manager"
     description: "Barbican Key Management Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ barbican_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ barbican_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ barbican_public_endpoint }}'}
 
diff --git a/ansible/roles/blazar/defaults/main.yml b/ansible/roles/blazar/defaults/main.yml
index 5e9ca5ca36..e2279cde6c 100644
--- a/ansible/roles/blazar/defaults/main.yml
+++ b/ansible/roles/blazar/defaults/main.yml
@@ -109,7 +109,6 @@ blazar_manager_extra_volumes: "{{ blazar_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-blazar_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ blazar_api_port }}/v1"
 blazar_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ blazar_api_port }}/v1"
 blazar_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ blazar_api_port }}/v1"
 
@@ -146,7 +145,6 @@ blazar_ks_services:
     type: "reservation"
     description: "OpenStack Reservation Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ blazar_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ blazar_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ blazar_public_endpoint }}'}
 
diff --git a/ansible/roles/ceph-rgw/defaults/main.yml b/ansible/roles/ceph-rgw/defaults/main.yml
index 07345434d8..086d09d6c2 100644
--- a/ansible/roles/ceph-rgw/defaults/main.yml
+++ b/ansible/roles/ceph-rgw/defaults/main.yml
@@ -61,7 +61,6 @@ ceph_rgw_swift_account_in_url: false
 
 ceph_rgw_endpoint_path: "{{ '/' if ceph_rgw_swift_compatibility | bool else '/swift/' }}v1{% if ceph_rgw_swift_account_in_url | bool %}/AUTH_%(project_id)s{% endif %}"
 
-ceph_rgw_admin_endpoint: "{{ admin_protocol }}://{{ ceph_rgw_internal_fqdn | put_address_in_context('url') }}:{{ ceph_rgw_port }}{{ ceph_rgw_endpoint_path }}"
 ceph_rgw_internal_endpoint: "{{ internal_protocol }}://{{ ceph_rgw_internal_fqdn | put_address_in_context('url') }}:{{ ceph_rgw_port }}{{ ceph_rgw_endpoint_path }}"
 ceph_rgw_public_endpoint: "{{ public_protocol }}://{{ ceph_rgw_external_fqdn | put_address_in_context('url') }}:{{ ceph_rgw_port }}{{ ceph_rgw_endpoint_path }}"
 
@@ -78,7 +77,6 @@ ceph_rgw_ks_services:
     type: "object-store"
     description: "Openstack Object Storage"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ ceph_rgw_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ ceph_rgw_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ ceph_rgw_public_endpoint }}'}
 
diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml
index c750672876..40f1992589 100644
--- a/ansible/roles/cinder/defaults/main.yml
+++ b/ansible/roles/cinder/defaults/main.yml
@@ -191,11 +191,9 @@ cinder_enable_conversion_tmpfs: false
 ####################
 # OpenStack
 ####################
-cinder_admin_base_endpoint: "{{ admin_protocol }}://{{ cinder_internal_fqdn | put_address_in_context('url') }}:{{ cinder_api_port }}"
 cinder_internal_base_endpoint: "{{ internal_protocol }}://{{ cinder_internal_fqdn | put_address_in_context('url') }}:{{ cinder_api_port }}"
 cinder_public_base_endpoint: "{{ public_protocol }}://{{ cinder_external_fqdn | put_address_in_context('url') }}:{{ cinder_api_port }}"
 
-cinder_v3_admin_endpoint: "{{ cinder_admin_base_endpoint }}/v3/%(tenant_id)s"
 cinder_v3_internal_endpoint: "{{ cinder_internal_base_endpoint }}/v3/%(tenant_id)s"
 cinder_v3_public_endpoint: "{{ cinder_public_base_endpoint }}/v3/%(tenant_id)s"
 
@@ -269,7 +267,6 @@ cinder_ks_services:
     type: "volumev3"
     description: "Openstack Block Storage"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ cinder_v3_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ cinder_v3_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ cinder_v3_public_endpoint }}'}
 
diff --git a/ansible/roles/cloudkitty/defaults/main.yml b/ansible/roles/cloudkitty/defaults/main.yml
index 14ac9145c8..6c9d1caaf2 100644
--- a/ansible/roles/cloudkitty/defaults/main.yml
+++ b/ansible/roles/cloudkitty/defaults/main.yml
@@ -102,7 +102,6 @@ cloudkitty_api_extra_volumes: "{{ cloudkitty_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-cloudkitty_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ cloudkitty_api_port }}"
 cloudkitty_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ cloudkitty_api_port }}"
 cloudkitty_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ cloudkitty_api_port }}"
 
@@ -193,7 +192,6 @@ cloudkitty_ks_services:
     type: "rating"
     description: "OpenStack Rating"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ cloudkitty_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ cloudkitty_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ cloudkitty_public_endpoint }}'}
 
diff --git a/ansible/roles/cyborg/defaults/main.yml b/ansible/roles/cyborg/defaults/main.yml
index fa079e118a..37abdcd0b6 100644
--- a/ansible/roles/cyborg/defaults/main.yml
+++ b/ansible/roles/cyborg/defaults/main.yml
@@ -123,7 +123,6 @@ cyborg_conductor_extra_volumes: "{{ cyborg_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-cyborg_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ cyborg_api_port }}"
 cyborg_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ cyborg_api_port }}"
 cyborg_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ cyborg_api_port }}"
 
@@ -151,7 +150,6 @@ cyborg_ks_services:
     type: "cyborg"
     description: "OpenStack Cyborg Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ cyborg_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ cyborg_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ cyborg_public_endpoint }}'}
 
diff --git a/ansible/roles/designate/defaults/main.yml b/ansible/roles/designate/defaults/main.yml
index 633f96681a..900f30faab 100644
--- a/ansible/roles/designate/defaults/main.yml
+++ b/ansible/roles/designate/defaults/main.yml
@@ -269,7 +269,6 @@ designate_sink_extra_volumes: "{{ designate_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-designate_admin_endpoint: "{{ admin_protocol }}://{{ designate_internal_fqdn | put_address_in_context('url') }}:{{ designate_api_port }}"
 designate_internal_endpoint: "{{ internal_protocol }}://{{ designate_internal_fqdn | put_address_in_context('url') }}:{{ designate_api_port }}"
 designate_public_endpoint: "{{ public_protocol }}://{{ designate_external_fqdn | put_address_in_context('url') }}:{{ designate_api_port }}"
 
@@ -328,7 +327,6 @@ designate_ks_services:
     type: "dns"
     description: "Designate DNS Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ designate_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ designate_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ designate_public_endpoint }}'}
 
diff --git a/ansible/roles/freezer/defaults/main.yml b/ansible/roles/freezer/defaults/main.yml
index d0471e9892..82c13ce8c7 100644
--- a/ansible/roles/freezer/defaults/main.yml
+++ b/ansible/roles/freezer/defaults/main.yml
@@ -79,7 +79,6 @@ freezer_scheduler_extra_volumes: "{{ freezer_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-freezer_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ freezer_api_port }}"
 freezer_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ freezer_api_port }}"
 freezer_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ freezer_api_port }}"
 
@@ -107,7 +106,6 @@ freezer_ks_services:
     type: "backup"
     description: "Openstack Freezer Backup Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ freezer_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ freezer_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ freezer_public_endpoint }}'}
 
diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml
index 9a1d93e30d..077c1918f1 100644
--- a/ansible/roles/glance/defaults/main.yml
+++ b/ansible/roles/glance/defaults/main.yml
@@ -81,7 +81,6 @@ glance_ks_services:
     type: "image"
     description: "Openstack Image"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ glance_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ glance_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ glance_public_endpoint }}'}
 
@@ -209,7 +208,6 @@ glance_store_backends: "{{ glance_backends|selectattr('enabled', 'equalto', true
 # OpenStack
 ####################
 
-glance_admin_endpoint: "{{ admin_protocol }}://{{ glance_internal_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}"
 glance_internal_endpoint: "{{ internal_protocol }}://{{ glance_internal_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}"
 glance_public_endpoint: "{{ public_protocol }}://{{ glance_external_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}"
 
diff --git a/ansible/roles/gnocchi/defaults/main.yml b/ansible/roles/gnocchi/defaults/main.yml
index dd14921242..692add7091 100644
--- a/ansible/roles/gnocchi/defaults/main.yml
+++ b/ansible/roles/gnocchi/defaults/main.yml
@@ -144,7 +144,6 @@ gnocchi_statsd_extra_volumes: "{{ gnocchi_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-gnocchi_admin_endpoint: "{{ admin_protocol }}://{{ gnocchi_internal_fqdn | put_address_in_context('url') }}:{{ gnocchi_api_port }}"
 gnocchi_internal_endpoint: "{{ internal_protocol }}://{{ gnocchi_internal_fqdn | put_address_in_context('url') }}:{{ gnocchi_api_port }}"
 gnocchi_public_endpoint: "{{ public_protocol }}://{{ gnocchi_external_fqdn | put_address_in_context('url') }}:{{ gnocchi_api_port }}"
 
@@ -164,7 +163,6 @@ gnocchi_ks_services:
     type: "metric"
     description: "OpenStack Metric Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ gnocchi_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ gnocchi_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ gnocchi_public_endpoint }}'}
 
diff --git a/ansible/roles/heat/defaults/main.yml b/ansible/roles/heat/defaults/main.yml
index 0814234ce9..566cb224bb 100644
--- a/ansible/roles/heat/defaults/main.yml
+++ b/ansible/roles/heat/defaults/main.yml
@@ -153,13 +153,11 @@ heat_engine_extra_volumes: "{{ heat_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-heat_admin_endpoint: "{{ admin_protocol }}://{{ heat_internal_fqdn | put_address_in_context('url') }}:{{ heat_api_port }}/v1/%(tenant_id)s"
 heat_internal_endpoint: "{{ internal_protocol }}://{{ heat_internal_fqdn | put_address_in_context('url') }}:{{ heat_api_port }}/v1/%(tenant_id)s"
 heat_public_endpoint: "{{ public_protocol }}://{{ heat_external_fqdn | put_address_in_context('url') }}:{{ heat_api_port }}/v1/%(tenant_id)s"
 
 heat_cfn_public_base_endpoint: "{{ public_protocol }}://{{ heat_cfn_external_fqdn | put_address_in_context('url') }}:{{ heat_api_cfn_port }}"
 
-heat_cfn_admin_endpoint: "{{ admin_protocol }}://{{ heat_cfn_internal_fqdn | put_address_in_context('url') }}:{{ heat_api_cfn_port }}/v1"
 heat_cfn_internal_endpoint: "{{ internal_protocol }}://{{ heat_cfn_internal_fqdn | put_address_in_context('url') }}:{{ heat_api_cfn_port }}/v1"
 heat_cfn_public_endpoint: "{{ heat_cfn_public_base_endpoint }}/v1"
 
@@ -197,14 +195,12 @@ heat_ks_services:
     type: "orchestration"
     description: "Orchestration"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ heat_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ heat_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ heat_public_endpoint }}'}
   - name: "heat-cfn"
     type: "cloudformation"
     description: "Orchestration"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ heat_cfn_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ heat_cfn_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ heat_cfn_public_endpoint }}'}
 
diff --git a/ansible/roles/ironic/defaults/main.yml b/ansible/roles/ironic/defaults/main.yml
index 275378d71e..a59c9714cc 100644
--- a/ansible/roles/ironic/defaults/main.yml
+++ b/ansible/roles/ironic/defaults/main.yml
@@ -240,7 +240,6 @@ ironic_dnsmasq_extra_volumes: "{{ ironic_extra_volumes }}"
 ####################
 ironic_inspector_keystone_user: "ironic-inspector"
 
-ironic_inspector_admin_endpoint: "{{ admin_protocol }}://{{ ironic_inspector_internal_fqdn | put_address_in_context('url') }}:{{ ironic_inspector_port }}"
 ironic_inspector_internal_endpoint: "{{ internal_protocol }}://{{ ironic_inspector_internal_fqdn | put_address_in_context('url') }}:{{ ironic_inspector_port }}"
 ironic_inspector_public_endpoint: "{{ public_protocol }}://{{ ironic_inspector_external_fqdn | put_address_in_context('url') }}:{{ ironic_inspector_port }}"
 
@@ -294,14 +293,12 @@ ironic_ks_services:
     type: "baremetal"
     description: "Ironic baremetal provisioning service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ ironic_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ ironic_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ ironic_public_endpoint }}'}
   - name: "ironic-inspector"
     type: "baremetal-introspection"
     description: "Ironic Inspector baremetal introspection service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ ironic_inspector_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ ironic_inspector_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ ironic_inspector_public_endpoint }}'}
 
diff --git a/ansible/roles/magnum/defaults/main.yml b/ansible/roles/magnum/defaults/main.yml
index ad708c89e3..841b048f6b 100644
--- a/ansible/roles/magnum/defaults/main.yml
+++ b/ansible/roles/magnum/defaults/main.yml
@@ -117,7 +117,6 @@ magnum_conductor_container_proxy: "{{ container_proxy }}"
 ####################
 # OpenStack
 ####################
-magnum_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ magnum_api_port }}/v1"
 magnum_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ magnum_api_port }}/v1"
 magnum_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ magnum_api_port }}/v1"
 
@@ -157,7 +156,6 @@ magnum_ks_services:
     type: "container-infra"
     description: "Container Infrastructure Management Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ magnum_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ magnum_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ magnum_public_endpoint }}'}
 
diff --git a/ansible/roles/manila/defaults/main.yml b/ansible/roles/manila/defaults/main.yml
index 5beabe1351..c246856a61 100644
--- a/ansible/roles/manila/defaults/main.yml
+++ b/ansible/roles/manila/defaults/main.yml
@@ -174,16 +174,12 @@ manila_data_extra_volumes: "{{ manila_extra_volumes }}"
 #####################
 ## OpenStack
 #####################
-manila_admin_base_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ manila_api_port }}"
 manila_internal_base_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ manila_api_port }}"
 manila_public_base_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ manila_api_port }}"
 
-
-manila_admin_endpoint: "{{ manila_admin_base_endpoint }}/v1/%(tenant_id)s"
 manila_internal_endpoint: "{{ manila_internal_base_endpoint }}/v1/%(tenant_id)s"
 manila_public_endpoint: "{{ manila_public_base_endpoint }}/v1/%(tenant_id)s"
 
-manila_v2_admin_endpoint: "{{ manila_admin_base_endpoint }}/v2"
 manila_v2_internal_endpoint: "{{ manila_internal_base_endpoint }}/v2"
 manila_v2_public_endpoint: "{{ manila_public_base_endpoint }}/v2"
 
@@ -259,14 +255,12 @@ manila_ks_services:
     type: "share"
     description: "Openstack Shared Filesystems"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ manila_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ manila_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ manila_public_endpoint }}'}
   - name: "manilav2"
     type: "sharev2"
     description: "Openstack Shared Filesystems"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ manila_v2_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ manila_v2_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ manila_v2_public_endpoint }}'}
 
diff --git a/ansible/roles/masakari/defaults/main.yml b/ansible/roles/masakari/defaults/main.yml
index af78e60118..099c183f63 100644
--- a/ansible/roles/masakari/defaults/main.yml
+++ b/ansible/roles/masakari/defaults/main.yml
@@ -113,7 +113,6 @@ masakari_hostmonitor_default_volumes:
 ####################
 # OpenStack
 ####################
-masakari_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ masakari_api_port }}"
 masakari_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ masakari_api_port }}"
 masakari_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ masakari_api_port }}"
 
@@ -145,7 +144,6 @@ masakari_ks_services:
     type: "instance-ha"
     description: "OpenStack High Availability"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ masakari_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ masakari_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ masakari_public_endpoint }}'}
 
diff --git a/ansible/roles/mistral/defaults/main.yml b/ansible/roles/mistral/defaults/main.yml
index b04820c8a0..db73694414 100644
--- a/ansible/roles/mistral/defaults/main.yml
+++ b/ansible/roles/mistral/defaults/main.yml
@@ -170,7 +170,6 @@ mistral_api_extra_volumes: "{{ mistral_extra_volumes }}"
 ####################
 mistral_internal_base_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ mistral_api_port }}"
 
-mistral_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ mistral_api_port }}/v2"
 mistral_internal_endpoint: "{{ mistral_internal_base_endpoint }}/v2"
 mistral_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ mistral_api_port }}/v2"
 
@@ -206,7 +205,6 @@ mistral_ks_services:
     type: "workflowv2"
     description: "Openstack Workflow"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ mistral_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ mistral_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ mistral_public_endpoint }}'}
 
diff --git a/ansible/roles/monasca/defaults/main.yml b/ansible/roles/monasca/defaults/main.yml
index 34b8dc0ed5..32125967f0 100644
--- a/ansible/roles/monasca/defaults/main.yml
+++ b/ansible/roles/monasca/defaults/main.yml
@@ -347,7 +347,6 @@ monasca_agent_authorized_roles:
 monasca_delegate_authorized_roles:
   - admin
 
-monasca_api_admin_endpoint: "{{ monasca_api_admin_base_endpoint }}/v2.0"
 monasca_api_internal_endpoint: "{{ monasca_api_internal_base_endpoint }}/v2.0"
 monasca_api_public_endpoint: "{{ monasca_api_public_base_endpoint }}/v2.0"
 
@@ -361,14 +360,12 @@ monasca_ks_services:
     type: "monitoring"
     description: "Monasca monitoring as a service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ monasca_api_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ monasca_api_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ monasca_api_public_endpoint }}'}
   - name: "monasca-log-api"
     type: "logging"
     description: "Monasca logging as a service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ monasca_log_api_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ monasca_log_api_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ monasca_log_api_public_endpoint }}'}
 
diff --git a/ansible/roles/murano/defaults/main.yml b/ansible/roles/murano/defaults/main.yml
index 6bc2534c0f..e5c19b21e7 100644
--- a/ansible/roles/murano/defaults/main.yml
+++ b/ansible/roles/murano/defaults/main.yml
@@ -74,7 +74,6 @@ murano_engine_extra_volumes: "{{ murano_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-murano_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ murano_api_port }}"
 murano_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ murano_api_port }}"
 murano_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ murano_api_port }}"
 
@@ -109,7 +108,6 @@ murano_ks_services:
     type: "application-catalog"
     description: "Openstack Application Catalogue"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ murano_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ murano_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ murano_public_endpoint }}'}
 
diff --git a/ansible/roles/murano/tasks/import_library_packages.yml b/ansible/roles/murano/tasks/import_library_packages.yml
index 438455c44e..ec9bdd9d88 100644
--- a/ansible/roles/murano/tasks/import_library_packages.yml
+++ b/ansible/roles/murano/tasks/import_library_packages.yml
@@ -20,8 +20,8 @@
     --os-password {{ openstack_auth.password }}
     --os-system-scope {{ openstack_auth.system_scope }}
     {% if openstack_cacert != '' %}--os-cacert {{ openstack_cacert }}{% endif %}
-    --os-auth-url {{ keystone_admin_url }}
-    --murano-url {{ murano_admin_endpoint }}
+    --os-auth-url {{ openstack_auth.auth_url }}
+    --murano-url {{ murano_internal_endpoint }}
     package-list
   register: status
   changed_when: False
@@ -37,7 +37,7 @@
     --os-system-scope {{ openstack_auth.system_scope }}
     {% if openstack_cacert != '' %}--os-cacert {{ openstack_cacert }}{% endif %}
     --os-auth-url {{ openstack_auth.auth_url }}
-    --murano-url {{ murano_admin_endpoint }}
+    --murano-url {{ murano_internal_endpoint }}
     package-import --exists-action u --is-public /io.murano.zip
   run_once: True
   delegate_to: "{{ groups['murano-api'][0] }}"
@@ -53,7 +53,7 @@
     --os-system-scope {{ openstack_auth.system_scope }}
     {% if openstack_cacert != '' %}--os-cacert {{ openstack_cacert }}{% endif %}
     --os-auth-url {{ openstack_auth.auth_url }}
-    --murano-url {{ murano_admin_endpoint }}
+    --murano-url {{ murano_internal_endpoint }}
     package-import --exists-action u --is-public /io.murano.applications.zip
   run_once: True
   delegate_to: "{{ groups['murano-api'][0] }}"
diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml
index 3cbdecb82c..392a075f36 100644
--- a/ansible/roles/neutron/defaults/main.yml
+++ b/ansible/roles/neutron/defaults/main.yml
@@ -771,7 +771,6 @@ neutron_ks_services:
     type: "network"
     description: "Openstack Networking"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ neutron_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ neutron_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ neutron_public_endpoint }}'}
 
diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index a98b0a41a6..543babf00c 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -173,15 +173,12 @@ nova_api_bootstrap_extra_volumes: "{{ nova_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-nova_admin_base_endpoint: "{{ admin_protocol }}://{{ nova_internal_fqdn | put_address_in_context('url') }}:{{ nova_api_port }}"
 nova_internal_base_endpoint: "{{ internal_protocol }}://{{ nova_internal_fqdn | put_address_in_context('url') }}:{{ nova_api_port }}"
 nova_public_base_endpoint: "{{ public_protocol }}://{{ nova_external_fqdn | put_address_in_context('url') }}:{{ nova_api_port }}"
 
-nova_legacy_admin_endpoint: "{{ nova_admin_base_endpoint }}/v2/%(tenant_id)s"
 nova_legacy_internal_endpoint: "{{ nova_internal_base_endpoint }}/v2/%(tenant_id)s"
 nova_legacy_public_endpoint: "{{ nova_public_base_endpoint }}/v2/%(tenant_id)s"
 
-nova_admin_endpoint: "{{ nova_admin_base_endpoint }}/v2.1"
 nova_internal_endpoint: "{{ nova_internal_base_endpoint }}/v2.1"
 nova_public_endpoint: "{{ nova_public_base_endpoint }}/v2.1"
 
@@ -202,14 +199,12 @@ nova_ks_services:
     type: "compute_legacy"
     description: "OpenStack Compute Service (Legacy 2.0)"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ nova_legacy_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ nova_legacy_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ nova_legacy_public_endpoint }}'}
   - name: "nova"
     type: "compute"
     description: "OpenStack Compute Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ nova_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ nova_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ nova_public_endpoint }}'}
 
diff --git a/ansible/roles/octavia/defaults/main.yml b/ansible/roles/octavia/defaults/main.yml
index 3d5261962c..3393e1b2a9 100644
--- a/ansible/roles/octavia/defaults/main.yml
+++ b/ansible/roles/octavia/defaults/main.yml
@@ -218,7 +218,6 @@ octavia_ks_services:
     type: "load-balancer"
     description: "Octavia Load Balancing Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ octavia_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ octavia_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ octavia_public_endpoint }}'}
 
diff --git a/ansible/roles/placement/defaults/main.yml b/ansible/roles/placement/defaults/main.yml
index e6d5f9bce9..0af6e5cf32 100644
--- a/ansible/roles/placement/defaults/main.yml
+++ b/ansible/roles/placement/defaults/main.yml
@@ -70,7 +70,6 @@ placement_api_extra_volumes: "{{ default_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-placement_admin_endpoint: "{{ admin_protocol }}://{{ placement_internal_fqdn | put_address_in_context('url') }}:{{ placement_api_port }}"
 placement_internal_endpoint: "{{ internal_protocol }}://{{ placement_internal_fqdn | put_address_in_context('url') }}:{{ placement_api_port }}"
 placement_public_endpoint: "{{ public_protocol }}://{{ placement_external_fqdn | put_address_in_context('url') }}:{{ placement_api_port }}"
 
@@ -115,7 +114,6 @@ placement_ks_services:
     type: "placement"
     description: "Placement Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ placement_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ placement_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ placement_public_endpoint }}'}
 
diff --git a/ansible/roles/sahara/defaults/main.yml b/ansible/roles/sahara/defaults/main.yml
index 8a5f208426..fb27d31e72 100644
--- a/ansible/roles/sahara/defaults/main.yml
+++ b/ansible/roles/sahara/defaults/main.yml
@@ -106,7 +106,6 @@ sahara_engine_extra_volumes: "{{ sahara_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-sahara_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ sahara_api_port }}"
 sahara_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ sahara_api_port }}"
 sahara_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ sahara_api_port }}"
 
@@ -142,7 +141,6 @@ sahara_ks_services:
     type: "data-processing"
     description: "Sahara Data Processing"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ sahara_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ sahara_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ sahara_public_endpoint }}'}
 
diff --git a/ansible/roles/senlin/defaults/main.yml b/ansible/roles/senlin/defaults/main.yml
index 7db54276b3..83ed54f3ca 100644
--- a/ansible/roles/senlin/defaults/main.yml
+++ b/ansible/roles/senlin/defaults/main.yml
@@ -169,7 +169,6 @@ senlin_health_manager_extra_volumes: "{{ senlin_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-senlin_admin_endpoint: "{{ admin_protocol }}://{{ senlin_internal_fqdn | put_address_in_context('url') }}:{{ senlin_api_port }}"
 senlin_internal_endpoint: "{{ internal_protocol }}://{{ senlin_internal_fqdn | put_address_in_context('url') }}:{{ senlin_api_port }}"
 senlin_public_endpoint: "{{ public_protocol }}://{{ senlin_external_fqdn | put_address_in_context('url') }}:{{ senlin_api_port }}"
 
@@ -206,7 +205,6 @@ senlin_ks_services:
     type: "clustering"
     description: "Senlin Clustering Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ senlin_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ senlin_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ senlin_public_endpoint }}'}
 
diff --git a/ansible/roles/solum/defaults/main.yml b/ansible/roles/solum/defaults/main.yml
index e5b878e514..08d27e7459 100644
--- a/ansible/roles/solum/defaults/main.yml
+++ b/ansible/roles/solum/defaults/main.yml
@@ -125,11 +125,9 @@ solum_conductor_extra_volumes: "{{ solum_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-solum_image_builder_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ solum_image_builder_port }}"
 solum_image_builder_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ solum_image_builder_port }}"
 solum_image_builder_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ solum_image_builder_port }}"
 
-solum_application_deployment_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ solum_application_deployment_port }}"
 solum_application_deployment_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ solum_application_deployment_port }}"
 solum_application_deployment_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ solum_application_deployment_port }}"
 
@@ -156,14 +154,12 @@ solum_ks_services:
     type: "image_builder"
     description: "Openstack Solum Image Builder"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ solum_image_builder_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ solum_image_builder_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ solum_image_builder_public_endpoint }}'}
   - name: "solum_application_deployment"
     type: "application_deployment"
     description: "Openstack Solum Application Deployment"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ solum_application_deployment_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ solum_application_deployment_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ solum_application_deployment_public_endpoint }}'}
 
diff --git a/ansible/roles/swift/defaults/main.yml b/ansible/roles/swift/defaults/main.yml
index 9e08fab3b8..12a28d8418 100644
--- a/ansible/roles/swift/defaults/main.yml
+++ b/ansible/roles/swift/defaults/main.yml
@@ -84,7 +84,6 @@ swift_ks_services:
     type: "object-store"
     description: "Openstack Object Storage"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ swift_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ swift_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ swift_public_endpoint }}'}
 
diff --git a/ansible/roles/tacker/defaults/main.yml b/ansible/roles/tacker/defaults/main.yml
index 3624d53788..756b6f6f1c 100644
--- a/ansible/roles/tacker/defaults/main.yml
+++ b/ansible/roles/tacker/defaults/main.yml
@@ -116,7 +116,6 @@ tacker_hosts: "{{ [groups['tacker']|first] }}"
 ####################
 # OpenStack
 ####################
-tacker_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ tacker_server_port }}"
 tacker_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ tacker_server_port }}"
 tacker_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ tacker_server_port }}"
 
@@ -151,7 +150,6 @@ tacker_ks_services:
     type: "nfv-orchestration"
     description: "Tacker Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ tacker_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ tacker_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ tacker_public_endpoint }}'}
 
diff --git a/ansible/roles/trove/defaults/main.yml b/ansible/roles/trove/defaults/main.yml
index bf6b20ede5..8908bbf02f 100644
--- a/ansible/roles/trove/defaults/main.yml
+++ b/ansible/roles/trove/defaults/main.yml
@@ -138,7 +138,6 @@ trove_taskmanager_extra_volumes: "{{ trove_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-trove_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ trove_api_port }}/v1.0/%(tenant_id)s"
 trove_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ trove_api_port }}/v1.0/%(tenant_id)s"
 trove_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ trove_api_port }}/v1.0/%(tenant_id)s"
 
@@ -174,7 +173,6 @@ trove_ks_services:
     type: "database"
     description: "Trove Database Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ trove_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ trove_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ trove_public_endpoint }}'}
 
diff --git a/ansible/roles/vitrage/defaults/main.yml b/ansible/roles/vitrage/defaults/main.yml
index bd64c9b892..3ca0c0e334 100644
--- a/ansible/roles/vitrage/defaults/main.yml
+++ b/ansible/roles/vitrage/defaults/main.yml
@@ -269,7 +269,6 @@ vitrage_ks_services:
     type: "rca"
     description: "Root Cause Analysis Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ vitrage_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ vitrage_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ vitrage_public_endpoint }}'}
 
diff --git a/ansible/roles/watcher/defaults/main.yml b/ansible/roles/watcher/defaults/main.yml
index 6872690122..de02fe1da8 100644
--- a/ansible/roles/watcher/defaults/main.yml
+++ b/ansible/roles/watcher/defaults/main.yml
@@ -135,7 +135,6 @@ watcher_engine_extra_volumes: "{{ watcher_extra_volumes }}"
 ####################
 # OpenStack
 ####################
-watcher_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ watcher_api_port }}"
 watcher_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ watcher_api_port }}"
 watcher_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ watcher_api_port }}"
 
@@ -172,7 +171,6 @@ watcher_ks_services:
     type: "infra-optim"
     description: "Infrastructure Optimization service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ watcher_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ watcher_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ watcher_public_endpoint }}'}
 
diff --git a/ansible/roles/zun/defaults/main.yml b/ansible/roles/zun/defaults/main.yml
index fdbc7278e3..23656d6080 100644
--- a/ansible/roles/zun/defaults/main.yml
+++ b/ansible/roles/zun/defaults/main.yml
@@ -187,7 +187,6 @@ zun_cni_daemon_extra_volumes: "{{ zun_extra_volumes }}"
 ####################
 ## OpenStack
 ####################
-zun_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ zun_api_port }}/v1/"
 zun_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ zun_api_port }}/v1/"
 zun_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ zun_api_port }}/v1/"
 
@@ -214,7 +213,6 @@ zun_ks_services:
     type: "container"
     description: "Container Service"
     endpoints:
-      - {'interface': 'admin', 'url': '{{ zun_admin_endpoint }}'}
       - {'interface': 'internal', 'url': '{{ zun_internal_endpoint }}'}
       - {'interface': 'public', 'url': '{{ zun_public_endpoint }}'}
 
diff --git a/releasenotes/notes/drop-admin-endpoints-3d3467779e571a7e.yaml b/releasenotes/notes/drop-admin-endpoints-3d3467779e571a7e.yaml
new file mode 100644
index 0000000000..4ed147ed90
--- /dev/null
+++ b/releasenotes/notes/drop-admin-endpoints-3d3467779e571a7e.yaml
@@ -0,0 +1,15 @@
+---
+features:
+  - |
+    With this release, kolla-ansible no longer creates admin endpoints for any
+    service other than Keystone. Make sure that you only reference public or
+    internal endpoints in your applications and configurations.
+upgrade:
+  - |
+    With this release, kolla-ansible no longer creates admin endpoints for any
+    service other than Keystone. Existing endpoints will not be removed
+    automatically, if you want to clean up your existing cloud, you can use a
+    command like::
+
+        openstack endpoint list --interface admin -f value | \
+        awk '!/keystone/ {print $1}' | xargs openstack endpoint delete