aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/group_vars/all.yml1
-rw-r--r--ansible/roles/aodh/defaults/main.yml8
-rw-r--r--ansible/roles/barbican/defaults/main.yml6
-rw-r--r--ansible/roles/bifrost/defaults/main.yml2
-rw-r--r--ansible/roles/blazar/defaults/main.yml4
-rw-r--r--ansible/roles/ceilometer/defaults/main.yml8
-rw-r--r--ansible/roles/cinder/defaults/main.yml8
-rw-r--r--ansible/roles/cloudkitty/defaults/main.yml4
-rw-r--r--ansible/roles/collectd/defaults/main.yml2
-rw-r--r--ansible/roles/common/defaults/main.yml6
-rw-r--r--ansible/roles/cyborg/defaults/main.yml6
-rw-r--r--ansible/roles/designate/defaults/main.yml14
-rw-r--r--ansible/roles/etcd/defaults/main.yml2
-rw-r--r--ansible/roles/glance/defaults/main.yml4
-rw-r--r--ansible/roles/gnocchi/defaults/main.yml6
-rw-r--r--ansible/roles/grafana/defaults/main.yml2
-rw-r--r--ansible/roles/hacluster/defaults/main.yml6
-rw-r--r--ansible/roles/heat/defaults/main.yml6
-rw-r--r--ansible/roles/horizon/defaults/main.yml2
-rw-r--r--ansible/roles/influxdb/defaults/main.yml2
-rw-r--r--ansible/roles/ironic/defaults/main.yml12
-rw-r--r--ansible/roles/iscsi/defaults/main.yml4
-rw-r--r--ansible/roles/keystone/defaults/main.yml6
-rw-r--r--ansible/roles/kuryr/defaults/main.yml2
-rw-r--r--ansible/roles/letsencrypt/defaults/main.yml4
-rw-r--r--ansible/roles/loadbalancer/defaults/main.yml8
-rw-r--r--ansible/roles/magnum/defaults/main.yml4
-rw-r--r--ansible/roles/manila/defaults/main.yml8
-rw-r--r--ansible/roles/mariadb/defaults/main.yml4
-rw-r--r--ansible/roles/masakari/defaults/main.yml6
-rw-r--r--ansible/roles/memcached/defaults/main.yml2
-rw-r--r--ansible/roles/mistral/defaults/main.yml8
-rw-r--r--ansible/roles/multipathd/defaults/main.yml2
-rw-r--r--ansible/roles/neutron/defaults/main.yml32
-rw-r--r--ansible/roles/nova-cell/defaults/main.yml16
-rw-r--r--ansible/roles/nova/defaults/main.yml6
-rw-r--r--ansible/roles/octavia/defaults/main.yml10
-rw-r--r--ansible/roles/opensearch/defaults/main.yml4
-rw-r--r--ansible/roles/openvswitch/defaults/main.yml4
-rw-r--r--ansible/roles/ovn-controller/defaults/main.yml2
-rw-r--r--ansible/roles/ovn-db/defaults/main.yml8
-rw-r--r--ansible/roles/ovs-dpdk/defaults/main.yml4
-rw-r--r--ansible/roles/placement/defaults/main.yml2
-rw-r--r--ansible/roles/prometheus/defaults/main.yml20
-rw-r--r--ansible/roles/rabbitmq/defaults/main.yml2
-rw-r--r--ansible/roles/redis/defaults/main.yml4
-rw-r--r--ansible/roles/skyline/defaults/main.yml4
-rw-r--r--ansible/roles/tacker/defaults/main.yml4
-rw-r--r--ansible/roles/telegraf/defaults/main.yml2
-rw-r--r--ansible/roles/trove/defaults/main.yml6
-rw-r--r--ansible/roles/venus/defaults/main.yml4
-rw-r--r--ansible/roles/watcher/defaults/main.yml6
-rw-r--r--ansible/roles/zun/defaults/main.yml8
53 files changed, 159 insertions, 158 deletions
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 038cfcee6..03f83a940 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -106,6 +106,7 @@ docker_registry_email:
docker_registry: "quay.io"
docker_namespace: "openstack.kolla"
docker_image_name_prefix: ""
+docker_image_url: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}"
docker_registry_username:
# Please read the docs carefully before applying docker_registry_insecure.
docker_registry_insecure: "no"
diff --git a/ansible/roles/aodh/defaults/main.yml b/ansible/roles/aodh/defaults/main.yml
index c6836f94d..16d072f8b 100644
--- a/ansible/roles/aodh/defaults/main.yml
+++ b/ansible/roles/aodh/defaults/main.yml
@@ -102,19 +102,19 @@ aodh_enabled_notification_topics: "{{ aodh_notification_topics | selectattr('ena
####################
aodh_tag: "{{ openstack_tag }}"
-aodh_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}aodh-api"
+aodh_api_image: "{{ docker_image_url }}aodh-api"
aodh_api_tag: "{{ aodh_tag }}"
aodh_api_image_full: "{{ aodh_api_image }}:{{ aodh_api_tag }}"
-aodh_evaluator_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}aodh-evaluator"
+aodh_evaluator_image: "{{ docker_image_url }}aodh-evaluator"
aodh_evaluator_tag: "{{ aodh_tag }}"
aodh_evaluator_image_full: "{{ aodh_evaluator_image }}:{{ aodh_evaluator_tag }}"
-aodh_listener_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}aodh-listener"
+aodh_listener_image: "{{ docker_image_url }}aodh-listener"
aodh_listener_tag: "{{ aodh_tag }}"
aodh_listener_image_full: "{{ aodh_listener_image }}:{{ aodh_listener_tag }}"
-aodh_notifier_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}aodh-notifier"
+aodh_notifier_image: "{{ docker_image_url }}aodh-notifier"
aodh_notifier_tag: "{{ aodh_tag }}"
aodh_notifier_image_full: "{{ aodh_notifier_image }}:{{ aodh_notifier_tag }}"
diff --git a/ansible/roles/barbican/defaults/main.yml b/ansible/roles/barbican/defaults/main.yml
index 4c2ab6604..f13a5d8d6 100644
--- a/ansible/roles/barbican/defaults/main.yml
+++ b/ansible/roles/barbican/defaults/main.yml
@@ -78,15 +78,15 @@ barbican_database_shard:
####################
barbican_tag: "{{ openstack_tag }}"
-barbican_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}barbican-api"
+barbican_api_image: "{{ docker_image_url }}barbican-api"
barbican_api_tag: "{{ barbican_tag }}"
barbican_api_image_full: "{{ barbican_api_image }}:{{ barbican_api_tag }}"
-barbican_keystone_listener_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}barbican-keystone-listener"
+barbican_keystone_listener_image: "{{ docker_image_url }}barbican-keystone-listener"
barbican_keystone_listener_tag: "{{ barbican_tag }}"
barbican_keystone_listener_image_full: "{{ barbican_keystone_listener_image }}:{{ barbican_keystone_listener_tag }}"
-barbican_worker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}barbican-worker"
+barbican_worker_image: "{{ docker_image_url }}barbican-worker"
barbican_worker_tag: "{{ barbican_tag }}"
barbican_worker_image_full: "{{ barbican_worker_image }}:{{ barbican_worker_tag }}"
diff --git a/ansible/roles/bifrost/defaults/main.yml b/ansible/roles/bifrost/defaults/main.yml
index 60b74d330..814bcc9de 100644
--- a/ansible/roles/bifrost/defaults/main.yml
+++ b/ansible/roles/bifrost/defaults/main.yml
@@ -4,7 +4,7 @@
####################
bifrost_tag: "{{ openstack_tag }}"
-bifrost_deploy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}bifrost-deploy"
+bifrost_deploy_image: "{{ docker_image_url }}bifrost-deploy"
bifrost_deploy_tag: "{{ bifrost_tag }}"
bifrost_deploy_image_full: "{{ bifrost_deploy_image }}:{{ bifrost_deploy_tag }}"
diff --git a/ansible/roles/blazar/defaults/main.yml b/ansible/roles/blazar/defaults/main.yml
index 1b2ebc750..e76ac3a3c 100644
--- a/ansible/roles/blazar/defaults/main.yml
+++ b/ansible/roles/blazar/defaults/main.yml
@@ -80,11 +80,11 @@ blazar_database_shard:
####################
blazar_tag: "{{ openstack_tag }}"
-blazar_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}blazar-manager"
+blazar_manager_image: "{{ docker_image_url }}blazar-manager"
blazar_manager_tag: "{{ blazar_tag }}"
blazar_manager_image_full: "{{ blazar_manager_image }}:{{ blazar_manager_tag }}"
-blazar_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}blazar-api"
+blazar_api_image: "{{ docker_image_url }}blazar-api"
blazar_api_tag: "{{ blazar_tag }}"
blazar_api_image_full: "{{ blazar_api_image }}:{{ blazar_api_tag }}"
diff --git a/ansible/roles/ceilometer/defaults/main.yml b/ansible/roles/ceilometer/defaults/main.yml
index e4c538d90..8c7954a48 100644
--- a/ansible/roles/ceilometer/defaults/main.yml
+++ b/ansible/roles/ceilometer/defaults/main.yml
@@ -46,19 +46,19 @@ ceilometer_config_validation:
####################
ceilometer_tag: "{{ openstack_tag }}"
-ceilometer_notification_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ceilometer-notification"
+ceilometer_notification_image: "{{ docker_image_url }}ceilometer-notification"
ceilometer_notification_tag: "{{ ceilometer_tag }}"
ceilometer_notification_image_full: "{{ ceilometer_notification_image }}:{{ ceilometer_notification_tag }}"
-ceilometer_central_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ceilometer-central"
+ceilometer_central_image: "{{ docker_image_url }}ceilometer-central"
ceilometer_central_tag: "{{ ceilometer_tag }}"
ceilometer_central_image_full: "{{ ceilometer_central_image }}:{{ ceilometer_central_tag }}"
-ceilometer_compute_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ceilometer-compute"
+ceilometer_compute_image: "{{ docker_image_url }}ceilometer-compute"
ceilometer_compute_tag: "{{ ceilometer_tag }}"
ceilometer_compute_image_full: "{{ ceilometer_compute_image }}:{{ ceilometer_compute_tag }}"
-ceilometer_ipmi_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ceilometer-ipmi"
+ceilometer_ipmi_image: "{{ docker_image_url }}ceilometer-ipmi"
ceilometer_ipmi_tag: "{{ ceilometer_tag }}"
ceilometer_ipmi_image_full: "{{ ceilometer_ipmi_image }}:{{ ceilometer_ipmi_tag }}"
diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml
index a1b0f321f..54253d783 100644
--- a/ansible/roles/cinder/defaults/main.yml
+++ b/ansible/roles/cinder/defaults/main.yml
@@ -91,19 +91,19 @@ cinder_database_shard:
####################
cinder_tag: "{{ openstack_tag }}"
-cinder_volume_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cinder-volume"
+cinder_volume_image: "{{ docker_image_url }}cinder-volume"
cinder_volume_tag: "{{ cinder_tag }}"
cinder_volume_image_full: "{{ cinder_volume_image }}:{{ cinder_volume_tag }}"
-cinder_scheduler_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cinder-scheduler"
+cinder_scheduler_image: "{{ docker_image_url }}cinder-scheduler"
cinder_scheduler_tag: "{{ cinder_tag }}"
cinder_scheduler_image_full: "{{ cinder_scheduler_image }}:{{ cinder_scheduler_tag }}"
-cinder_backup_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cinder-backup"
+cinder_backup_image: "{{ docker_image_url }}cinder-backup"
cinder_backup_tag: "{{ cinder_tag }}"
cinder_backup_image_full: "{{ cinder_backup_image }}:{{ cinder_backup_tag }}"
-cinder_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cinder-api"
+cinder_api_image: "{{ docker_image_url }}cinder-api"
cinder_api_tag: "{{ cinder_tag }}"
cinder_api_image_full: "{{ cinder_api_image }}:{{ cinder_api_tag }}"
diff --git a/ansible/roles/cloudkitty/defaults/main.yml b/ansible/roles/cloudkitty/defaults/main.yml
index 98ffe3fbd..987531d59 100644
--- a/ansible/roles/cloudkitty/defaults/main.yml
+++ b/ansible/roles/cloudkitty/defaults/main.yml
@@ -68,11 +68,11 @@ cloudkitty_database_shard:
####################
cloudkitty_tag: "{{ openstack_tag }}"
-cloudkitty_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cloudkitty-api"
+cloudkitty_api_image: "{{ docker_image_url }}cloudkitty-api"
cloudkitty_api_tag: "{{ cloudkitty_tag }}"
cloudkitty_api_image_full: "{{ cloudkitty_api_image }}:{{ cloudkitty_api_tag }}"
-cloudkitty_processor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cloudkitty-processor"
+cloudkitty_processor_image: "{{ docker_image_url }}cloudkitty-processor"
cloudkitty_processor_tag: "{{ cloudkitty_tag }}"
cloudkitty_processor_image_full: "{{ cloudkitty_processor_image }}:{{ cloudkitty_processor_tag }}"
diff --git a/ansible/roles/collectd/defaults/main.yml b/ansible/roles/collectd/defaults/main.yml
index a8c98fe57..20d339fde 100644
--- a/ansible/roles/collectd/defaults/main.yml
+++ b/ansible/roles/collectd/defaults/main.yml
@@ -12,7 +12,7 @@ collectd_services:
####################
# Docker
####################
-collectd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}collectd"
+collectd_image: "{{ docker_image_url }}collectd"
collectd_tag: "{{ openstack_tag }}"
collectd_image_full: "{{ collectd_image }}:{{ collectd_tag }}"
diff --git a/ansible/roles/common/defaults/main.yml b/ansible/roles/common/defaults/main.yml
index 830e5c3ad..12922e0b4 100644
--- a/ansible/roles/common/defaults/main.yml
+++ b/ansible/roles/common/defaults/main.yml
@@ -62,15 +62,15 @@ cron_dimensions: "{{ default_container_dimensions }}"
kolla_toolbox_dimensions: "{{ default_container_dimensions }}"
fluentd_dimensions: "{{ default_container_dimensions }}"
-kolla_toolbox_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}kolla-toolbox"
+kolla_toolbox_image: "{{ docker_image_url }}kolla-toolbox"
kolla_toolbox_tag: "{{ common_tag }}"
kolla_toolbox_image_full: "{{ kolla_toolbox_image }}:{{ kolla_toolbox_tag }}"
-cron_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cron"
+cron_image: "{{ docker_image_url }}cron"
cron_tag: "{{ common_tag }}"
cron_image_full: "{{ cron_image }}:{{ cron_tag }}"
-fluentd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}fluentd"
+fluentd_image: "{{ docker_image_url }}fluentd"
fluentd_tag: "{{ common_tag }}"
fluentd_image_full: "{{ fluentd_image }}:{{ fluentd_tag }}"
diff --git a/ansible/roles/cyborg/defaults/main.yml b/ansible/roles/cyborg/defaults/main.yml
index 17ac35877..6796376e0 100644
--- a/ansible/roles/cyborg/defaults/main.yml
+++ b/ansible/roles/cyborg/defaults/main.yml
@@ -73,15 +73,15 @@ cyborg_database_shard:
####################
cyborg_tag: "{{ openstack_tag }}"
-cyborg_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cyborg-api"
+cyborg_api_image: "{{ docker_image_url }}cyborg-api"
cyborg_api_tag: "{{ cyborg_tag }}"
cyborg_api_image_full: "{{ cyborg_api_image }}:{{ cyborg_api_tag }}"
-cyborg_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cyborg-agent"
+cyborg_agent_image: "{{ docker_image_url }}cyborg-agent"
cyborg_agent_tag: "{{ cyborg_tag }}"
cyborg_agent_image_full: "{{ cyborg_agent_image }}:{{ cyborg_agent_tag }}"
-cyborg_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}cyborg-conductor"
+cyborg_conductor_image: "{{ docker_image_url }}cyborg-conductor"
cyborg_conductor_tag: "{{ cyborg_tag }}"
cyborg_conductor_image_full: "{{ cyborg_conductor_image }}:{{ cyborg_conductor_tag }}"
diff --git a/ansible/roles/designate/defaults/main.yml b/ansible/roles/designate/defaults/main.yml
index b7d85bca2..fc4014f9b 100644
--- a/ansible/roles/designate/defaults/main.yml
+++ b/ansible/roles/designate/defaults/main.yml
@@ -108,31 +108,31 @@ designate_database_shard:
####################
designate_tag: "{{ openstack_tag }}"
-designate_central_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-central"
+designate_central_image: "{{ docker_image_url }}designate-central"
designate_central_tag: "{{ designate_tag }}"
designate_central_image_full: "{{ designate_central_image }}:{{ designate_central_tag }}"
-designate_producer_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-producer"
+designate_producer_image: "{{ docker_image_url }}designate-producer"
designate_producer_tag: "{{ designate_tag }}"
designate_producer_image_full: "{{ designate_producer_image }}:{{ designate_producer_tag }}"
-designate_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-api"
+designate_api_image: "{{ docker_image_url }}designate-api"
designate_api_tag: "{{ designate_tag }}"
designate_api_image_full: "{{ designate_api_image }}:{{ designate_api_tag }}"
-designate_backend_bind9_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-backend-bind9"
+designate_backend_bind9_image: "{{ docker_image_url }}designate-backend-bind9"
designate_backend_bind9_tag: "{{ designate_tag }}"
designate_backend_bind9_image_full: "{{ designate_backend_bind9_image }}:{{ designate_backend_bind9_tag }}"
-designate_mdns_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-mdns"
+designate_mdns_image: "{{ docker_image_url }}designate-mdns"
designate_mdns_tag: "{{ designate_tag }}"
designate_mdns_image_full: "{{ designate_mdns_image }}:{{ designate_mdns_tag }}"
-designate_sink_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-sink"
+designate_sink_image: "{{ docker_image_url }}designate-sink"
designate_sink_tag: "{{ designate_tag }}"
designate_sink_image_full: "{{ designate_sink_image }}:{{ designate_sink_tag }}"
-designate_worker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}designate-worker"
+designate_worker_image: "{{ docker_image_url }}designate-worker"
designate_worker_tag: "{{ designate_tag }}"
designate_worker_image_full: "{{ designate_worker_image }}:{{ designate_worker_tag }}"
diff --git a/ansible/roles/etcd/defaults/main.yml b/ansible/roles/etcd/defaults/main.yml
index 4cd94c4a3..1ce9c63e6 100644
--- a/ansible/roles/etcd/defaults/main.yml
+++ b/ansible/roles/etcd/defaults/main.yml
@@ -57,7 +57,7 @@ etcd_bootstrap_cluster_environment:
####################
# Docker
####################
-etcd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}etcd"
+etcd_image: "{{ docker_image_url }}etcd"
etcd_tag: "{{ openstack_tag }}"
etcd_image_full: "{{ etcd_image }}:{{ etcd_tag }}"
etcd_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml
index 9f3e41068..65e3cbbf7 100644
--- a/ansible/roles/glance/defaults/main.yml
+++ b/ansible/roles/glance/defaults/main.yml
@@ -157,11 +157,11 @@ glance_backend_s3_secret_key: "{{ s3_secret_key }}"
haproxy_tag: "{{ openstack_tag }}"
glance_tag: "{{ openstack_tag }}"
-glance_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}glance-api"
+glance_api_image: "{{ docker_image_url }}glance-api"
glance_api_tag: "{{ glance_tag }}"
glance_api_image_full: "{{ glance_api_image }}:{{ glance_api_tag }}"
-glance_tls_proxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}haproxy"
+glance_tls_proxy_image: "{{ docker_image_url }}haproxy"
glance_tls_proxy_tag: "{{ haproxy_tag }}"
glance_tls_proxy_image_full: "{{ glance_tls_proxy_image }}:{{ glance_tls_proxy_tag }}"
diff --git a/ansible/roles/gnocchi/defaults/main.yml b/ansible/roles/gnocchi/defaults/main.yml
index af469e803..2cd1e86f0 100644
--- a/ansible/roles/gnocchi/defaults/main.yml
+++ b/ansible/roles/gnocchi/defaults/main.yml
@@ -76,15 +76,15 @@ gnocchi_database_shard:
####################
gnocchi_tag: "{{ openstack_tag }}"
-gnocchi_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}gnocchi-api"
+gnocchi_api_image: "{{ docker_image_url }}gnocchi-api"
gnocchi_api_tag: "{{ gnocchi_tag }}"
gnocchi_api_image_full: "{{ gnocchi_api_image }}:{{ gnocchi_api_tag }}"
-gnocchi_statsd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}gnocchi-statsd"
+gnocchi_statsd_image: "{{ docker_image_url }}gnocchi-statsd"
gnocchi_statsd_tag: "{{ gnocchi_tag }}"
gnocchi_statsd_image_full: "{{ gnocchi_statsd_image }}:{{ gnocchi_statsd_tag }}"
-gnocchi_metricd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}gnocchi-metricd"
+gnocchi_metricd_image: "{{ docker_image_url }}gnocchi-metricd"
gnocchi_metricd_tag: "{{ gnocchi_tag }}"
gnocchi_metricd_image_full: "{{ gnocchi_metricd_image }}:{{ gnocchi_metricd_tag }}"
diff --git a/ansible/roles/grafana/defaults/main.yml b/ansible/roles/grafana/defaults/main.yml
index 1b0fee3f1..d62ea1dd4 100644
--- a/ansible/roles/grafana/defaults/main.yml
+++ b/ansible/roles/grafana/defaults/main.yml
@@ -78,7 +78,7 @@ grafana_data_sources:
##########
# Grafana
##########
-grafana_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}grafana"
+grafana_image: "{{ docker_image_url }}grafana"
grafana_tag: "{{ openstack_tag }}"
grafana_image_full: "{{ grafana_image }}:{{ grafana_tag }}"
grafana_admin_username: "admin"
diff --git a/ansible/roles/hacluster/defaults/main.yml b/ansible/roles/hacluster/defaults/main.yml
index 2619eccf9..f84f47a9d 100644
--- a/ansible/roles/hacluster/defaults/main.yml
+++ b/ansible/roles/hacluster/defaults/main.yml
@@ -42,15 +42,15 @@ hacluster_services:
####################
hacluster_tag: "{{ openstack_tag }}"
-hacluster_corosync_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}hacluster-corosync"
+hacluster_corosync_image: "{{ docker_image_url }}hacluster-corosync"
hacluster_corosync_tag: "{{ openstack_tag }}"
hacluster_corosync_image_full: "{{ hacluster_corosync_image }}:{{ hacluster_corosync_tag }}"
-hacluster_pacemaker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}hacluster-pacemaker"
+hacluster_pacemaker_image: "{{ docker_image_url }}hacluster-pacemaker"
hacluster_pacemaker_tag: "{{ openstack_tag }}"
hacluster_pacemaker_image_full: "{{ hacluster_pacemaker_image }}:{{ hacluster_pacemaker_tag }}"
-hacluster_pacemaker_remote_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}hacluster-pacemaker-remote"
+hacluster_pacemaker_remote_image: "{{ docker_image_url }}hacluster-pacemaker-remote"
hacluster_pacemaker_remote_tag: "{{ openstack_tag }}"
hacluster_pacemaker_remote_image_full: "{{ hacluster_pacemaker_remote_image }}:{{ hacluster_pacemaker_remote_tag }}"
diff --git a/ansible/roles/heat/defaults/main.yml b/ansible/roles/heat/defaults/main.yml
index a4e2eb717..3697d45cd 100644
--- a/ansible/roles/heat/defaults/main.yml
+++ b/ansible/roles/heat/defaults/main.yml
@@ -98,15 +98,15 @@ heat_database_shard:
####################
heat_tag: "{{ openstack_tag }}"
-heat_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}heat-api"
+heat_api_image: "{{ docker_image_url }}heat-api"
heat_api_tag: "{{ heat_tag }}"
heat_api_image_full: "{{ heat_api_image }}:{{ heat_api_tag }}"
-heat_api_cfn_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}heat-api-cfn"
+heat_api_cfn_image: "{{ docker_image_url }}heat-api-cfn"
heat_api_cfn_tag: "{{ heat_tag }}"
heat_api_cfn_image_full: "{{ heat_api_cfn_image }}:{{ heat_api_cfn_tag }}"
-heat_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}heat-engine"
+heat_engine_image: "{{ docker_image_url }}heat-engine"
heat_engine_tag: "{{ heat_tag }}"
heat_engine_image_full: "{{ heat_engine_image }}:{{ heat_engine_tag }}"
diff --git a/ansible/roles/horizon/defaults/main.yml b/ansible/roles/horizon/defaults/main.yml
index ada512ddf..7115ee513 100644
--- a/ansible/roles/horizon/defaults/main.yml
+++ b/ansible/roles/horizon/defaults/main.yml
@@ -104,7 +104,7 @@ horizon_database_shard:
####################
# Docker
####################
-horizon_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}horizon"
+horizon_image: "{{ docker_image_url }}horizon"
horizon_tag: "{{ openstack_tag }}"
horizon_image_full: "{{ horizon_image }}:{{ horizon_tag }}"
diff --git a/ansible/roles/influxdb/defaults/main.yml b/ansible/roles/influxdb/defaults/main.yml
index c384e87cf..62b3505a5 100644
--- a/ansible/roles/influxdb/defaults/main.yml
+++ b/ansible/roles/influxdb/defaults/main.yml
@@ -26,7 +26,7 @@ influxdb_enable_tsi: True
####################
# Docker
####################
-influxdb_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}influxdb"
+influxdb_image: "{{ docker_image_url }}influxdb"
influxdb_tag: "{{ openstack_tag }}"
influxdb_image_full: "{{ influxdb_image }}:{{ influxdb_tag }}"
influxdb_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/ironic/defaults/main.yml b/ansible/roles/ironic/defaults/main.yml
index 62e52cea5..5d43ffebb 100644
--- a/ansible/roles/ironic/defaults/main.yml
+++ b/ansible/roles/ironic/defaults/main.yml
@@ -143,27 +143,27 @@ ironic_database_shard:
####################
ironic_tag: "{{ openstack_tag }}"
-ironic_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-api"
+ironic_api_image: "{{ docker_image_url }}ironic-api"
ironic_api_tag: "{{ ironic_tag }}"
ironic_api_image_full: "{{ ironic_api_image }}:{{ ironic_api_tag }}"
-ironic_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-conductor"
+ironic_conductor_image: "{{ docker_image_url }}ironic-conductor"
ironic_conductor_tag: "{{ ironic_tag }}"
ironic_conductor_image_full: "{{ ironic_conductor_image }}:{{ ironic_conductor_tag }}"
-ironic_pxe_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-pxe"
+ironic_pxe_image: "{{ docker_image_url }}ironic-pxe"
ironic_pxe_tag: "{{ ironic_tag }}"
ironic_pxe_image_full: "{{ ironic_pxe_image }}:{{ ironic_pxe_tag }}"
-ironic_inspector_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-inspector"
+ironic_inspector_image: "{{ docker_image_url }}ironic-inspector"
ironic_inspector_tag: "{{ ironic_tag }}"
ironic_inspector_image_full: "{{ ironic_inspector_image }}:{{ ironic_inspector_tag }}"
-ironic_dnsmasq_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}dnsmasq"
+ironic_dnsmasq_image: "{{ docker_image_url }}dnsmasq"
ironic_dnsmasq_tag: "{{ ironic_tag }}"
ironic_dnsmasq_image_full: "{{ ironic_dnsmasq_image }}:{{ ironic_dnsmasq_tag }}"
-ironic_prometheus_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-prometheus-exporter"
+ironic_prometheus_exporter_image: "{{ docker_image_url }}ironic-prometheus-exporter"
ironic_prometheus_exporter_tag: "{{ ironic_tag }}"
ironic_prometheus_exporter_image_full: "{{ ironic_prometheus_exporter_image }}:{{ ironic_prometheus_exporter_tag }}"
diff --git a/ansible/roles/iscsi/defaults/main.yml b/ansible/roles/iscsi/defaults/main.yml
index 8067c794a..13aac3a88 100644
--- a/ansible/roles/iscsi/defaults/main.yml
+++ b/ansible/roles/iscsi/defaults/main.yml
@@ -26,11 +26,11 @@ tgtd_interface_address: "{{ api_interface_address }}"
####################
iscsi_tag: "{{ openstack_tag }}"
-iscsid_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}iscsid"
+iscsid_image: "{{ docker_image_url }}iscsid"
iscsid_tag: "{{ iscsi_tag }}"
iscsid_image_full: "{{ iscsid_image }}:{{ iscsid_tag }}"
-tgtd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}tgtd"
+tgtd_image: "{{ docker_image_url }}tgtd"
tgtd_tag: "{{ iscsi_tag }}"
tgtd_image_full: "{{ tgtd_image }}:{{ tgtd_tag }}"
diff --git a/ansible/roles/keystone/defaults/main.yml b/ansible/roles/keystone/defaults/main.yml
index 5c1775dca..bfeb607f3 100644
--- a/ansible/roles/keystone/defaults/main.yml
+++ b/ansible/roles/keystone/defaults/main.yml
@@ -97,15 +97,15 @@ keystone_groupname: "keystone"
####################
keystone_tag: "{{ openstack_tag }}"
-keystone_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}keystone"
+keystone_image: "{{ docker_image_url }}keystone"
keystone_service_tag: "{{ keystone_tag }}"
keystone_image_full: "{{ keystone_image }}:{{ keystone_service_tag }}"
-keystone_fernet_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}keystone-fernet"
+keystone_fernet_image: "{{ docker_image_url }}keystone-fernet"
keystone_fernet_tag: "{{ keystone_tag }}"
keystone_fernet_image_full: "{{ keystone_fernet_image }}:{{ keystone_fernet_tag }}"
-keystone_ssh_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}keystone-ssh"
+keystone_ssh_image: "{{ docker_image_url }}keystone-ssh"
keystone_ssh_tag: "{{ keystone_tag }}"
keystone_ssh_image_full: "{{ keystone_ssh_image }}:{{ keystone_ssh_tag }}"
diff --git a/ansible/roles/kuryr/defaults/main.yml b/ansible/roles/kuryr/defaults/main.yml
index 1476eed9a..392a31065 100644
--- a/ansible/roles/kuryr/defaults/main.yml
+++ b/ansible/roles/kuryr/defaults/main.yml
@@ -30,7 +30,7 @@ kuryr_config_validation:
####################
# Docker
####################
-kuryr_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}kuryr-libnetwork"
+kuryr_image: "{{ docker_image_url }}kuryr-libnetwork"
kuryr_tag: "{{ openstack_tag }}"
kuryr_image_full: "{{ kuryr_image }}:{{ kuryr_tag }}"
diff --git a/ansible/roles/letsencrypt/defaults/main.yml b/ansible/roles/letsencrypt/defaults/main.yml
index 6f4d42244..bb4470f2b 100644
--- a/ansible/roles/letsencrypt/defaults/main.yml
+++ b/ansible/roles/letsencrypt/defaults/main.yml
@@ -22,11 +22,11 @@ letsencrypt_services:
letsencrypt_tag: "{{ openstack_tag }}"
letsencrypt_logging_debug: "{{ openstack_logging_debug }}"
-letsencrypt_lego_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}letsencrypt-lego"
+letsencrypt_lego_image: "{{ docker_image_url }}letsencrypt-lego"
letsencrypt_lego_tag: "{{ letsencrypt_tag }}"
letsencrypt_lego_image_full: "{{ letsencrypt_lego_image }}:{{ letsencrypt_lego_tag }}"
-letsencrypt_webserver_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}letsencrypt-webserver"
+letsencrypt_webserver_image: "{{ docker_image_url }}letsencrypt-webserver"
letsencrypt_webserver_tag: "{{ letsencrypt_tag }}"
letsencrypt_webserver_image_full: "{{ letsencrypt_webserver_image }}:{{ letsencrypt_webserver_tag }}"
diff --git a/ansible/roles/loadbalancer/defaults/main.yml b/ansible/roles/loadbalancer/defaults/main.yml
index 13cf3a17d..a59553eef 100644
--- a/ansible/roles/loadbalancer/defaults/main.yml
+++ b/ansible/roles/loadbalancer/defaults/main.yml
@@ -39,19 +39,19 @@ loadbalancer_services:
####################
# Docker
####################
-keepalived_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}keepalived"
+keepalived_image: "{{ docker_image_url }}keepalived"
keepalived_tag: "{{ openstack_tag }}"
keepalived_image_full: "{{ keepalived_image }}:{{ keepalived_tag }}"
-haproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}haproxy"
+haproxy_image: "{{ docker_image_url }}haproxy"
haproxy_tag: "{{ openstack_tag }}"
haproxy_image_full: "{{ haproxy_image }}:{{ haproxy_tag }}"
-proxysql_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}proxysql"
+proxysql_image: "{{ docker_image_url }}proxysql"
proxysql_tag: "{{ openstack_tag }}"
proxysql_image_full: "{{ proxysql_image }}:{{ proxysql_tag }}"
-haproxy_ssh_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}haproxy-ssh"
+haproxy_ssh_image: "{{ docker_image_url }}haproxy-ssh"
haproxy_ssh_tag: "{{ haproxy_tag }}"
haproxy_ssh_image_full: "{{ haproxy_ssh_image }}:{{ haproxy_ssh_tag }}"
diff --git a/ansible/roles/magnum/defaults/main.yml b/ansible/roles/magnum/defaults/main.yml
index 1ae383b53..6dce2a799 100644
--- a/ansible/roles/magnum/defaults/main.yml
+++ b/ansible/roles/magnum/defaults/main.yml
@@ -80,11 +80,11 @@ default_docker_volume_type: ""
####################
magnum_tag: "{{ openstack_tag }}"
-magnum_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}magnum-api"
+magnum_api_image: "{{ docker_image_url }}magnum-api"
magnum_api_tag: "{{ magnum_tag }}"
magnum_api_image_full: "{{ magnum_api_image }}:{{ magnum_api_tag }}"
-magnum_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}magnum-conductor"
+magnum_conductor_image: "{{ docker_image_url }}magnum-conductor"
magnum_conductor_tag: "{{ magnum_tag }}"
magnum_conductor_image_full: "{{ magnum_conductor_image }}:{{ magnum_conductor_tag }}"
diff --git a/ansible/roles/manila/defaults/main.yml b/ansible/roles/manila/defaults/main.yml
index 198b3def5..f0e2996ec 100644
--- a/ansible/roles/manila/defaults/main.yml
+++ b/ansible/roles/manila/defaults/main.yml
@@ -86,19 +86,19 @@ manila_database_shard:
#####################
manila_tag: "{{ openstack_tag }}"
-manila_share_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}manila-share"
+manila_share_image: "{{ docker_image_url }}manila-share"
manila_share_tag: "{{ manila_tag }}"
manila_share_image_full: "{{ manila_share_image }}:{{ manila_share_tag }}"
-manila_scheduler_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}manila-scheduler"
+manila_scheduler_image: "{{ docker_image_url }}manila-scheduler"
manila_scheduler_tag: "{{ manila_tag }}"
manila_scheduler_image_full: "{{ manila_scheduler_image }}:{{ manila_scheduler_tag }}"
-manila_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}manila-api"
+manila_api_image: "{{ docker_image_url }}manila-api"
manila_api_tag: "{{ manila_tag }}"
manila_api_image_full: "{{ manila_api_image }}:{{ manila_api_tag }}"
-manila_data_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}manila-data"
+manila_data_image: "{{ docker_image_url }}manila-data"
manila_data_tag: "{{ manila_tag }}"
manila_data_image_full: "{{ manila_data_image }}:{{ manila_data_tag }}"
diff --git a/ansible/roles/mariadb/defaults/main.yml b/ansible/roles/mariadb/defaults/main.yml
index 0ebb5c398..ec065da51 100644
--- a/ansible/roles/mariadb/defaults/main.yml
+++ b/ansible/roles/mariadb/defaults/main.yml
@@ -67,11 +67,11 @@ external_haproxy_members: "{% for host in mariadb_default_database_shard_hosts %
####################
# Docker
####################
-mariadb_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mariadb-server"
+mariadb_image: "{{ docker_image_url }}mariadb-server"
mariadb_tag: "{{ openstack_tag }}"
mariadb_image_full: "{{ mariadb_image }}:{{ mariadb_tag }}"
-mariadb_clustercheck_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mariadb-clustercheck"
+mariadb_clustercheck_image: "{{ docker_image_url }}mariadb-clustercheck"
mariadb_clustercheck_tag: "{{ mariadb_tag }}"
mariadb_clustercheck_image_full: "{{ mariadb_clustercheck_image }}:{{ mariadb_clustercheck_tag }}"
diff --git a/ansible/roles/masakari/defaults/main.yml b/ansible/roles/masakari/defaults/main.yml
index 3e6edde3a..298761bce 100644
--- a/ansible/roles/masakari/defaults/main.yml
+++ b/ansible/roles/masakari/defaults/main.yml
@@ -82,15 +82,15 @@ masakari_database_shard:
####################
masakari_tag: "{{ openstack_tag }}"
-masakari_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}masakari-api"
+masakari_api_image: "{{ docker_image_url }}masakari-api"
masakari_api_tag: "{{ masakari_tag }}"
masakari_api_image_full: "{{ masakari_api_image }}:{{ masakari_api_tag }}"
-masakari_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}masakari-engine"
+masakari_engine_image: "{{ docker_image_url }}masakari-engine"
masakari_engine_tag: "{{ masakari_tag }}"
masakari_engine_image_full: "{{ masakari_engine_image }}:{{ masakari_engine_tag }}"
-masakari_monitors_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}masakari-monitors"
+masakari_monitors_image: "{{ docker_image_url }}masakari-monitors"
masakari_monitors_tag: "{{ masakari_tag }}"
masakari_monitors_image_full: "{{ masakari_monitors_image }}:{{ masakari_monitors_tag }}"
diff --git a/ansible/roles/memcached/defaults/main.yml b/ansible/roles/memcached/defaults/main.yml
index 67cd1a33c..600be1a0c 100644
--- a/ansible/roles/memcached/defaults/main.yml
+++ b/ansible/roles/memcached/defaults/main.yml
@@ -24,7 +24,7 @@ memcached_services:
####################
# Docker
####################
-memcached_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}memcached"
+memcached_image: "{{ docker_image_url }}memcached"
memcached_tag: "{{ openstack_tag }}"
memcached_image_full: "{{ memcached_image }}:{{ memcached_tag }}"
memcached_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/mistral/defaults/main.yml b/ansible/roles/mistral/defaults/main.yml
index 686dda05d..62e4c20ec 100644
--- a/ansible/roles/mistral/defaults/main.yml
+++ b/ansible/roles/mistral/defaults/main.yml
@@ -84,19 +84,19 @@ mistral_database_shard:
####################
mistral_tag: "{{ openstack_tag }}"
-mistral_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mistral-engine"
+mistral_engine_image: "{{ docker_image_url }}mistral-engine"
mistral_engine_tag: "{{ mistral_tag }}"
mistral_engine_image_full: "{{ mistral_engine_image }}:{{ mistral_engine_tag }}"
-mistral_event_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mistral-event-engine"
+mistral_event_engine_image: "{{ docker_image_url }}mistral-event-engine"
mistral_event_engine_tag: "{{ mistral_tag }}"
mistral_event_engine_image_full: "{{ mistral_event_engine_image }}:{{ mistral_event_engine_tag }}"
-mistral_executor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mistral-executor"
+mistral_executor_image: "{{ docker_image_url }}mistral-executor"
mistral_executor_tag: "{{ mistral_tag }}"
mistral_executor_image_full: "{{ mistral_executor_image }}:{{ mistral_executor_tag }}"
-mistral_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}mistral-api"
+mistral_api_image: "{{ docker_image_url }}mistral-api"
mistral_api_tag: "{{ mistral_tag }}"
mistral_api_image_full: "{{ mistral_api_image }}:{{ mistral_api_tag }}"
diff --git a/ansible/roles/multipathd/defaults/main.yml b/ansible/roles/multipathd/defaults/main.yml
index ec683876c..60ade00f5 100644
--- a/ansible/roles/multipathd/defaults/main.yml
+++ b/ansible/roles/multipathd/defaults/main.yml
@@ -13,7 +13,7 @@ multipathd_services:
####################
# Docker
####################
-multipathd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}multipathd"
+multipathd_image: "{{ docker_image_url }}multipathd"
multipathd_tag: "{{ openstack_tag }}"
multipathd_image_full: "{{ multipathd_image }}:{{ multipathd_tag }}"
diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml
index e7a00ccad..76cf5c1df 100644
--- a/ansible/roles/neutron/defaults/main.yml
+++ b/ansible/roles/neutron/defaults/main.yml
@@ -279,67 +279,67 @@ neutron_database_shard:
haproxy_tag: "{{ openstack_tag }}"
neutron_tag: "{{ openstack_tag }}"
-neutron_dhcp_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-dhcp-agent"
+neutron_dhcp_agent_image: "{{ docker_image_url }}neutron-dhcp-agent"
neutron_dhcp_agent_tag: "{{ neutron_tag }}"
neutron_dhcp_agent_image_full: "{{ neutron_dhcp_agent_image }}:{{ neutron_dhcp_agent_tag }}"
-neutron_l3_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-l3-agent"
+neutron_l3_agent_image: "{{ docker_image_url }}neutron-l3-agent"
neutron_l3_agent_tag: "{{ neutron_tag }}"
neutron_l3_agent_image_full: "{{ neutron_l3_agent_image }}:{{ neutron_l3_agent_tag }}"
-neutron_sriov_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-sriov-agent"
+neutron_sriov_agent_image: "{{ docker_image_url }}neutron-sriov-agent"
neutron_sriov_agent_tag: "{{ neutron_tag }}"
neutron_sriov_agent_image_full: "{{ neutron_sriov_agent_image }}:{{ neutron_sriov_agent_tag }}"
-neutron_mlnx_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-mlnx-agent"
+neutron_mlnx_agent_image: "{{ docker_image_url }}neutron-mlnx-agent"
neutron_mlnx_agent_tag: "{{ neutron_tag }}"
neutron_mlnx_agent_image_full: "{{ neutron_mlnx_agent_image }}:{{ neutron_mlnx_agent_tag }}"
-neutron_eswitchd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-mlnx-agent"
+neutron_eswitchd_image: "{{ docker_image_url }}neutron-mlnx-agent"
neutron_eswitchd_tag: "{{ neutron_mlnx_agent_tag }}"
neutron_eswitchd_image_full: "{{ neutron_eswitchd_image }}:{{ neutron_eswitchd_tag }}"
-neutron_linuxbridge_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-linuxbridge-agent"
+neutron_linuxbridge_agent_image: "{{ docker_image_url }}neutron-linuxbridge-agent"
neutron_linuxbridge_agent_tag: "{{ neutron_tag }}"
neutron_linuxbridge_agent_image_full: "{{ neutron_linuxbridge_agent_image }}:{{ neutron_linuxbridge_agent_tag }}"
-neutron_metadata_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-metadata-agent"
+neutron_metadata_agent_image: "{{ docker_image_url }}neutron-metadata-agent"
neutron_metadata_agent_tag: "{{ neutron_tag }}"
neutron_metadata_agent_image_full: "{{ neutron_metadata_agent_image }}:{{ neutron_metadata_agent_tag }}"
-neutron_ovn_metadata_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-metadata-agent"
+neutron_ovn_metadata_agent_image: "{{ docker_image_url }}neutron-metadata-agent"
neutron_ovn_metadata_agent_tag: "{{ neutron_tag }}"
neutron_ovn_metadata_agent_image_full: "{{ neutron_ovn_metadata_agent_image }}:{{ neutron_ovn_metadata_agent_tag }}"
-neutron_openvswitch_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-openvswitch-agent"
+neutron_openvswitch_agent_image: "{{ docker_image_url }}neutron-openvswitch-agent"
neutron_openvswitch_agent_tag: "{{ neutron_tag }}"
neutron_openvswitch_agent_image_full: "{{ neutron_openvswitch_agent_image }}:{{ neutron_openvswitch_agent_tag }}"
-neutron_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-server"
+neutron_server_image: "{{ docker_image_url }}neutron-server"
neutron_server_tag: "{{ neutron_tag }}"
neutron_server_image_full: "{{ neutron_server_image }}:{{ neutron_server_tag }}"
-neutron_bgp_dragent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-bgp-dragent"
+neutron_bgp_dragent_image: "{{ docker_image_url }}neutron-bgp-dragent"
neutron_bgp_dragent_tag: "{{ neutron_tag }}"
neutron_bgp_dragent_image_full: "{{ neutron_bgp_dragent_image }}:{{ neutron_bgp_dragent_tag }}"
-neutron_infoblox_ipam_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-infoblox-ipam-agent"
+neutron_infoblox_ipam_agent_image: "{{ docker_image_url }}neutron-infoblox-ipam-agent"
neutron_infoblox_ipam_agent_tag: "{{ neutron_tag }}"
neutron_infoblox_ipam_agent_image_full: "{{ neutron_infoblox_ipam_agent_image }}:{{ neutron_infoblox_ipam_agent_tag }}"
-neutron_metering_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-metering-agent"
+neutron_metering_agent_image: "{{ docker_image_url }}neutron-metering-agent"
neutron_metering_agent_tag: "{{ neutron_tag }}"
neutron_metering_agent_image_full: "{{ neutron_metering_agent_image }}:{{ neutron_metering_agent_tag }}"
-ironic_neutron_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ironic-neutron-agent"
+ironic_neutron_agent_image: "{{ docker_image_url }}ironic-neutron-agent"
ironic_neutron_agent_tag: "{{ neutron_tag }}"
ironic_neutron_agent_image_full: "{{ ironic_neutron_agent_image }}:{{ ironic_neutron_agent_tag }}"
-neutron_tls_proxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}haproxy"
+neutron_tls_proxy_image: "{{ docker_image_url }}haproxy"
neutron_tls_proxy_tag: "{{ haproxy_tag }}"
neutron_tls_proxy_image_full: "{{ neutron_tls_proxy_image }}:{{ neutron_tls_proxy_tag }}"
-neutron_ovn_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}neutron-ovn-agent"
+neutron_ovn_agent_image: "{{ docker_image_url }}neutron-ovn-agent"
neutron_ovn_agent_tag: "{{ neutron_tag }}"
neutron_ovn_agent_image_full: "{{ neutron_ovn_agent_image }}:{{ neutron_ovn_agent_tag }}"
diff --git a/ansible/roles/nova-cell/defaults/main.yml b/ansible/roles/nova-cell/defaults/main.yml
index 4b023df20..30a4d2dcb 100644
--- a/ansible/roles/nova-cell/defaults/main.yml
+++ b/ansible/roles/nova-cell/defaults/main.yml
@@ -234,36 +234,36 @@ nova_cell_notify_rabbitmq_users:
####################
nova_tag: "{{ openstack_tag }}"
-nova_libvirt_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-libvirt"
+nova_libvirt_image: "{{ docker_image_url }}nova-libvirt"
nova_libvirt_tag: "{{ nova_tag }}"
nova_libvirt_image_full: "{{ nova_libvirt_image }}:{{ nova_libvirt_tag }}"
nova_libvirt_cpu_mode: "{{ 'host-passthrough' if ansible_facts.architecture == 'aarch64' else '' }}"
-nova_ssh_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-ssh"
+nova_ssh_image: "{{ docker_image_url }}nova-ssh"
nova_ssh_tag: "{{ nova_tag }}"
nova_ssh_image_full: "{{ nova_ssh_image }}:{{ nova_ssh_tag }}"
-nova_novncproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-novncproxy"
+nova_novncproxy_image: "{{ docker_image_url }}nova-novncproxy"
nova_novncproxy_tag: "{{ nova_tag }}"
nova_novncproxy_image_full: "{{ nova_novncproxy_image }}:{{ nova_novncproxy_tag }}"
-nova_spicehtml5proxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-spicehtml5proxy"
+nova_spicehtml5proxy_image: "{{ docker_image_url }}nova-spicehtml5proxy"
nova_spicehtml5proxy_tag: "{{ nova_tag }}"
nova_spicehtml5proxy_image_full: "{{ nova_spicehtml5proxy_image }}:{{ nova_spicehtml5proxy_tag }}"
-nova_serialproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-serialproxy"
+nova_serialproxy_image: "{{ docker_image_url }}nova-serialproxy"
nova_serialproxy_tag: "{{ nova_tag }}"
nova_serialproxy_image_full: "{{ nova_serialproxy_image }}:{{ nova_serialproxy_tag }}"
-nova_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-conductor"
+nova_conductor_image: "{{ docker_image_url }}nova-conductor"
nova_conductor_tag: "{{ nova_tag }}"
nova_conductor_image_full: "{{ nova_conductor_image }}:{{ nova_conductor_tag }}"
-nova_compute_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-compute"
+nova_compute_image: "{{ docker_image_url }}nova-compute"
nova_compute_tag: "{{ nova_tag }}"
nova_compute_image_full: "{{ nova_compute_image }}:{{ nova_compute_tag }}"
-nova_compute_ironic_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-compute-ironic"
+nova_compute_ironic_image: "{{ docker_image_url }}nova-compute-ironic"
nova_compute_ironic_tag: "{{ nova_tag }}"
nova_compute_ironic_image_full: "{{ nova_compute_ironic_image }}:{{ nova_compute_ironic_tag }}"
diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index 780d262f3..59f2580ac 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -124,15 +124,15 @@ nova_database_shard:
####################
nova_tag: "{{ openstack_tag }}"
-nova_super_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-conductor"
+nova_super_conductor_image: "{{ docker_image_url }}nova-conductor"
nova_super_conductor_tag: "{{ nova_tag }}"
nova_super_conductor_image_full: "{{ nova_super_conductor_image }}:{{ nova_super_conductor_tag }}"
-nova_scheduler_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-scheduler"
+nova_scheduler_image: "{{ docker_image_url }}nova-scheduler"
nova_scheduler_tag: "{{ nova_tag }}"
nova_scheduler_image_full: "{{ nova_scheduler_image }}:{{ nova_scheduler_tag }}"
-nova_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}nova-api"
+nova_api_image: "{{ docker_image_url }}nova-api"
nova_api_tag: "{{ nova_tag }}"
nova_api_image_full: "{{ nova_api_image }}:{{ nova_api_tag }}"
diff --git a/ansible/roles/octavia/defaults/main.yml b/ansible/roles/octavia/defaults/main.yml
index 3085f0084..b19fe942d 100644
--- a/ansible/roles/octavia/defaults/main.yml
+++ b/ansible/roles/octavia/defaults/main.yml
@@ -106,23 +106,23 @@ octavia_database_shard:
####################
octavia_tag: "{{ openstack_tag }}"
-octavia_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}octavia-api"
+octavia_api_image: "{{ docker_image_url }}octavia-api"
octavia_api_tag: "{{ octavia_tag }}"
octavia_api_image_full: "{{ octavia_api_image }}:{{ octavia_api_tag }}"
-octavia_driver_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}octavia-driver-agent"
+octavia_driver_agent_image: "{{ docker_image_url }}octavia-driver-agent"
octavia_driver_agent_tag: "{{ octavia_tag }}"
octavia_driver_agent_image_full: "{{ octavia_driver_agent_image }}:{{ octavia_driver_agent_tag }}"
-octavia_health_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}octavia-health-manager"
+octavia_health_manager_image: "{{ docker_image_url }}octavia-health-manager"
octavia_health_manager_tag: "{{ octavia_tag }}"
octavia_health_manager_image_full: "{{ octavia_health_manager_image }}:{{ octavia_health_manager_tag }}"
-octavia_housekeeping_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}octavia-housekeeping"
+octavia_housekeeping_image: "{{ docker_image_url }}octavia-housekeeping"
octavia_housekeeping_tag: "{{ octavia_tag }}"
octavia_housekeeping_image_full: "{{ octavia_housekeeping_image }}:{{ octavia_housekeeping_tag }}"
-octavia_worker_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}octavia-worker"
+octavia_worker_image: "{{ docker_image_url }}octavia-worker"
octavia_worker_tag: "{{ octavia_tag }}"
octavia_worker_image_full: "{{ octavia_worker_image }}:{{ octavia_worker_tag }}"
diff --git a/ansible/roles/opensearch/defaults/main.yml b/ansible/roles/opensearch/defaults/main.yml
index b669a6f26..ad8dc20bb 100644
--- a/ansible/roles/opensearch/defaults/main.yml
+++ b/ansible/roles/opensearch/defaults/main.yml
@@ -135,11 +135,11 @@ opensearch_dashboards_opensearch_ssl_verify: true
####################
# Docker
####################
-opensearch_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}opensearch"
+opensearch_image: "{{ docker_image_url }}opensearch"
opensearch_tag: "{{ openstack_tag }}"
opensearch_image_full: "{{ opensearch_image }}:{{ opensearch_tag }}"
-opensearch_dashboards_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}opensearch-dashboards"
+opensearch_dashboards_image: "{{ docker_image_url }}opensearch-dashboards"
opensearch_dashboards_tag: "{{ opensearch_tag }}"
opensearch_dashboards_image_full: "{{ opensearch_dashboards_image }}:{{ opensearch_dashboards_tag }}"
diff --git a/ansible/roles/openvswitch/defaults/main.yml b/ansible/roles/openvswitch/defaults/main.yml
index 997081b3e..4857ab4c3 100644
--- a/ansible/roles/openvswitch/defaults/main.yml
+++ b/ansible/roles/openvswitch/defaults/main.yml
@@ -39,11 +39,11 @@ openvswitch_services:
####################
openvswitch_tag: "{{ openstack_tag }}"
-openvswitch_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}openvswitch-db-server"
+openvswitch_db_image: "{{ docker_image_url }}openvswitch-db-server"
openvswitch_db_tag: "{{ openvswitch_tag }}"
openvswitch_db_image_full: "{{ openvswitch_db_image }}:{{ openvswitch_db_tag }}"
-openvswitch_vswitchd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}openvswitch-vswitchd"
+openvswitch_vswitchd_image: "{{ docker_image_url }}openvswitch-vswitchd"
openvswitch_vswitchd_tag: "{{ openvswitch_tag }}"
openvswitch_vswitchd_image_full: "{{ openvswitch_vswitchd_image }}:{{ openvswitch_vswitchd_tag }}"
diff --git a/ansible/roles/ovn-controller/defaults/main.yml b/ansible/roles/ovn-controller/defaults/main.yml
index c888c8c3b..e5a32f3ac 100644
--- a/ansible/roles/ovn-controller/defaults/main.yml
+++ b/ansible/roles/ovn-controller/defaults/main.yml
@@ -13,7 +13,7 @@ ovn_controller_services:
####################
ovn_tag: "{{ openstack_tag }}"
-ovn_controller_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovn-controller"
+ovn_controller_image: "{{ docker_image_url }}ovn-controller"
ovn_controller_tag: "{{ ovn_tag }}"
ovn_controller_image_full: "{{ ovn_controller_image }}:{{ ovn_controller_tag }}"
diff --git a/ansible/roles/ovn-db/defaults/main.yml b/ansible/roles/ovn-db/defaults/main.yml
index 0314666c6..8f9132f60 100644
--- a/ansible/roles/ovn-db/defaults/main.yml
+++ b/ansible/roles/ovn-db/defaults/main.yml
@@ -37,19 +37,19 @@ ovn_db_services:
####################
ovn_tag: "{{ openstack_tag }}"
-ovn_northd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovn-northd"
+ovn_northd_image: "{{ docker_image_url }}ovn-northd"
ovn_northd_tag: "{{ ovn_tag }}"
ovn_northd_image_full: "{{ ovn_northd_image }}:{{ ovn_northd_tag }}"
-ovn_nb_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovn-nb-db-server"
+ovn_nb_db_image: "{{ docker_image_url }}ovn-nb-db-server"
ovn_nb_db_tag: "{{ ovn_tag }}"
ovn_nb_db_image_full: "{{ ovn_nb_db_image }}:{{ ovn_nb_db_tag }}"
-ovn_sb_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovn-sb-db-server"
+ovn_sb_db_image: "{{ docker_image_url }}ovn-sb-db-server"
ovn_sb_db_tag: "{{ ovn_tag }}"
ovn_sb_db_image_full: "{{ ovn_sb_db_image }}:{{ ovn_sb_db_tag }}"
-ovn_sb_db_relay_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovn-sb-db-relay"
+ovn_sb_db_relay_image: "{{ docker_image_url }}ovn-sb-db-relay"
ovn_sb_db_relay_tag: "{{ ovn_tag }}"
ovn_sb_db_relay_image_full: "{{ ovn_sb_db_relay_image }}:{{ ovn_sb_db_relay_tag }}"
diff --git a/ansible/roles/ovs-dpdk/defaults/main.yml b/ansible/roles/ovs-dpdk/defaults/main.yml
index 6df71dcac..5a6955c03 100644
--- a/ansible/roles/ovs-dpdk/defaults/main.yml
+++ b/ansible/roles/ovs-dpdk/defaults/main.yml
@@ -60,11 +60,11 @@ ovs_physical_port_policy: named
####################
ovsdpdk_tag: "{{ openstack_tag }}"
-ovsdpdk_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovsdpdk-db"
+ovsdpdk_db_image: "{{ docker_image_url }}ovsdpdk-db"
ovsdpdk_db_tag: "{{ ovsdpdk_tag }}"
ovsdpdk_db_image_full: "{{ ovsdpdk_db_image }}:{{ ovsdpdk_db_tag }}"
-ovsdpdk_vswitchd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}ovsdpdk-vswitchd"
+ovsdpdk_vswitchd_image: "{{ docker_image_url }}ovsdpdk-vswitchd"
ovsdpdk_vswitchd_tag: "{{ ovsdpdk_tag }}"
ovsdpdk_vswitchd_image_full: "{{ ovsdpdk_vswitchd_image }}:{{ ovsdpdk_vswitchd_tag }}"
ovsdpdk_db_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/placement/defaults/main.yml b/ansible/roles/placement/defaults/main.yml
index 6c58c3339..eef6f48fd 100644
--- a/ansible/roles/placement/defaults/main.yml
+++ b/ansible/roles/placement/defaults/main.yml
@@ -63,7 +63,7 @@ placement_database_shard:
####################
placement_tag: "{{ openstack_tag }}"
-placement_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}placement-api"
+placement_api_image: "{{ docker_image_url }}placement-api"
placement_api_tag: "{{ placement_tag }}"
placement_api_image_full: "{{ placement_api_image }}:{{ placement_api_tag }}"
diff --git a/ansible/roles/prometheus/defaults/main.yml b/ansible/roles/prometheus/defaults/main.yml
index 4dec0287e..0b2cb6de7 100644
--- a/ansible/roles/prometheus/defaults/main.yml
+++ b/ansible/roles/prometheus/defaults/main.yml
@@ -348,44 +348,44 @@ prometheus_blackbox_exporter_endpoints_custom: []
####################
prometheus_tag: "{{ openstack_tag }}"
-prometheus_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-server"
+prometheus_server_image: "{{ docker_image_url }}prometheus-server"
prometheus_server_tag: "{{ prometheus_tag }}"
prometheus_server_image_full: "{{ prometheus_server_image }}:{{ prometheus_server_tag }}"
-prometheus_mysqld_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-mysqld-exporter"
+prometheus_mysqld_exporter_image: "{{ docker_image_url }}prometheus-mysqld-exporter"
prometheus_mysqld_exporter_tag: "{{ prometheus_tag }}"
prometheus_mysqld_exporter_image_full: "{{ prometheus_mysqld_exporter_image }}:{{ prometheus_mysqld_exporter_tag }}"
-prometheus_node_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-node-exporter"
+prometheus_node_exporter_image: "{{ docker_image_url }}prometheus-node-exporter"
prometheus_node_exporter_tag: "{{ prometheus_tag }}"
prometheus_node_exporter_image_full: "{{ prometheus_node_exporter_image }}:{{ prometheus_node_exporter_tag }}"
-prometheus_memcached_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-memcached-exporter"
+prometheus_memcached_exporter_image: "{{ docker_image_url }}prometheus-memcached-exporter"
prometheus_memcached_exporter_tag: "{{ prometheus_tag }}"
prometheus_memcached_exporter_image_full: "{{ prometheus_memcached_exporter_image }}:{{ prometheus_memcached_exporter_tag }}"
-prometheus_cadvisor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-cadvisor"
+prometheus_cadvisor_image: "{{ docker_image_url }}prometheus-cadvisor"
prometheus_cadvisor_tag: "{{ prometheus_tag }}"
prometheus_cadvisor_image_full: "{{ prometheus_cadvisor_image }}:{{ prometheus_cadvisor_tag }}"
-prometheus_alertmanager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-alertmanager"
+prometheus_alertmanager_image: "{{ docker_image_url }}prometheus-alertmanager"
prometheus_alertmanager_tag: "{{ prometheus_tag }}"
prometheus_alertmanager_image_full: "{{ prometheus_alertmanager_image }}:{{ prometheus_alertmanager_tag }}"
# Prometheus openstack_exporter
-prometheus_openstack_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-openstack-exporter"
+prometheus_openstack_exporter_image: "{{ docker_image_url }}prometheus-openstack-exporter"
prometheus_openstack_exporter_tag: "{{ prometheus_tag }}"
prometheus_openstack_exporter_image_full: "{{ prometheus_openstack_exporter_image }}:{{ prometheus_openstack_exporter_tag }}"
-prometheus_elasticsearch_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-elasticsearch-exporter"
+prometheus_elasticsearch_exporter_image: "{{ docker_image_url }}prometheus-elasticsearch-exporter"
prometheus_elasticsearch_exporter_tag: "{{ prometheus_tag }}"
prometheus_elasticsearch_exporter_image_full: "{{ prometheus_elasticsearch_exporter_image }}:{{ prometheus_elasticsearch_exporter_tag }}"
-prometheus_blackbox_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-blackbox-exporter"
+prometheus_blackbox_exporter_image: "{{ docker_image_url }}prometheus-blackbox-exporter"
prometheus_blackbox_exporter_tag: "{{ prometheus_tag }}"
prometheus_blackbox_exporter_image_full: "{{ prometheus_blackbox_exporter_image }}:{{ prometheus_blackbox_exporter_tag }}"
-prometheus_libvirt_exporter_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}prometheus-libvirt-exporter"
+prometheus_libvirt_exporter_image: "{{ docker_image_url }}prometheus-libvirt-exporter"
prometheus_libvirt_exporter_tag: "{{ prometheus_tag }}"
prometheus_libvirt_exporter_image_full: "{{ prometheus_libvirt_exporter_image }}:{{ prometheus_libvirt_exporter_tag }}"
diff --git a/ansible/roles/rabbitmq/defaults/main.yml b/ansible/roles/rabbitmq/defaults/main.yml
index 17f25a62e..f6f3e4069 100644
--- a/ansible/roles/rabbitmq/defaults/main.yml
+++ b/ansible/roles/rabbitmq/defaults/main.yml
@@ -27,7 +27,7 @@ rabbitmq_services:
####################
# Docker
####################
-rabbitmq_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}rabbitmq"
+rabbitmq_image: "{{ docker_image_url }}rabbitmq"
rabbitmq_tag: "{{ openstack_tag }}"
rabbitmq_image_full: "{{ rabbitmq_image }}:{{ rabbitmq_tag }}"
rabbitmq_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/redis/defaults/main.yml b/ansible/roles/redis/defaults/main.yml
index e8b7aa388..6d3af49f0 100644
--- a/ansible/roles/redis/defaults/main.yml
+++ b/ansible/roles/redis/defaults/main.yml
@@ -23,11 +23,11 @@ redis_services:
####################
# Docker
####################
-redis_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}redis"
+redis_image: "{{ docker_image_url }}redis"
redis_tag: "{{ openstack_tag }}"
redis_image_full: "{{ redis_image }}:{{ redis_tag }}"
-redis_sentinel_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}redis-sentinel"
+redis_sentinel_image: "{{ docker_image_url }}redis-sentinel"
redis_sentinel_tag: "{{ openstack_tag }}"
redis_sentinel_image_full: "{{ redis_sentinel_image }}:{{ redis_tag }}"
redis_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/skyline/defaults/main.yml b/ansible/roles/skyline/defaults/main.yml
index 1363748b9..d07a8d9d6 100644
--- a/ansible/roles/skyline/defaults/main.yml
+++ b/ansible/roles/skyline/defaults/main.yml
@@ -82,11 +82,11 @@ skyline_database_shard:
####################
skyline_tag: "{{ openstack_tag }}"
-skyline_apiserver_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}skyline-apiserver"
+skyline_apiserver_image: "{{ docker_image_url }}skyline-apiserver"
skyline_apiserver_tag: "{{ skyline_tag }}"
skyline_apiserver_image_full: "{{ skyline_apiserver_image }}:{{ skyline_apiserver_tag }}"
-skyline_console_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}skyline-console"
+skyline_console_image: "{{ docker_image_url }}skyline-console"
skyline_console_tag: "{{ skyline_tag }}"
skyline_console_image_full: "{{ skyline_console_image }}:{{ skyline_console_tag }}"
diff --git a/ansible/roles/tacker/defaults/main.yml b/ansible/roles/tacker/defaults/main.yml
index 111e00d88..3fb145d14 100644
--- a/ansible/roles/tacker/defaults/main.yml
+++ b/ansible/roles/tacker/defaults/main.yml
@@ -68,11 +68,11 @@ tacker_database_shard:
########
tacker_tag: "{{ openstack_tag }}"
-tacker_server_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}tacker-server"
+tacker_server_image: "{{ docker_image_url }}tacker-server"
tacker_server_tag: "{{ tacker_tag }}"
tacker_server_image_full: "{{ tacker_server_image }}:{{ tacker_server_tag }}"
-tacker_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}tacker-conductor"
+tacker_conductor_image: "{{ docker_image_url }}tacker-conductor"
tacker_conductor_tag: "{{ tacker_tag }}"
tacker_conductor_image_full: "{{ tacker_conductor_image }}:{{ tacker_conductor_tag }}"
diff --git a/ansible/roles/telegraf/defaults/main.yml b/ansible/roles/telegraf/defaults/main.yml
index 9a90d5692..0664d7957 100644
--- a/ansible/roles/telegraf/defaults/main.yml
+++ b/ansible/roles/telegraf/defaults/main.yml
@@ -12,7 +12,7 @@ telegraf_services:
####################
# Docker
####################
-telegraf_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}telegraf"
+telegraf_image: "{{ docker_image_url }}telegraf"
telegraf_tag: "{{ openstack_tag }}"
telegraf_image_full: "{{ telegraf_image }}:{{ telegraf_tag }}"
telegraf_dimensions: "{{ default_container_dimensions }}"
diff --git a/ansible/roles/trove/defaults/main.yml b/ansible/roles/trove/defaults/main.yml
index e1987b708..f934356bd 100644
--- a/ansible/roles/trove/defaults/main.yml
+++ b/ansible/roles/trove/defaults/main.yml
@@ -78,15 +78,15 @@ trove_database_shard:
####################
trove_tag: "{{ openstack_tag }}"
-trove_conductor_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}trove-conductor"
+trove_conductor_image: "{{ docker_image_url }}trove-conductor"
trove_conductor_tag: "{{ trove_tag }}"
trove_conductor_image_full: "{{ trove_conductor_image }}:{{ trove_conductor_tag }}"
-trove_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}trove-api"
+trove_api_image: "{{ docker_image_url }}trove-api"
trove_api_tag: "{{ trove_tag }}"
trove_api_image_full: "{{ trove_api_image }}:{{ trove_api_tag }}"
-trove_taskmanager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}trove-taskmanager"
+trove_taskmanager_image: "{{ docker_image_url }}trove-taskmanager"
trove_taskmanager_tag: "{{ trove_tag }}"
trove_taskmanager_image_full: "{{ trove_taskmanager_image }}:{{ trove_taskmanager_tag }}"
diff --git a/ansible/roles/venus/defaults/main.yml b/ansible/roles/venus/defaults/main.yml
index f9da371d7..e04d0f80d 100644
--- a/ansible/roles/venus/defaults/main.yml
+++ b/ansible/roles/venus/defaults/main.yml
@@ -65,11 +65,11 @@ venus_database_shard:
####################
venus_tag: "{{ openstack_tag }}"
-venus_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}venus-api"
+venus_api_image: "{{ docker_image_url }}venus-api"
venus_api_tag: "{{ venus_tag }}"
venus_api_image_full: "{{ venus_api_image }}:{{ venus_api_tag }}"
-venus_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}venus-manager"
+venus_manager_image: "{{ docker_image_url }}venus-manager"
venus_manager_tag: "{{ venus_tag }}"
venus_manager_image_full: "{{ venus_manager_image }}:{{ venus_manager_tag }}"
diff --git a/ansible/roles/watcher/defaults/main.yml b/ansible/roles/watcher/defaults/main.yml
index 1cd9ccd2b..b745eee85 100644
--- a/ansible/roles/watcher/defaults/main.yml
+++ b/ansible/roles/watcher/defaults/main.yml
@@ -76,15 +76,15 @@ watcher_database_shard:
####################
watcher_tag: "{{ openstack_tag }}"
-watcher_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}watcher-engine"
+watcher_engine_image: "{{ docker_image_url }}watcher-engine"
watcher_engine_tag: "{{ watcher_tag }}"
watcher_engine_image_full: "{{ watcher_engine_image }}:{{ watcher_engine_tag }}"
-watcher_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}watcher-api"
+watcher_api_image: "{{ docker_image_url }}watcher-api"
watcher_api_tag: "{{ watcher_tag }}"
watcher_api_image_full: "{{ watcher_api_image }}:{{ watcher_api_tag }}"
-watcher_applier_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}watcher-applier"
+watcher_applier_image: "{{ docker_image_url }}watcher-applier"
watcher_applier_tag: "{{ watcher_tag }}"
watcher_applier_image_full: "{{ watcher_applier_image }}:{{ watcher_applier_tag }}"
diff --git a/ansible/roles/zun/defaults/main.yml b/ansible/roles/zun/defaults/main.yml
index d01eafbd3..83094ff85 100644
--- a/ansible/roles/zun/defaults/main.yml
+++ b/ansible/roles/zun/defaults/main.yml
@@ -97,19 +97,19 @@ zun_database_shard:
####################
zun_tag: "{{ openstack_tag }}"
-zun_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}zun-api"
+zun_api_image: "{{ docker_image_url }}zun-api"
zun_api_tag: "{{ zun_tag }}"
zun_api_image_full: "{{ zun_api_image }}:{{ zun_api_tag }}"
-zun_wsproxy_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}zun-wsproxy"
+zun_wsproxy_image: "{{ docker_image_url }}zun-wsproxy"
zun_wsproxy_tag: "{{ zun_tag }}"
zun_wsproxy_image_full: "{{ zun_wsproxy_image }}:{{ zun_wsproxy_tag }}"
-zun_compute_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}zun-compute"
+zun_compute_image: "{{ docker_image_url }}zun-compute"
zun_compute_tag: "{{ zun_tag }}"
zun_compute_image_full: "{{ zun_compute_image }}:{{ zun_compute_tag }}"
-zun_cni_daemon_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ docker_image_name_prefix }}zun-cni-daemon"
+zun_cni_daemon_image: "{{ docker_image_url }}zun-cni-daemon"
zun_cni_daemon_tag: "{{ zun_tag }}"
zun_cni_daemon_image_full: "{{ zun_cni_daemon_image }}:{{ zun_cni_daemon_tag }}"