diff --git a/docker/barbican/start.sh b/docker/barbican/start.sh
index 676374faa0406db941e42ce92ce9aa676bc049a8..c90f66c470f262d413cc85d5217d93c49ff6ba29 100755
--- a/docker/barbican/start.sh
+++ b/docker/barbican/start.sh
@@ -8,21 +8,16 @@ set -e
 : ${BARBICAN_KEYSTONE_USER:=barbican}
 : ${ADMIN_TENANT_NAME:=admin}
 
-if ! [ "$KEYSTONE_ADMIN_TOKEN" ]; then
-    echo "*** Missing KEYSTONE_ADMIN_TOKEN" >&2
-        exit 1
-fi
-
-if ! [ "$DB_ROOT_PASSWORD" ]; then
-        echo "*** Missing DB_ROOT_PASSWORD" >&2
-        exit 1
-fi
-
 if ! [ "$BARBICAN_DB_PASSWORD" ]; then
         BARBICAN_DB_PASSWORD=$(openssl rand -hex 15)
         export BARBICAN_DB_PASSWORD
 fi
 
+check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
+                    KEYSTONE_ADMIN_SERVICE_PORT BARBICAN_ADMIN_PASSWORD
+check_for_db
+check_for_keystone
+
 mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql <<EOF
 CREATE DATABASE IF NOT EXISTS ${BARBICAN_DB_NAME};
 GRANT ALL PRIVILEGES ON barbican.* TO
diff --git a/docker/ceilometer/ceilometer-api/start.sh b/docker/ceilometer/ceilometer-api/start.sh
index 8c9acef5feb3935e73f1d20a28e427b48eb4f278..1cd6d4c1852473c826d7cb5cb229a69d4003e985 100644
--- a/docker/ceilometer/ceilometer-api/start.sh
+++ b/docker/ceilometer/ceilometer-api/start.sh
@@ -5,7 +5,12 @@ set -e
 . /opt/kolla/kolla-common.sh
 . /opt/kolla/config-ceilometer.sh
 
-check_required_vars CEILOMETER_DB_USER CEILOMETER_DB_NAME KEYSTONE_AUTH_PROTOCOL CEILOMETER_KEYSTONE_USER CEILOMETER_ADMIN_PASSWORD ADMIN_TENANT_NAME METERING_SECRET CEILOMETER_API_SERVICE_HOST PUBLIC_IP
+check_required_vars CEILOMETER_DB_USER CEILOMETER_DB_NAME \
+                    CEILOMETER_DB_PASSWORD KEYSTONE_ADMIN_TOKEN \
+                    KEYSTONE_AUTH_PROTOCOL KEYSTONE_ADMIN_SERVICE_HOST \
+                    KEYSTONE_ADMIN_SERVICE_PORT ADMIN_TENANT_NAME \
+                    CEILOMETER_KEYSTONE_USER CEILOMETER_ADMIN_PASSWORD \
+                    CEILOMETER_API_SERVICE_HOST PUBLIC_IP
 
 check_for_keystone
 check_for_db
diff --git a/docker/ceilometer/ceilometer-base/config-ceilometer.sh b/docker/ceilometer/ceilometer-base/config-ceilometer.sh
index 87dcac6538429e25ce6d9002a2b88e26251f5eb1..9df45994ab4bf24244f8a1fe4e9dd9c08ff3cb66 100644
--- a/docker/ceilometer/ceilometer-base/config-ceilometer.sh
+++ b/docker/ceilometer/ceilometer-base/config-ceilometer.sh
@@ -10,8 +10,10 @@ set -e
 : ${CEILOMETER_ADMIN_PASSWORD:=kolla}
 : ${ADMIN_TENANT_NAME:=admin}
 : ${METERING_SECRET:=ceilometer}
+: ${RABBIT_PASSWORD:=guest}
 
-check_required_vars CEILOMETER_DB_PASSWORD KEYSTONE_ADMIN_TOKEN DB_ROOT_PASSWORD
+check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
+                    KEYSTONE_ADMIN_SERVICE_PORT KEYSTONE_PUBLIC_SERVICE_HOST \
 dump_vars
 
 cat > /openrc <<EOF
@@ -27,7 +29,7 @@ crudini --set $cfg \
 crudini --set $cfg \
     DEFAULT rabbit_host ${RABBITMQ_SERVICE_HOST}
 crudini --set $cfg \
-    DEFAULT rabbit_password ${RABBITMQ_PASS}
+    DEFAULT rabbit_password ${RABBIT_PASSWORD}
 
 crudini --set $cfg \
     keystone_authtoken \
diff --git a/docker/ceilometer/ceilometer-central/start.sh b/docker/ceilometer/ceilometer-central/start.sh
index a40a3dde07acc0c4bf61c9424c8675603048bcbc..ec9951c9082c5441d69ef5394239c3e9f608f6ec 100644
--- a/docker/ceilometer/ceilometer-central/start.sh
+++ b/docker/ceilometer/ceilometer-central/start.sh
@@ -3,10 +3,10 @@
 . /opt/kolla/kolla-common.sh
 . /opt/kolla/config-ceilometer.sh
 
-check_required_vars KEYSTONE_AUTH_PROTOCOL CEILOMETER_KEYSTONE_USER CEILOMETER_ADMIN_PASSWORD ADMIN_TENANT_NAME
+check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_AUTH_PROTOCOL \
+                    KEYSTONE_ADMIN_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_PORT
 
 check_for_keystone
-check_for_db
 
 export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
 export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
diff --git a/docker/ceilometer/ceilometer-compute/start.sh b/docker/ceilometer/ceilometer-compute/start.sh
index d9b62be82390409cb3bf5fcb7d079b9184416355..5b610b28af08af3e59203891ca5b8895b54e52e7 100644
--- a/docker/ceilometer/ceilometer-compute/start.sh
+++ b/docker/ceilometer/ceilometer-compute/start.sh
@@ -4,7 +4,7 @@
 . /opt/kolla/config-ceilometer.sh
 
 
-check_required_vars KEYSTONE_ADMIN_TOKEN RABBITMQ_SERVICE_HOST KEYSTONE_AUTH_PROTOCOL CEILOMETER_KEYSTONE_USER ADMIN_TENANT_NAME
+check_required_vars KEYSTONE_ADMIN_TOKEN RABBITMQ_SERVICE_HOST RABBIT_PASSWORD
 
 check_for_keystone
 
@@ -19,7 +19,7 @@ crudini --set /etc/nova/nova.conf DEFAULT notification_driver ceilometer.compute
 cfg=/etc/ceilometer/ceilometer.conf
 crudini --set $cfg publisher_rpc metering_secret ${KEYSTONE_ADMIN_TOKEN}
 crudini --set $cfg rabbit_host ${RABBITMQ_SERVICE_HOST}
-crudini --set $cfg rabbit_password ${RABBITMQ_PASS}
+crudini --set $cfg rabbit_password ${RABBIT_PASSWORD}
 
 
 exec /usr/bin/ceilometer-agent-compute
diff --git a/docker/cinder/start.sh b/docker/cinder/start.sh
index 12dcf3dc175fa1e5b2435edd87749d7ba9c046ee..4508d96f46ff5fc540a5a68e3d5fcfa44b612566 100755
--- a/docker/cinder/start.sh
+++ b/docker/cinder/start.sh
@@ -1,29 +1,21 @@
 #!/bin/bash -e                                                                                         
 
-: ${CINDER_DB_USER%:=cinder}
+: ${CINDER_DB_USER:=cinder}
 : ${CINDER_DB_NAME:=cinder}
 : ${KEYSTONE_AUTH_PROTOCOL:=http}
 : ${CINDER_KEYSTONE_USER:=cinder}
 : ${ADMIN_TENANT_NAME:=admin}
 
-if ! [ "$KEYSTONE_ADMIN_TOKEN" ]; then
-    echo "*** Missing KEYSTONE_ADMIN_TOKEN" >&2
-        exit 1
-fi
-
-if ! [ "$DB_ROOT_PASSWORD" ]; then
-        echo "*** Missing DB_ROOT_PASSWORD" >&2
-        exit 1
-fi
-
 if ! [ "$CINDER_DB_PASSWORD" ]; then
         CINDER_DB_PASSWORD=$(openssl rand -hex 15)
         export CINDER_DB_PASSWORD
 fi
 
-mysql -h ${MARIADB_PORT_3306_TCP_ADDR} -u root \
-        -p${DB_ROOT_PASSWORD} mysql <<EOF
-EOF                                                                
+check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
+                    CINDER_ADMIN_PASSWORD
+check_for_db
+
+mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql <<EOF
 CREATE DATABASE IF NOT EXISTS ${CINDER_DB_NAME};                                                        
 GRANT ALL PRIVILEGES ON glance* TO                                                                      
         '${CINDER_DB_USER}'@'%' IDENTIFIED BY '${CINDER_DB_PASSWORD}'                                   
@@ -143,7 +135,7 @@ crudini --set /etc/cinder/cinder.conf \
 
 
 export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_PORT_35357_TCP_ADDR}:35357/v2.0"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
 
 /bin/keystone user-create --name ${CINDER_KEYSTONE_USER} --pass ${CINDER_ADMIN_PASSWORD}
 /bin/keystone role-create --name ${CINDER_KEYSTONE_USER}
diff --git a/docker/glance/glance-base/config-glance.sh b/docker/glance/glance-base/config-glance.sh
index a6380e5c8d7aef899ca9c2a5c3e1cdff9c22e901..2a6e54caa1c57e91d1c38e3040ba0f5e85b7d3b8 100644
--- a/docker/glance/glance-base/config-glance.sh
+++ b/docker/glance/glance-base/config-glance.sh
@@ -11,7 +11,9 @@ set -e
 : ${KEYSTONE_AUTH_PROTOCOL:=http}
 : ${PUBLIC_IP:=$GLANCE_API_PORT_9292_TCP_ADDR}
 
-check_required_vars GLANCE_DB_PASSWORD GLANCE_KEYSTONE_PASSWORD
+check_for_db
+check_required_vars GLANCE_DB_PASSWORD GLANCE_KEYSTONE_PASSWORD \
+                    KEYSTONE_PUBLIC_SERVICE_HOST
 dump_vars
 
 cat > /openrc <<EOF
diff --git a/docker/heat/heat-base/config-heat.sh b/docker/heat/heat-base/config-heat.sh
index c2837325c2c03c5689f5e24d60ec92ce2e2cc91e..3dcb1435aaaafaff9cef9aa972a8c2b25b4325b9 100755
--- a/docker/heat/heat-base/config-heat.sh
+++ b/docker/heat/heat-base/config-heat.sh
@@ -13,7 +13,10 @@ set -e
 : ${RABBIT_USER:=guest}
 : ${RABBIT_PASSWORD:=guest}
 
-check_required_vars HEAT_DB_PASSWORD HEAT_KEYSTONE_PASSWORD
+check_required_vars HEAT_DB_PASSWORD HEAT_KEYSTONE_PASSWORD \
+                    KEYSTONE_PUBLIC_SERVICE_HOST RABBITMQ_SERVICE_HOST
+
+check_for_db
 dump_vars
 
 cat > /openrc <<EOF
diff --git a/docker/heat/heat-engine/start.sh b/docker/heat/heat-engine/start.sh
index 0ab9e480050dd876427b7156ccc9b35210eb82c1..e9d3f9e413ce506d021d9d9c4ad8aebf23282a68 100755
--- a/docker/heat/heat-engine/start.sh
+++ b/docker/heat/heat-engine/start.sh
@@ -3,8 +3,7 @@
 . /opt/kolla/kolla-common.sh
 . /opt/kolla/config-heat.sh
 
-check_required_vars MARIADB_SERVICE_HOST DB_ROOT_PASSWORD \
-                    HEAT_DB_NAME HEAT_DB_USER HEAT_DB_PASSWORD
+check_required_vars HEAT_DB_NAME HEAT_DB_USER HEAT_DB_PASSWORD
 check_for_db
 
 mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
diff --git a/docker/horizon/start.sh b/docker/horizon/start.sh
index d51cac6551e03b8271d417970f15885ec155d38a..01b1405e79b14ffec0a1cc74d06d29a687c05f15 100755
--- a/docker/horizon/start.sh
+++ b/docker/horizon/start.sh
@@ -5,8 +5,6 @@ set -e
 
 . /opt/kolla/kolla-common.sh
 
-check_required_vars HORIZON_KEYSTONE_USER
-
 check_for_keystone
 check_for_glance
 check_for_nova
diff --git a/docker/keystone/start.sh b/docker/keystone/start.sh
index afa04ed66c70ee5f1790257438d6ad25d2fa6435..087cecc36bb532107f73f99e111ba72c1ce26dae 100755
--- a/docker/keystone/start.sh
+++ b/docker/keystone/start.sh
@@ -9,7 +9,8 @@ set -e
 check_for_db
 check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_DB_PASSWORD \
                     KEYSTONE_ADMIN_PASSWORD ADMIN_TENANT_NAME \
-                    KEYSTONE_PUBLIC_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_HOST
+                    KEYSTONE_PUBLIC_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_HOST \
+                    PUBLIC_IP
 dump_vars
 
 mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql <<EOF
diff --git a/docker/neutron/agents/dhcp/start.sh b/docker/neutron/agents/dhcp/start.sh
index 81f35dd877cad981ba721347dd1646be544bbbcc..7754532a6289d8a8c73b7e3d07e35be54f71c8cc 100755
--- a/docker/neutron/agents/dhcp/start.sh
+++ b/docker/neutron/agents/dhcp/start.sh
@@ -9,6 +9,8 @@ set -e
 : ${DHCP_DRIVER:=neutron.agent.linux.dhcp.Dnsmasq}
 : ${USE_NAMESPACES:=false}
 
+check_required_vars VERBOSE_LOGGING DEBUG_LOGGING
+
 cfg=/etc/neutron/dhcp_agent.ini
 
 # Configure dhcp_agent.ini
diff --git a/docker/neutron/agents/l3/start.sh b/docker/neutron/agents/l3/start.sh
index 602bf31935edd2008d8d93774cdbd88480df861f..17a09ad653af85f7662619ecf66db41340fb0dae 100755
--- a/docker/neutron/agents/l3/start.sh
+++ b/docker/neutron/agents/l3/start.sh
@@ -8,6 +8,8 @@ set -e
 : ${INTERFACE_DRIVER:=neutron.agent.linux.interface.BridgeInterfaceDriver}
 : ${USE_NAMESPACES:=false}
 
+check_required_vars VERBOSE_LOGGING DEBUG_LOGGING
+
 cfg=/etc/neutron/l3_agent.ini
 
 # Configure l3_agent.ini
diff --git a/docker/neutron/agents/linux-bridge/start.sh b/docker/neutron/agents/linux-bridge/start.sh
index e5982fe669abf2a047a5998fcdde090626d4a122..727db24b5f1eae2723164cabf54794b0923f69e7 100755
--- a/docker/neutron/agents/linux-bridge/start.sh
+++ b/docker/neutron/agents/linux-bridge/start.sh
@@ -8,6 +8,8 @@ set -e
 : ${BRIDGE_PHYSICAL_INTERFACE:=eth1}
 : ${ML2_FLAT_NETWORK:=physnet1}
 
+check_required_vars PUBLIC_IP
+
 cfg=/etc/neutron/plugins/ml2/ml2_conf.ini
 
 # Configure ml2_conf.ini
diff --git a/docker/neutron/agents/metadata/start.sh b/docker/neutron/agents/metadata/start.sh
index fbe72e18fa6f0775d69e041020066060103f03ec..9eef79a313aff117ef535ff1b4499959824783da 100755
--- a/docker/neutron/agents/metadata/start.sh
+++ b/docker/neutron/agents/metadata/start.sh
@@ -7,6 +7,11 @@ set -e
 
 : ${KEYSTONE_REGION:=RegionOne}
 
+check_required_vars VERBOSE_LOGGING DEBUG_LOGGING KEYSTONE_AUTH_PROTOCOL \
+                    KEYSTONE_PUBLIC_SERVICE_HOST ADMIN_TENANT_NAME \
+                    NEUTRON_KEYSTONE_USER NEUTRON_KEYSTONE_PASSWORD \
+                    NEUTRON_SHARED_SECRET NOVA_API_SERVICE_HOST
+
 cfg=/etc/neutron/metadata_agent.ini
 
 # Configure metadata_agent.ini
diff --git a/docker/neutron/neutron-base/config-neutron.sh b/docker/neutron/neutron-base/config-neutron.sh
index 7a68b19f2b012dc4c6457881d19fce5698fc6110..35a1375fff80d93b7b947c5e960eb3d3a7ecb1d4 100644
--- a/docker/neutron/neutron-base/config-neutron.sh
+++ b/docker/neutron/neutron-base/config-neutron.sh
@@ -15,7 +15,9 @@ set -e
 : ${VERBOSE_LOGGING:=true}
 : ${DEBUG_LOGGING:=false}
 
-check_required_vars NEUTRON_KEYSTONE_PASSWORD
+check_required_vars NEUTRON_KEYSTONE_PASSWORD \
+                    KEYSTONE_PUBLIC_SERVICE_HOST RABBITMQ_SERVICE_HOST
+
 dump_vars
 
 cat > /openrc <<EOF
diff --git a/docker/neutron/neutron-server/start.sh b/docker/neutron/neutron-server/start.sh
index ffa90a2181faa8a105929530f57d1354bbf3d723..91af87bb323fb1289ca0a25ca5bc54112c60a515 100755
--- a/docker/neutron/neutron-server/start.sh
+++ b/docker/neutron/neutron-server/start.sh
@@ -6,9 +6,11 @@ set -e
 . /opt/kolla/config-neutron.sh
 
 check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
+                    KEYSTONE_AUTH_PROTOCOL NOVA_API_SERVICE_HOST \
+                    NOVA_ADMIN_PASSWORD NEUTRON_DB_NAME NEUTRON_DB_USER \
                     NEUTRON_KEYSTONE_USER NEUTRON_KEYSTONE_PASSWORD \
                     ADMIN_TENANT_NAME NEUTRON_SERVER_SERVICE_HOST \
-                    PUBLIC_IP
+                    PUBLIC_IP NEUTRON_DB_PASSWORD
 check_for_keystone
 check_for_db
 
diff --git a/docker/nova-base/config-nova.sh b/docker/nova-base/config-nova.sh
index 15ab7870cf329dfbd96a4f05c2c472cec9eb05bc..10aa646fabffd8bf4ef8e974434f1aa75b602416 100755
--- a/docker/nova-base/config-nova.sh
+++ b/docker/nova-base/config-nova.sh
@@ -11,8 +11,10 @@
 : ${RABBIT_PASSWORD:=guest}
 : ${NETWORK_MANAGER:=nova}
 
-check_required_vars KEYSTONE_ADMIN_TOKEN \
-    NOVA_DB_PASSWORD
+check_for_db
+check_required_vars KEYSTONE_ADMIN_TOKEN NOVA_DB_PASSWORD \
+                    RABBITMQ_SERVICE_HOST GLANCE_API_SERVICE_HOST \
+                    KEYSTONE_PUBLIC_SERVICE_HOST PUBLIC_IP
 
 cfg=/etc/nova/nova.conf
 
@@ -75,6 +77,7 @@ if [ "${NETWORK_MANAGER}" == "nova" ] ; then
   crudini --set $cfg DEFAULT flat_network_bridge br100
   crudini --set $cfg DEFAULT public_interface eth1
 elif [ "${NETWORK_MANAGER}" == "neutron" ] ; then
+  check_required_vars NEUTRON_SHARED_SECRET
   crudini --set $cfg DEFAULT service_neutron_metadata_proxy True
   crudini --set $cfg DEFAULT neutron_metadata_proxy_shared_secret ${NEUTRON_SHARED_SECRET}
   crudini --set $cfg DEFAULT neutron_default_tenant_id default
diff --git a/docker/nova-controller/nova-api/start.sh b/docker/nova-controller/nova-api/start.sh
index 2feeeea05fe34f6f5ff56f353f4a7182d052823b..49329f21c6235a00df33ee1316ca76e4b8528e67 100755
--- a/docker/nova-controller/nova-api/start.sh
+++ b/docker/nova-controller/nova-api/start.sh
@@ -4,6 +4,10 @@ set -e
 
 . /opt/kolla/config-nova.sh
 
+check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
+                    NOVA_KEYSTONE_USER NOVA_KEYSTONE_PASSWORD \
+                    ADMIN_TENANT_NAME NOVA_API_SERVICE_HOST \
+                    NOVA_EC2_API_SERVICE_HOST PUBLIC_IP
 check_for_keystone
 
 export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
diff --git a/docker/nova-controller/nova-conductor/start.sh b/docker/nova-controller/nova-conductor/start.sh
index 4053a27ff97a00168b0958ce134c8566343af59b..831c80e80760a69357c54452069c7503dca40301 100755
--- a/docker/nova-controller/nova-conductor/start.sh
+++ b/docker/nova-controller/nova-conductor/start.sh
@@ -4,6 +4,7 @@ set -e
 
 . /opt/kolla/config-nova.sh
 
+check_required_vars NOVA_DB_NAME NOVA_DB_USER NOVA_DB_PASSWORD
 check_for_db
 
 mysql -h ${MARIADB_SERVICE_HOST} -u root \
diff --git a/docker/swift/swift-account/start.sh b/docker/swift/swift-account/start.sh
index 562fd4ca420c59ab6b94e6f88e52d3924728a97f..2fe6f24696b78698f4a4ae9f29a372340815003e 100644
--- a/docker/swift/swift-account/start.sh
+++ b/docker/swift/swift-account/start.sh
@@ -6,15 +6,10 @@
 : ${SWIFT_KEYSTONE_USER:=swift}
 : ${ADMIN_TENANT_NAME:=admin}
 
-if ! [ "$KEYSTONE_ADMIN_TOKEN" ]; then
-	echo "*** Missing KEYSTONE_ADMIN_TOKEN" >&2
-	exit 1
-fi
-
-if ! [ "$DB_ROOT_PASSWORD" ]; then
-	echo "*** Missing DB_ROOT_PASSWORD" >&2
-	exit 1
-fi
+check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
+                    SWIFT_ADMIN_PASSWORD
+check_for_db
+check_for_keystone
 
 if ! [ "$SWIFT_DB_PASSWORD" ]; then
 	SWIFT_DB_PASSWORD=$(openssl rand -hex 15)
@@ -23,7 +18,7 @@ fi
 
 sh /opt/swift/config-swift.sh account-server
 
-mysql -h ${MARIADB_PORT_3306_TCP_ADDR} -u root \
+mysql -h ${MARIADB_SERVICE_HOST} -u root \
 	-p${DB_ROOT_PASSWORD} mysql <<EOF
 CREATE DATABASE IF NOT EXISTS ${SWIFT_DB_NAME};
 GRANT ALL PRIVILEGES ON swift* TO
@@ -31,7 +26,7 @@ GRANT ALL PRIVILEGES ON swift* TO
 EOF
 
 export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_PORT_35357_TCP_ADDR}:35357/v2.0"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
 
 /bin/keystone user-create --name ${SWIFT_KEYSTONE_USER} --pass ${SWIFT_ADMIN_PASSWORD}
 /bin/keystone role-create --name ${SWIFT_KEYSTONE_USER}
diff --git a/docker/swift/swift-container/start.sh b/docker/swift/swift-container/start.sh
index e96471fb739a590b331ad943385b36f389eb5c98..2a191e1d2ff7c63038dec185c58566195dac166a 100644
--- a/docker/swift/swift-container/start.sh
+++ b/docker/swift/swift-container/start.sh
@@ -6,15 +6,10 @@
 : ${SWIFT_KEYSTONE_USER:=swift}
 : ${ADMIN_TENANT_NAME:=admin}
 
-if ! [ "$KEYSTONE_ADMIN_TOKEN" ]; then
-	echo "*** Missing KEYSTONE_ADMIN_TOKEN" >&2
-	exit 1
-fi
-
-if ! [ "$DB_ROOT_PASSWORD" ]; then
-	echo "*** Missing DB_ROOT_PASSWORD" >&2
-	exit 1
-fi
+check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
+                    SWIFT_ADMIN_PASSWORD
+check_for_db
+check_for_keystone
 
 if ! [ "$SWIFT_DB_PASSWORD" ]; then
 	SWIFT_DB_PASSWORD=$(openssl rand -hex 15)
@@ -23,7 +18,7 @@ fi
 
 sh /opt/swift/config-swift.sh container
 
-mysql -h ${MARIADB_PORT_3306_TCP_ADDR} -u root \
+mysql -h ${MARIADB_SERVICE_HOST} -u root \
 	-p${DB_ROOT_PASSWORD} mysql <<EOF
 CREATE DATABASE IF NOT EXISTS ${SWIFT_DB_NAME};
 GRANT ALL PRIVILEGES ON swift* TO
@@ -31,7 +26,7 @@ GRANT ALL PRIVILEGES ON swift* TO
 EOF
 
 export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_PORT_35357_TCP_ADDR}:35357/v2.0"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
 
 /bin/keystone user-create --name ${SWIFT_KEYSTONE_USER} --pass ${SWIFT_ADMIN_PASSWORD}
 /bin/keystone role-create --name ${SWIFT_KEYSTONE_USER}
diff --git a/docker/swift/swift-object/start.sh b/docker/swift/swift-object/start.sh
index 1546d8271a4d4bc95bdace38dbe1190329e503e4..c43efc5fb54c2a58509a0803d2ca4472f6072318 100644
--- a/docker/swift/swift-object/start.sh
+++ b/docker/swift/swift-object/start.sh
@@ -6,15 +6,10 @@
 : ${SWIFT_KEYSTONE_USER:=swift}
 : ${ADMIN_TENANT_NAME:=admin}
 
-if ! [ "$KEYSTONE_ADMIN_TOKEN" ]; then
-	echo "*** Missing KEYSTONE_ADMIN_TOKEN" >&2
-	exit 1
-fi
-
-if ! [ "$DB_ROOT_PASSWORD" ]; then
-	echo "*** Missing DB_ROOT_PASSWORD" >&2
-	exit 1
-fi
+check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
+                    SWIFT_ADMIN_PASSWORD
+check_for_db
+check_for_keystone
 
 if ! [ "$SWIFT_DB_PASSWORD" ]; then
 	SWIFT_DB_PASSWORD=$(openssl rand -hex 15)
@@ -23,7 +18,7 @@ fi
 
 sh /opt/swift/config-swift.sh engine
 
-mysql -h ${MARIADB_PORT_3306_TCP_ADDR} -u root \
+mysql -h ${MARIADB_SERVICE_HOST} -u root \
 	-p${DB_ROOT_PASSWORD} mysql <<EOF
 CREATE DATABASE IF NOT EXISTS ${SWIFT_DB_NAME};
 GRANT ALL PRIVILEGES ON swift* TO
@@ -31,7 +26,7 @@ GRANT ALL PRIVILEGES ON swift* TO
 EOF
 
 export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_PORT_35357_TCP_ADDR}:35357/v2.0"
+export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
 
 /bin/keystone user-create --name ${SWIFT_KEYSTONE_USER} --pass ${SWIFT_ADMIN_PASSWORD}
 /bin/keystone role-create --name ${SWIFT_KEYSTONE_USER}
diff --git a/docker/zaqar/start.sh b/docker/zaqar/start.sh
index 7ed89a40ad28f9e34a3aa8861a9de7a2a85acc3b..6c68fccf22e0d941bd10b5e9bd776ab83172e07a 100755
--- a/docker/zaqar/start.sh
+++ b/docker/zaqar/start.sh
@@ -5,16 +5,12 @@ set -e
 . /opt/kolla/kolla-common.sh
 
 : ${ADMIN_TENANT_NAME:=admin}
-
-: ${ZAQAR_DB_NAME:=zaqar}
-: ${ZAQAR_DB_USER:=zaqar}
-
 : ${ZAQAR_KEYSTONE_USER:=zaqar}
-
 : ${KEYSTONE_AUTH_PROTOCOL:=http}
 
-check_required_vars ZAQAR_DB_PASSWORD ZAQAR_KEYSTONE_PASSWORD \
-                    KEYSTONE_ADMIN_TOKEN
+check_required_vars ZAQAR_KEYSTONE_PASSWORD ZAQAR_SERVER_SERVICE_HOST \
+                    KEYSTONE_ADMIN_SERVICE_HOST KEYSTONE_ADMIN_TOKEN \
+                    PUBLIC_IP
 dump_vars
 
 #check_for_mongodb