aboutsummaryrefslogtreecommitdiff
path: root/docker/centos/binary
diff options
context:
space:
mode:
Diffstat (limited to 'docker/centos/binary')
l---------[-rwxr-xr-x]docker/centos/binary/barbican/start.sh82
l---------docker/centos/binary/base/kolla-common.sh2
l---------docker/centos/binary/base/service_hosts.sh2
l---------[-rw-r--r--]docker/centos/binary/ceilometer/ceilometer-alarm/start.sh11
l---------[-rw-r--r--]docker/centos/binary/ceilometer/ceilometer-api/start.sh52
l---------[-rw-r--r--]docker/centos/binary/ceilometer/ceilometer-base/config-ceilometer.sh72
l---------[-rw-r--r--]docker/centos/binary/ceilometer/ceilometer-central/start.sh15
l---------[-rw-r--r--]docker/centos/binary/ceilometer/ceilometer-collector/start.sh10
l---------[-rw-r--r--]docker/centos/binary/ceilometer/ceilometer-compute/start.sh26
l---------[-rw-r--r--]docker/centos/binary/ceilometer/ceilometer-notification/start.sh10
l---------[-rwxr-xr-x]docker/centos/binary/cinder-app/cinder-api/check.sh17
l---------[-rwxr-xr-x]docker/centos/binary/cinder-app/cinder-api/start.sh74
l---------[-rwxr-xr-x]docker/centos/binary/cinder-app/cinder-backup/start.sh37
l---------[-rw-r--r--]docker/centos/binary/cinder-app/cinder-base/config-cinder.sh133
l---------[-rwxr-xr-x]docker/centos/binary/cinder-app/cinder-scheduler/start.sh33
l---------[-rwxr-xr-x]docker/centos/binary/cinder-app/cinder-volume/start.sh76
l---------[-rwxr-xr-x]docker/centos/binary/cinder-app/cinder-volume/volume-group-create.sh23
l---------[-rwxr-xr-x]docker/centos/binary/designate/designate-api/start.sh38
l---------[-rwxr-xr-x]docker/centos/binary/designate/designate-backend-bind9/start.sh61
l---------[-rwxr-xr-x]docker/centos/binary/designate/designate-base/config-designate.sh80
l---------[-rwxr-xr-x]docker/centos/binary/designate/designate-central/start.sh25
l---------[-rwxr-xr-x]docker/centos/binary/designate/designate-mdns/start.sh18
l---------[-rwxr-xr-x]docker/centos/binary/designate/designate-poolmanager/start.sh55
l---------[-rwxr-xr-x]docker/centos/binary/galera/config-galera.sh95
l---------[-rwxr-xr-x]docker/centos/binary/galera/start.sh15
l---------[-rwxr-xr-x]docker/centos/binary/glance/glance-api/check.sh18
l---------[-rwxr-xr-x]docker/centos/binary/glance/glance-api/start.sh53
l---------[-rw-r--r--]docker/centos/binary/glance/glance-base/config-glance.sh64
l---------[-rwxr-xr-x]docker/centos/binary/glance/glance-registry/start.sh22
l---------[-rw-r--r--]docker/centos/binary/hautoproxy/haproxy.cfg.tmpl27
l---------[-rwxr-xr-x]docker/centos/binary/hautoproxy/start.py66
l---------[-rwxr-xr-x]docker/centos/binary/heat/heat-api-cfn/check.sh17
l---------[-rwxr-xr-x]docker/centos/binary/heat/heat-api-cfn/start.sh29
l---------[-rwxr-xr-x]docker/centos/binary/heat/heat-api/check.sh17
l---------[-rwxr-xr-x]docker/centos/binary/heat/heat-api/start.sh30
l---------[-rwxr-xr-x]docker/centos/binary/heat/heat-base/config-heat.sh68
l---------[-rwxr-xr-x]docker/centos/binary/heat/heat-engine/start.sh18
l---------[-rwxr-xr-x]docker/centos/binary/horizon/start.sh37
l---------[-rwxr-xr-x]docker/centos/binary/keystone/check.sh13
l---------[-rwxr-xr-x]docker/centos/binary/keystone/start.sh163
l---------[-rwxr-xr-x]docker/centos/binary/magnum/magnum-api/check.sh17
l---------[-rwxr-xr-x]docker/centos/binary/magnum/magnum-api/start.sh28
l---------[-rwxr-xr-x]docker/centos/binary/magnum/magnum-base/config-magnum.sh47
l---------[-rwxr-xr-x]docker/centos/binary/magnum/magnum-conductor/start.sh18
l---------[-rwxr-xr-x]docker/centos/binary/mariadb-app/config-mysql.sh25
-rwxr-xr-xdocker/centos/binary/mariadb-app/mysql-entrypoint.sh49
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-agents/check-scripts/check-dhcp-agent.sh14
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-agents/check-scripts/check-l3-agent.sh14
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-agents/check-scripts/check-linuxbridge-agent.sh14
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-agents/check-scripts/check-metadata-agent.sh14
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh89
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-agents/config-scripts/config-l3-agent.sh86
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-agents/config-scripts/config-linuxbridge-agent.sh30
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-agents/config-scripts/config-metadata-agent.sh75
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-agents/config-scripts/config-sudoers.sh13
l---------[-rw-r--r--]docker/centos/binary/neutron/neutron-agents/fwaas_driver.ini4
l---------[-rw-r--r--]docker/centos/binary/neutron/neutron-agents/supervisord.conf54
l---------[-rw-r--r--]docker/centos/binary/neutron/neutron-base/config-neutron.sh211
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-server/check.sh18
l---------[-rwxr-xr-x]docker/centos/binary/neutron/neutron-server/start.sh99
l---------[-rwxr-xr-x]docker/centos/binary/nova-base/config-nova.sh138
l---------[-rwxr-xr-x]docker/centos/binary/nova-compute/nova-compute/config-nova-compute.sh29
l---------[-rwxr-xr-x]docker/centos/binary/nova-compute/nova-compute/start.sh11
l---------[-rwxr-xr-x]docker/centos/binary/nova-compute/nova-libvirt/start.sh23
l---------[-rwxr-xr-x]docker/centos/binary/nova-compute/nova-network/config-nova-network.sh31
l---------[-rwxr-xr-x]docker/centos/binary/nova-compute/nova-network/start.sh9
l---------[-rwxr-xr-x]docker/centos/binary/nova-controller/nova-api/check.sh18
l---------[-rwxr-xr-x]docker/centos/binary/nova-controller/nova-api/start.sh47
l---------[-rwxr-xr-x]docker/centos/binary/nova-controller/nova-conductor/start.sh24
l---------[-rwxr-xr-x]docker/centos/binary/nova-controller/nova-consoleauth/start.sh12
l---------[-rwxr-xr-x]docker/centos/binary/nova-controller/nova-novncproxy/start.sh23
l---------[-rwxr-xr-x]docker/centos/binary/nova-controller/nova-scheduler/start.sh16
l---------[-rw-r--r--]docker/centos/binary/rabbitmq/rabbitmq-env.conf3
l---------[-rw-r--r--]docker/centos/binary/rabbitmq/rabbitmq.config12
l---------[-rwxr-xr-x]docker/centos/binary/rabbitmq/start.sh25
l---------[-rw-r--r--]docker/centos/binary/swift/swift-account/start.sh35
l---------[-rw-r--r--]docker/centos/binary/swift/swift-container/start.sh35
l---------[-rw-r--r--]docker/centos/binary/swift/swift-object/start.sh35
l---------[-rw-r--r--]docker/centos/binary/swift/swift-proxy-server/start.sh6
l---------[-rwxr-xr-x]docker/centos/binary/zaqar/check.sh11
l---------[-rwxr-xr-x]docker/centos/binary/zaqar/start.sh65
81 files changed, 80 insertions, 3151 deletions
diff --git a/docker/centos/binary/barbican/start.sh b/docker/centos/binary/barbican/start.sh
index 673aa4339..fbb47be02 100755..120000
--- a/docker/centos/binary/barbican/start.sh
+++ b/docker/centos/binary/barbican/start.sh
@@ -1,81 +1 @@
-#!/bin/bash
-
-set -e
-
-: ${BARBICAN_DB_USER:=barbican}
-: ${BARBICAN_DB_NAME:=barbican}
-: ${KEYSTONE_AUTH_PROTOCOL:=http}
-: ${BARBICAN_KEYSTONE_USER:=barbican}
-: ${ADMIN_TENANT_NAME:=admin}
-
-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
-fail_unless_db
-fail_unless_os_service_running 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
- '${BARBICAN_DB_USER}'@'%' IDENTIFIED BY '${BARBICAN_DB_PASSWORD}'
-EOF
-
-# config file setup
-crudini --set /etc/barbican/barbican-api.conf \
- DEFAULT \
- sql_connection \
- "mysql://${BARBICAN_DB_USER}:${BARBICAN_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${BARBICAN_DB_NAME}"
-crudini --set /etc/barbican/barbican-api.conf \
- DEFAULT \
- log_dir \
- "/var/log/barbican/"
-crudini --set /etc/barbican/barbican-api.conf \
- DEFAULT \
- log_file \
- "/var/log/barbican/barbican.log"
-crudini --set /etc/barbican/barbican-api-paste.ini \
- pipeline:barbican_api \
- pipeline \
- "keystone_authtoken context apiapp"
-crudini --set /etc/barbican/barbican-api-paste.ini \
- filter:keystone_authtoken \
- auth_host \
- ${KEYSTONE_ADMIN_SERVICE_HOST}
-crudini --set /etc/barbican/barbican-api-paste.ini \
- filter:keystone_authtoken \
- auth_port \
- ${KEYSTONE_ADMIN_SERVICE_PORT}
-crudini --set /etc/barbican/barbican-api-paste.ini \
- filter:keystone_authtoken \
- auth_protocol \
- ${KEYSTONE_AUTH_PROTOCOL}
-crudini --set /etc/barbican/barbican-api-paste.ini \
- filter:keystone_authtoken \
- admin_tenant_name \
- ${ADMIN_TENANT_NAME}
-crudini --set /etc/barbican/barbican-api-paste.ini \
- filter:keystone_authtoken \
- admin_user \
- ${BARBICAN_KEYSTONE_USER}
-crudini --set /etc/barbican/barbican-api-paste.ini \
- filter:keystone_authtoken \
- admin_password \
- ${BARBICAN_KEYSTONE_USER}
-
-# create the required keystone entities for barbican
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-
-keystone user-get ${BARBICAN_KEYSTONE_USER} > /dev/null 2>&1 || /bin/keystone user-create --name ${BARBICAN_KEYSTONE_USER} --pass ${BARBICAN_ADMIN_PASSWORD}
-
-keystone role-get observer > /dev/null 2>&1 || /bin/keystone role-create --name observer
-keystone role-get creator > /dev/null 2>&1 || /bin/keystone role-create --name creator
-
-keystone user-get ${BARBICAN_KEYSTONE_USER} > /dev/null 2>&1 || /bin/keystone user-role-add --user ${BARBICAN_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
-
-# launch Barbican using uwsgi
-exec uwsgi --master --emperor /etc/barbican/vassals
+../../../common/barbican/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/base/kolla-common.sh b/docker/centos/binary/base/kolla-common.sh
index 380efbc3d..c265c62f7 120000
--- a/docker/centos/binary/base/kolla-common.sh
+++ b/docker/centos/binary/base/kolla-common.sh
@@ -1 +1 @@
-../../../common/kolla-common.sh \ No newline at end of file
+../../../common/base/kolla-common.sh \ No newline at end of file
diff --git a/docker/centos/binary/base/service_hosts.sh b/docker/centos/binary/base/service_hosts.sh
index 777b7334d..06e045440 120000
--- a/docker/centos/binary/base/service_hosts.sh
+++ b/docker/centos/binary/base/service_hosts.sh
@@ -1 +1 @@
-../../../common/service_hosts.sh \ No newline at end of file
+../../../common/base/service_hosts.sh \ No newline at end of file
diff --git a/docker/centos/binary/ceilometer/ceilometer-alarm/start.sh b/docker/centos/binary/ceilometer/ceilometer-alarm/start.sh
index 7470ae608..ed3ac528d 100644..120000
--- a/docker/centos/binary/ceilometer/ceilometer-alarm/start.sh
+++ b/docker/centos/binary/ceilometer/ceilometer-alarm/start.sh
@@ -1,10 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-ceilometer.sh
-
-
-exec /usr/bin/ceilometer-alarm-evaluator &
-exec /usr/bin/ceilometer-alarm-notifier
+../../../../common/ceilometer/ceilometer-alarm/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/ceilometer/ceilometer-api/start.sh b/docker/centos/binary/ceilometer/ceilometer-api/start.sh
index f081c9f84..7acfa2cba 100644..120000
--- a/docker/centos/binary/ceilometer/ceilometer-api/start.sh
+++ b/docker/centos/binary/ceilometer/ceilometer-api/start.sh
@@ -1,51 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-ceilometer.sh
-
-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
-
-fail_unless_os_service_running keystone
-fail_unless_db
-
-#TODO(pkilambi): Add mongodb support
-
-mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${CEILOMETER_DB_NAME} DEFAULT CHARACTER SET utf8;
-GRANT ALL PRIVILEGES ON ${CEILOMETER_DB_NAME}.* TO
- '${CEILOMETER_DB_USER}'@'%' IDENTIFIED BY '${CEILOMETER_DB_PASSWORD}'
-
-EOF
-
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-
-
-crux user-create -n ${CEILOMETER_KEYSTONE_USER} \
- -p ${CEILOMETER_ADMIN_PASSWORD} \
- -t ${ADMIN_TENANT_NAME} \
- -r admin
-
-crux service-create -n ${CEILOMETER_KEYSTONE_USER} -t metering \
- -d "Ceilometer Telemetry Service"
-
-crux endpoint-create i--remove-all -n ${CEILOMETER_KEYSTONE_USER} -t metering \
- -I "${KEYSTONE_AUTH_PROTOCOL}://${CEILOMETER_API_SERVICE_HOST}:8777" \
- -P "${KEYSTONE_AUTH_PROTOCOL}://${PUBLIC_IP}:8777" \
- -A "${KEYSTONE_AUTH_PROTOCOL}://${CEILOMETER_API_SERVICE_HOST}:8777"
-
-cfg=/etc/ceilometer/ceilometer.conf
-crudini --set $cfg \
- DEFAULT connection
- "mysql://${CEILOMETER_DB_USER}:${CEILOMETER_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${CEILOMETER_DB_NAME}"
-
-
-exec /usr/bin/ceilometer-api
+../../../../common/ceilometer/ceilometer-api/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/ceilometer/ceilometer-base/config-ceilometer.sh b/docker/centos/binary/ceilometer/ceilometer-base/config-ceilometer.sh
index a2316dcd1..63215435d 100644..120000
--- a/docker/centos/binary/ceilometer/ceilometer-base/config-ceilometer.sh
+++ b/docker/centos/binary/ceilometer/ceilometer-base/config-ceilometer.sh
@@ -1,71 +1 @@
-#!/bin/bash
-
-set -e
-. /opt/kolla/kolla-common.sh
-
-: ${CEILOMETER_DB_USER:=ceilometer}
-: ${CEILOMETER_DB_NAME:=ceilometer}
-: ${KEYSTONE_AUTH_PROTOCOL:=http}
-: ${CEILOMETER_KEYSTONE_USER:=admin}
-: ${CEILOMETER_ADMIN_PASSWORD:=kolla}
-: ${ADMIN_TENANT_NAME:=admin}
-: ${METERING_SECRET:=ceilometer}
-: ${RABBIT_PASSWORD:=guest}
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- KEYSTONE_ADMIN_SERVICE_PORT KEYSTONE_PUBLIC_SERVICE_HOST \
-dump_vars
-
-cat > /openrc <<EOF
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-EOF
-
-
-cfg=/etc/ceilometer/ceilometer.conf
-
-crudini --set $cfg \
- DEFAULT rpc_backend rabbit
-crudini --set $cfg \
- DEFAULT rabbit_host ${RABBITMQ_SERVICE_HOST}
-crudini --set $cfg \
- DEFAULT rabbit_password ${RABBIT_PASSWORD}
-
-crudini --set $cfg \
- keystone_authtoken \
- auth_uri \
- "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/"
-crudini --set $cfg \
- keystone_authtoken \
- admin_tenant_name \
- "${ADMIN_TENANT_NAME}"
-crudini --set $cfg \
- keystone_authtoken \
- admin_user \
- "${CEILOMETER_KEYSTONE_USER}"
-crudini --set $cfg \
- keystone_authtoken \
- admin_password \
- ${CEILOMETER_ADMIN_PASSWORD}
-
-crudini --set $cfg \
- service_credentials \
- os_auth_url \
- ${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/
-crudini --set $cfg \
- service_credentials \
- os_username \
- ceilometer
-crudini --set $cfg \
- service_credentials \
- os_tenant_name \
- service
-crudini --set $cfg \
- service_credentials \
- os_password \
- ${CEILOMETER_ADMIN_PASSWORD}
-
-crudini --set $cfg \
- publisher
- metering_secret
- ${METERING_SECRET}
+../../../../common/ceilometer/ceilometer-base/config-ceilometer.sh \ No newline at end of file
diff --git a/docker/centos/binary/ceilometer/ceilometer-central/start.sh b/docker/centos/binary/ceilometer/ceilometer-central/start.sh
index 76f9a1fc2..8df383cd1 100644..120000
--- a/docker/centos/binary/ceilometer/ceilometer-central/start.sh
+++ b/docker/centos/binary/ceilometer/ceilometer-central/start.sh
@@ -1,14 +1 @@
-#!/bin/bash
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-ceilometer.sh
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_AUTH_PROTOCOL \
- KEYSTONE_ADMIN_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_PORT
-
-fail_unless_os_service_running keystone
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-
-exec /usr/bin/ceilometer-agent-central
+../../../../common/ceilometer/ceilometer-central/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/ceilometer/ceilometer-collector/start.sh b/docker/centos/binary/ceilometer/ceilometer-collector/start.sh
index 1ed4c9e7d..bea2eb09c 100644..120000
--- a/docker/centos/binary/ceilometer/ceilometer-collector/start.sh
+++ b/docker/centos/binary/ceilometer/ceilometer-collector/start.sh
@@ -1,9 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-ceilometer.sh
-
-
-exec /usr/bin/ceilometer-collector
+../../../../common/ceilometer/ceilometer-collector/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/ceilometer/ceilometer-compute/start.sh b/docker/centos/binary/ceilometer/ceilometer-compute/start.sh
index f4fc30bae..1118b9552 100644..120000
--- a/docker/centos/binary/ceilometer/ceilometer-compute/start.sh
+++ b/docker/centos/binary/ceilometer/ceilometer-compute/start.sh
@@ -1,25 +1 @@
-#!/bin/bash
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-ceilometer.sh
-
-
-check_required_vars KEYSTONE_ADMIN_TOKEN RABBITMQ_SERVICE_HOST RABBIT_PASSWORD
-
-fail_unless_os_service_running keystone
-
-# Nova conf settings
-crudini --set /etc/nova/nova.conf DEFAULT instance_usage_audit True
-crudini --set /etc/nova/nova.conf DEFAULT instance_usage_audit_period hour
-crudini --set /etc/nova/nova.conf DEFAULT notify_on_state_change vm_and_task_state
-crudini --set /etc/nova/nova.conf DEFAULT notification_driver nova.openstack.common.notifier.rpc_notifier
-crudini --set /etc/nova/nova.conf DEFAULT notification_driver ceilometer.compute.nova_notifier
-
-#ceilometer settings
-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 ${RABBIT_PASSWORD}
-
-
-exec /usr/bin/ceilometer-agent-compute
+../../../../common/ceilometer/ceilometer-compute/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/ceilometer/ceilometer-notification/start.sh b/docker/centos/binary/ceilometer/ceilometer-notification/start.sh
index 939734549..8e6d4e337 100644..120000
--- a/docker/centos/binary/ceilometer/ceilometer-notification/start.sh
+++ b/docker/centos/binary/ceilometer/ceilometer-notification/start.sh
@@ -1,9 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-ceilometer.sh
-
-
-exec /usr/bin/ceilometer-agent-notification
+../../../../common/ceilometer/ceilometer-notification/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/cinder-app/cinder-api/check.sh b/docker/centos/binary/cinder-app/cinder-api/check.sh
index 57b88f566..829110b45 100755..120000
--- a/docker/centos/binary/cinder-app/cinder-api/check.sh
+++ b/docker/centos/binary/cinder-app/cinder-api/check.sh
@@ -1,16 +1 @@
-#!/bin/sh
-
-RES=0
-
-. /openrc
-if ! keystone token-get > /dev/null; then
- echo "ERROR: keystone token-get failed" >&2
- RES=1
-else
- if ! cinder list > /dev/null; then
- echo "ERROR: cinder list failed" >&2
- RES=1
- fi
-fi
-
-exit $RES
+../../../../common/cinder-app/cinder-api/check.sh \ No newline at end of file
diff --git a/docker/centos/binary/cinder-app/cinder-api/start.sh b/docker/centos/binary/cinder-app/cinder-api/start.sh
index 28293ac6c..33182c78c 100755..120000
--- a/docker/centos/binary/cinder-app/cinder-api/start.sh
+++ b/docker/centos/binary/cinder-app/cinder-api/start.sh
@@ -1,73 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-cinder.sh
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- ADMIN_TENANT_NAME PUBLIC_IP CINDER_API_SERVICE_HOST \
- KEYSTONE_AUTH_PROTOCOL KEYSTONE_ADMIN_SERVICE_PORT \
- CINDER_KEYSTONE_USER CINDER_KEYSTONE_PASSWORD \
- CINDER_API_LOG_FILE CINDER_API_SERVICE_LISTEN \
- CINDER_API_SERVICE_PORT CINDER_API_SERVICE_LISTEN
-
-fail_unless_os_service_running keystone
-
-cfg=/etc/cinder/cinder.conf
-
-# Set the auth credentials
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-
-# Create Keystone User
-crux user-create --update \
- -n "${CINDER_KEYSTONE_USER}" \
- -p "${CINDER_KEYSTONE_PASSWORD}" \
- -t "${ADMIN_TENANT_NAME}" \
- -r admin
-
-# Configure Keystone
-crux endpoint-create --remove-all \
- -n cinder \
- -t volume \
- -P "http://${CINDER_API_SERVICE_HOST}:${CINDER_API_SERVICE_PORT}/v1/\$(tenant_id)s" \
- -A "http://${CINDER_API_SERVICE_HOST}:${CINDER_API_SERVICE_PORT}/v1/\$(tenant_id)s" \
- -I "http://${CINDER_API_SERVICE_HOST}:${CINDER_API_SERVICE_PORT}/v1/\$(tenant_id)s"
-
-crux endpoint-create --remove-all \
- -n cinderv2 \
- -t volumev2 \
- -P "http://${CINDER_API_SERVICE_HOST}:${CINDER_API_SERVICE_PORT}/v2/\$(tenant_id)s" \
- -A "http://${CINDER_API_SERVICE_HOST}:${CINDER_API_SERVICE_PORT}/v2/\$(tenant_id)s" \
- -I "http://${CINDER_API_SERVICE_HOST}:${CINDER_API_SERVICE_PORT}/v2/\$(tenant_id)s"
-
-# Logging
-crudini --set $cfg \
- DEFAULT \
- log_file \
- "${CINDER_API_LOG_FILE}"
-
-# API Configuration
-crudini --set $cfg \
- DEFAULT \
- osapi_volume_listen \
- "${CINDER_API_SERVICE_LISTEN}"
-
-crudini --set $cfg \
- DEFAULT \
- osapi_volume_listen_port \
- "${CINDER_API_SERVICE_PORT}"
-
-crudini --set $cfg \
- DEFAULT \
- enable_v1_api \
- "true"
-
-crudini --set $cfg \
- DEFAULT \
- enable_v2_api \
- "true"
-
-echo "Starting cinder-api"
-exec /usr/bin/cinder-api --config-file $cfg
+../../../../common/cinder-app/cinder-api/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/cinder-app/cinder-backup/start.sh b/docker/centos/binary/cinder-app/cinder-backup/start.sh
index 5dff79b35..c21a17f09 100755..120000
--- a/docker/centos/binary/cinder-app/cinder-backup/start.sh
+++ b/docker/centos/binary/cinder-app/cinder-backup/start.sh
@@ -1,36 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-cinder.sh
-
-check_required_vars CINDER_BACKUP_DRIVER CINDER_BACKUP_MANAGER \
- CINDER_BACKUP_API_CLASS CINDER_BACKUP_NAME_TEMPLATE
-
-cfg=/etc/cinder/cinder.conf
-
-# volume backup configuration
-crudini --set $cfg \
- DEFAULT \
- backup_driver \
- "${CINDER_BACKUP_DRIVER}"
-crudini --set $cfg \
- DEFAULT \
- backup_topic \
- "cinder-backup"
-crudini --set $cfg \
- DEFAULT \
- backup_manager \
- "${CINDER_BACKUP_MANAGER}"
-crudini --set $cfg \
- DEFAULT \
- backup_api_class \
- "${CINDER_BACKUP_API_CLASS}"
-crudini --set $cfg \
- DEFAULT \
- backup_name_template \
- "${CINDER_BACKUP_NAME_TEMPLATE}"
-
-echo "Starting cinder-backup"
-exec /usr/bin/cinder-backup --config-file $cfg
+../../../../common/cinder-app/cinder-backup/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/cinder-app/cinder-base/config-cinder.sh b/docker/centos/binary/cinder-app/cinder-base/config-cinder.sh
index f82cb5510..22722c185 100644..120000
--- a/docker/centos/binary/cinder-app/cinder-base/config-cinder.sh
+++ b/docker/centos/binary/cinder-app/cinder-base/config-cinder.sh
@@ -1,132 +1 @@
-#!/bin/sh
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-
-check_required_vars CINDER_DB_PASSWORD CINDER_KEYSTONE_PASSWORD \
- KEYSTONE_PUBLIC_SERVICE_HOST RABBITMQ_SERVICE_HOST \
- GLANCE_API_SERVICE_HOST MARIADB_SERVICE_HOST \
- RABBITMQ_SERVICE_HOST RABBITMQ_SERVICE_PORT \
- RABBIT_USERID RABBIT_PASSWORD GLANCE_API_SERVICE_HOST \
- GLANCE_API_SERVICE_PORT ADMIN_TENANT_NAME \
- CINDER_DB_NAME CINDER_DB_USER CINDER_KEYSTONE_USER \
- PUBLIC_IP KEYSTONE_AUTH_PROTOCOL CINDER_LOG_DIR
-
-dump_vars
-
-cat > /openrc <<EOF
-export OS_AUTH_URL="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-export OS_USERNAME="${CINDER_KEYSTONE_USER}"
-export OS_PASSWORD="${CINDER_KEYSTONE_PASSWORD}"
-export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
-EOF
-
-cfg=/etc/cinder/cinder.conf
-
-# Logging
-crudini --set $cfg \
- DEFAULT \
- log_dir \
- "${CINDER_LOG_DIR}"
-crudini --set $cfg \
- DEFAULT \
- verbose \
- "${VERBOSE_LOGGING}"
-crudini --set $cfg \
- DEFAULT \
- debug \
- "${DEBUG_LOGGING}"
-
-# backend
-crudini --set $cfg \
- DEFAULT \
- rpc_backend \
- "cinder.openstack.common.rpc.impl_kombu"
-
-# rabbit
-crudini --set $cfg \
- DEFAULT \
- rabbit_host \
- "${RABBITMQ_SERVICE_HOST}"
-crudini --set $cfg \
- DEFAULT \
- rabbit_port \
- "${RABBITMQ_SERVICE_PORT}"
-crudini --set $cfg \
- DEFAULT \
- rabbit_hosts \
- "${RABBITMQ_SERVICE_HOST}:${RABBITMQ_SERVICE_PORT}"
-crudini --set $cfg \
- DEFAULT \
- rabbit_userid \
- "${RABBIT_USERID}"
-crudini --set $cfg \
- DEFAULT \
- rabbit_password \
- "${RABBIT_PASSWORD}"
-crudini --set /etc/cinder/cinder.conf \
- DEFAULT \
- rabbit_virtual_host \
- "/"
-crudini --set /etc/cinder/cinder.conf \
- DEFAULT \
- rabbit_ha_queues \
- "False"
-
-# control_exchange
-crudini --set /etc/cinder/cinder.conf \
- DEFAULT \
- control_exchange \
- "openstack"
-
-# glance
-crudini --set $cfg \
- DEFAULT \
- glance_host \
- "${GLANCE_API_SERVICE_HOST}"
-crudini --set $cfg \
- DEFAULT \
- glance_port \
- "${GLANCE_API_SERVICE_PORT}"
-
-# database
-crudini --set $cfg \
- database \
- connection \
- "mysql://${CINDER_DB_USER}:${CINDER_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${CINDER_DB_NAME}"
-
-# keystone
-crudini --set $cfg \
- DEFAULT \
- auth_strategy \
- "keystone"
-crudini --del $cfg \
- keystone_authtoken \
- auth_protocol
-crudini --del $cfg \
- keystone_authtoken \
- auth_host
-crudini --del $cfg \
- keystone_authtoken \
- auth_port
-crudini --set $cfg \
- keystone_authtoken \
- auth_uri \
- "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-crudini --set $cfg \
- keystone_authtoken \
- identity_uri \
- "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}"
-crudini --set $cfg \
- keystone_authtoken \
- admin_tenant_name \
- "${ADMIN_TENANT_NAME}"
-crudini --set $cfg \
- keystone_authtoken \
- admin_user \
- "${CINDER_KEYSTONE_USER}"
-crudini --set $cfg \
- keystone_authtoken \
- admin_password \
- "${CINDER_KEYSTONE_PASSWORD}"
+../../../../common/cinder-app/cinder-base/config-cinder.sh \ No newline at end of file
diff --git a/docker/centos/binary/cinder-app/cinder-scheduler/start.sh b/docker/centos/binary/cinder-app/cinder-scheduler/start.sh
index 93efeb406..a91c95ebd 100755..120000
--- a/docker/centos/binary/cinder-app/cinder-scheduler/start.sh
+++ b/docker/centos/binary/cinder-app/cinder-scheduler/start.sh
@@ -1,32 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-cinder.sh
-
-fail_unless_db
-
-check_required_vars MARIADB_SERVICE_HOST DB_ROOT_PASSWORD \
- CINDER_DB_NAME CINDER_DB_USER CINDER_DB_PASSWORD \
- CINDER_SCHEDULER_LOG_FILE INIT_CINDER_DB
-
-cfg=/etc/cinder/cinder.conf
-
-if [ "${INIT_CINDER_DB}" == "true" ]; then
- 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 ${CINDER_DB_NAME}.* TO
-'${CINDER_DB_USER}'@'%' IDENTIFIED BY '${CINDER_DB_PASSWORD}'
-EOF
-
- su -s /bin/sh -c "cinder-manage db sync" cinder
-fi
-
-crudini --set $cfg \
- DEFAULT \
- log_file \
- "${CINDER_SCHEDULER_LOG_FILE}"
-
-echo "Starting cinder-scheduler"
-exec /usr/bin/cinder-scheduler --config-file $cfg
+../../../../common/cinder-app/cinder-scheduler/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/cinder-app/cinder-volume/start.sh b/docker/centos/binary/cinder-app/cinder-volume/start.sh
index db29e75de..f79df7c47 100755..120000
--- a/docker/centos/binary/cinder-app/cinder-volume/start.sh
+++ b/docker/centos/binary/cinder-app/cinder-volume/start.sh
@@ -1,75 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-cinder.sh
-. /opt/kolla/volume-group-create.sh
-
-check_required_vars CINDER_VOLUME_API_LISTEN ISCSI_HELPER ISCSI_IP_ADDRESS \
- CINDER_VOLUME_GROUP CINDER_LVM_LO_VOLUME_SIZE \
- CINDER_VOLUME_BACKEND_NAME CINDER_VOLUME_DRIVER \
- CINDER_ENABLED_BACKEND CINDER_VOLUME_LOG_FILE
-
-cfg=/etc/cinder/cinder.conf
-
-# Logging
-crudini --set $cfg \
- DEFAULT \
- log_file \
- "${CINDER_VOLUME_LOG_FILE}"
-
-# IP address on which OpenStack Volume API listens
-crudini --set $cfg \
- DEFAULT \
- osapi_volume_listen \
- "${CINDER_VOLUME_API_LISTEN}"
-
-# The IP address that the iSCSI daemon is listening on
-crudini --set $cfg \
- DEFAULT \
- iscsi_ip_address \
- "${ISCSI_IP_ADDRESS}"
-
-# Set to false when using loopback devices (testing)
-crudini --set $cfg \
- DEFAULT \
- secure_delete \
- "false"
-
-crudini --set $cfg \
- DEFAULT \
- enabled_backends \
- "${CINDER_ENABLED_BACKEND}"
-
-crudini --set $cfg \
- lvm57 \
- iscsi_helper \
- "${ISCSI_HELPER}"
-
-crudini --set $cfg \
- lvm57 \
- volume_group \
- "${CINDER_VOLUME_GROUP}"
-
-crudini --set $cfg \
- lvm57 \
- volume_driver \
- "${CINDER_VOLUME_DRIVER}"
-
-crudini --set $cfg \
- lvm57 \
- iscsi_ip_address \
- "${ISCSI_IP_ADDRESS}"
-
-crudini --set $cfg \
- lvm57 \
- volume_backend_name \
- "${CINDER_VOLUME_BACKEND_NAME}"
-
-sed -i 's/udev_sync = 1/udev_sync = 0/' /etc/lvm/lvm.conf
-sed -i 's/udev_rules = 1/udev_rules = 0/' /etc/lvm/lvm.conf
-sed -i 's/use_lvmetad = 1/use_lvmetad = 0/' /etc/lvm/lvm.conf
-
-echo "Starting cinder-volume"
-exec /usr/bin/cinder-volume --config-file /etc/cinder/cinder.conf
+../../../../common/cinder-app/cinder-volume/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/cinder-app/cinder-volume/volume-group-create.sh b/docker/centos/binary/cinder-app/cinder-volume/volume-group-create.sh
index 908d987b0..eeeca7063 100755..120000
--- a/docker/centos/binary/cinder-app/cinder-volume/volume-group-create.sh
+++ b/docker/centos/binary/cinder-app/cinder-volume/volume-group-create.sh
@@ -1,22 +1 @@
-#!/bin/bash
-
-# The script will create the cinder-volume volume group that will
-# allow cinder to create volumes from a backing file.
-# This is based off devstack.
-set -e
-
-backing_file=/opt/data/cinder_volume
-
-check_required_vars CINDER_LVM_LO_VOLUME_SIZE CINDER_VOLUME_GROUP
-
-if ! vgs ${CINDER_VOLUME_GROUP}; then
- [[ ! -f $backing_file ]] && truncate -s ${CINDER_LVM_LO_VOLUMES_SIZE} $backing_file
- vg_dev=`losetup -f --show $backing_file`
- if ! vgs ${CINDER_VOLUME_GROUP}; then
- vgcreate ${CINDER_VOLUME_GROUP} $vg_dev
- fi
-fi
-
-# Remove iscsi targets
-cinder-rtstool get-targets | xargs -rn 1 cinder-rtstool delete
-
+../../../../common/cinder-app/cinder-volume/volume-group-create.sh \ No newline at end of file
diff --git a/docker/centos/binary/designate/designate-api/start.sh b/docker/centos/binary/designate/designate-api/start.sh
index aae50ea8f..f96fe1a34 100755..120000
--- a/docker/centos/binary/designate/designate-api/start.sh
+++ b/docker/centos/binary/designate/designate-api/start.sh
@@ -1,37 +1 @@
-#!/bin/bash
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-designate.sh
-
-CONF=/etc/designate/designate.conf
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- DESIGNATE_KEYSTONE_USER DESIGNATE_KEYSTONE_PASSWORD \
- KEYSTONE_AUTH_PROTOCOL ADMIN_TENANT_NAME \
- DESIGNATE_API_SERVICE_HOST DESIGNATE_API_SERVICE_PORT \
- KEYSTONE_ADMIN_SERVICE_PORT
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-
-fail_unless_os_service_running keystone
-
-crux user-create \
- -n ${DESIGNATE_KEYSTONE_USER} \
- -p ${DESIGNATE_KEYSTONE_PASSWORD} \
- -t ${ADMIN_TENANT_NAME} \
- -r admin
-
-crux endpoint-create \
- --remove-all \
- -n ${DESIGNATE_KEYSTONE_USER} \
- -t dns \
- -I "${KEYSTONE_AUTH_PROTOCOL}://${DESIGNATE_API_SERVICE_HOST}:${DESIGNATE_API_SERVICE_PORT}/v1" \
- -P "${KEYSTONE_AUTH_PROTOCOL}://${DESIGNATE_API_SERVICE_HOST}:${DESIGNATE_API_SERVICE_PORT}/v1" \
- -A "${KEYSTONE_AUTH_PROTOCOL}://${DESIGNATE_API_SERVICE_HOST}:${DESIGNATE_API_SERVICE_PORT}/v1"
-
-crudini --set $CONF service:api api_paste_config "/usr/share/designate/api-paste.ini"
-crudini --set $CONF service:api api_port "${DESIGNATE_API_SERVICE_PORT}"
-
-exec /usr/bin/designate-api
+../../../../common/designate/designate-api/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/designate/designate-backend-bind9/start.sh b/docker/centos/binary/designate/designate-backend-bind9/start.sh
index 90d2de676..918411fa1 100755..120000
--- a/docker/centos/binary/designate/designate-backend-bind9/start.sh
+++ b/docker/centos/binary/designate/designate-backend-bind9/start.sh
@@ -1,60 +1 @@
-#!/bin/bash
-set -e
-
-. /opt/kolla/kolla-common.sh
-
-check_required_vars DESIGNATE_MASTERNS DESIGNATE_SLAVENS DESIGNATE_BIND9_RNDC_KEY \
- DESIGNATE_ALLOW_RECURSION
-
-NAMEDCFG=/etc/named.conf
-
-# /var/named is coming from a VOLUME definition but at first boot it needs to
-# be populated from the original container since else it would be missing some
-# Bind9 core files. These files have been saved during the build phase.
-
-if [ ! -f /var/named/named.ca ]; then
- cp -pr /opt/kolla/var-named/* /var/named/
-fi
-
-# When rndc adds a new domain, bind adds the call in an nzf file in this
-# directory.
-chmod 770 /var/named
-chown root:named /var/named
-
-# Default Bind9 behavior is to enable recursion, disable if wanted.
-if [ "${DESIGNATE_ALLOW_RECURSION}" == "false" ]; then
- sed -i -r "s/(recursion) yes/\1 no/" $NAMEDCFG
-fi
-
-sed -i -r "/listen-on port 53/d" $NAMEDCFG
-sed -i -r "/listen-on-v6/d" $NAMEDCFG
-sed -i -r "s,/\* Path to ISC DLV key \*/,allow-new-zones yes;," $NAMEDCFG
-sed -i -r "/allow-query .+;/d" $NAMEDCFG
-
-if ! grep -q rndc-key /etc/named.conf; then
- cat >> /etc/named.conf <<EOF
-include "/etc/rndc.key";
-controls {
- inet ${DESIGNATE_SLAVENS} allow { ${DESIGNATE_MASTERNS}; } keys { "rndc-key"; };
-};
-EOF
-fi
-
-cat > /etc/rndc.key <<EOF
-key "rndc-key" {
- algorithm hmac-md5;
- secret "${DESIGNATE_BIND9_RNDC_KEY}";
-};
-EOF
-cat > /etc/rndc.conf <<EOF
-options {
- default-key "rndc-key";
- default-server 127.0.0.1;
- default-port 953;
-};
-EOF
-cat /etc/rndc.key >> /etc/rndc.conf
-chown named /etc/rndc.key
-
-# Launch and keep in the foreground.
-exec /usr/sbin/named -u named -g
+../../../../common/designate/designate-backend-bind9/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/designate/designate-base/config-designate.sh b/docker/centos/binary/designate/designate-base/config-designate.sh
index 6edfd1bd2..77aa738de 100755..120000
--- a/docker/centos/binary/designate/designate-base/config-designate.sh
+++ b/docker/centos/binary/designate/designate-base/config-designate.sh
@@ -1,79 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-
-get_or_create_domain() {
- local DOMAIN_NAME=$1
-
- DOMAIN_ID=$(designate domain-create --name $DOMAIN_NAME | awk '/id/ { print $4; }')
- # Searching domain if not created
- if [ -z $DOMAIN_ID ]; then
- DOMAIN_ID=$(designate domain-list | awk "/$DOMAIN_NAME/ { print \$2; }")
- fi
- # Fail if domain still don't exist
- if [ -z $DOMAIN_ID ]; then
- echo "Creating domain failed" 1>&2
- exit 1
- fi
-
- echo $DOMAIN_ID
-}
-
-check_required_vars DESIGNATE_DB_PASSWORD DESIGNATE_KEYSTONE_PASSWORD \
- KEYSTONE_PUBLIC_SERVICE_HOST RABBITMQ_SERVICE_HOST \
- DESIGNATE_BIND9_RNDC_KEY DESIGNATE_BACKEND \
- KEYSTONE_PUBLIC_SERVICE_PORT DESIGNATE_KEYSTONE_USER \
- RABBIT_USERID RABBIT_PASSWORD DESIGNATE_DB_USER \
- DESIGNATE_DB_NAME KEYSTONE_AUTH_PROTOCOL \
- KEYSTONE_ADMIN_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_PORT \
- DEBUG_LOGGING DESIGNATE_POOLMAN_POOLID
-
-fail_unless_db
-dump_vars
-
-cat > /openrc <<EOF
-export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-export OS_USERNAME="${DESIGNATE_KEYSTONE_USER}"
-export OS_PASSWORD="${DESIGNATE_KEYSTONE_PASSWORD}"
-export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
-EOF
-
-conf=/etc/designate/designate.conf
-
-# Regular configuration.
-crudini --set $conf DEFAULT log_file ""
-crudini --set $conf DEFAULT use_stderr "True"
-crudini --set $conf DEFAULT debug "${DEBUG_LOGGING}"
-crudini --set $conf DEFAULT rpc_backend "designate.openstack.common.rpc.impl_kombu"
-
-crudini --set $conf oslo_messaging_rabbit rabbit_host "${RABBITMQ_SERVICE_HOST}"
-crudini --set $conf oslo_messaging_rabbit rabbit_userid "${RABBIT_USERID}"
-crudini --set $conf oslo_messaging_rabbit rabbit_password "${RABBIT_PASSWORD}"
-
-crudini --set $conf storage:sqlalchemy connection "mysql://${DESIGNATE_DB_USER}:${DESIGNATE_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${DESIGNATE_DB_NAME}"
-
-crudini --set $conf service:api auth_strategy "keystone"
-crudini --set $conf service:api api_host "${PUBLIC_IP}"
-
-# Eventhough this is a central-scoped item, it's used in other Designate
-# components as well. Thus it should be configured here, from designate-base.
-crudini --set $conf service:central default_pool_id "${DESIGNATE_POOLMAN_POOLID}"
-
-crudini --set $conf keystone_authtoken identity_uri "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}"
-crudini --set $conf keystone_authtoken auth_uri "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-crudini --set $conf keystone_authtoken admin_tenant_name "${ADMIN_TENANT_NAME}"
-crudini --set $conf keystone_authtoken admin_user "${DESIGNATE_KEYSTONE_USER}"
-crudini --set $conf keystone_authtoken admin_password "${DESIGNATE_KEYSTONE_PASSWORD}"
-
-if [ "${DESIGNATE_BACKEND}" == "bind9" ]; then
- # Configure a key for RNDC so it can connect with Bind9 to create/delete
- # zones.
- cat > /etc/rndc.key <<EOF
-key "rndc-key" {
- algorithm hmac-md5;
- secret "${DESIGNATE_BIND9_RNDC_KEY}";
-};
-EOF
-fi
+../../../../common/designate/designate-base/config-designate.sh \ No newline at end of file
diff --git a/docker/centos/binary/designate/designate-central/start.sh b/docker/centos/binary/designate/designate-central/start.sh
index fef7e2353..9e0a8c484 100755..120000
--- a/docker/centos/binary/designate/designate-central/start.sh
+++ b/docker/centos/binary/designate/designate-central/start.sh
@@ -1,24 +1 @@
-#!/bin/bash
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-designate.sh
-
-check_required_vars MARIADB_SERVICE_HOST DB_ROOT_PASSWORD DESIGNATE_DB_NAME \
- DESIGNATE_DB_USER DESIGNATE_DB_PASSWORD DESIGNATE_INITDB
-
-fail_unless_db
-
-CONF=/etc/designate/designate.conf
-
-if [ "${DESIGNATE_INITDB}" == "true" ]; then
- echo "Configuring database"
- mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${DESIGNATE_DB_NAME};
-GRANT ALL PRIVILEGES ON ${DESIGNATE_DB_NAME}.* TO '${DESIGNATE_DB_USER}'@'%' IDENTIFIED BY '${DESIGNATE_DB_PASSWORD}'
-EOF
-
- designate-manage database sync
-fi
-
-exec /usr/bin/designate-central
+../../../../common/designate/designate-central/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/designate/designate-mdns/start.sh b/docker/centos/binary/designate/designate-mdns/start.sh
index a3e5df274..f7bf747fc 100755..120000
--- a/docker/centos/binary/designate/designate-mdns/start.sh
+++ b/docker/centos/binary/designate/designate-mdns/start.sh
@@ -1,17 +1 @@
-#!/bin/bash
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-designate.sh
-
-check_required_vars DESIGNATE_MASTERNS DESIGNATE_MDNS_PORT
-
-CONF=/etc/designate/designate.conf
-
-crudini --set $CONF service:mdns workers "1"
-crudini --set $CONF service:mdns host "${DESIGNATE_MASTERNS}"
-crudini --set $CONF service:mdns port "${DESIGNATE_MDNS_PORT}"
-crudini --set $CONF service:mdns tcp_backlog "100"
-crudini --set $CONF service:mdns all_tcp "False"
-
-exec /usr/bin/designate-mdns
+../../../../common/designate/designate-mdns/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/designate/designate-poolmanager/start.sh b/docker/centos/binary/designate/designate-poolmanager/start.sh
index f5222b3f4..cc428b4fe 100755..120000
--- a/docker/centos/binary/designate/designate-poolmanager/start.sh
+++ b/docker/centos/binary/designate/designate-poolmanager/start.sh
@@ -1,54 +1 @@
-#!/bin/bash
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-designate.sh
-
-check_required_vars DESIGNATE_MASTERNS DESIGNATE_BACKEND DESIGNATE_SLAVENS \
- DESIGNATE_MDNS_PORT DESIGNATE_DNS_PORT DESIGNATE_POOLMAN_POOLID \
- DESIGNATE_POOLMAN_TARGETS DESIGNATE_POOLMAN_NSS \
- DESIGNATE_POOLMAN_POOLID
-
-CONF=/etc/designate/designate.conf
-
-if [ "${DESIGNATE_BACKEND}" == "bind9" ]; then
- TYPE="bind9"
- OPTIONS="rndc_host: ${DESIGNATE_SLAVENS}, rndc_key_file: /etc/rndc.key"
-else
- echo Unsupported backend: ${DESIGNATE_BACKEND}
- exit
-fi
-
-crudini --set $CONF service:pool_manager workers "1"
-crudini --set $CONF service:pool_manager enable_recovery_timer "False"
-crudini --set $CONF service:pool_manager periodic_recovery_interval "120"
-crudini --set $CONF service:pool_manager enable_sync_timer "True"
-crudini --set $CONF service:pool_manager periodic_sync_interval "1800"
-crudini --set $CONF service:pool_manager poll_max_retries "10"
-crudini --set $CONF service:pool_manager poll_delay "5"
-crudini --set $CONF service:pool_manager poll_retry_interval "15"
-crudini --set $CONF service:pool_manager pool_id "${DESIGNATE_POOLMAN_POOLID}"
-crudini --set $CONF service:pool_manager cache_driver "noop"
-
-# TODO: use this to use memcached
-#crudini --set $CONF service:pool_manager cache_driver memcache
-#crudini --set $CONF service:pool_manager memcached_servers ${MEMCACHED_HOST}
-
-# Specify the id of the pool managed through pool_manager. Central gets
-# configured with this pool_id as well.
-crudini --set $CONF service:pool_manager pool_id "${DESIGNATE_POOLMAN_POOLID}"
-
-crudini --set $CONF pool:${DESIGNATE_POOLMAN_POOLID} nameservers "${DESIGNATE_POOLMAN_NSS}"
-crudini --set $CONF pool:${DESIGNATE_POOLMAN_POOLID} targets "${DESIGNATE_POOLMAN_TARGETS}"
-
-crudini --set $CONF pool_target:${DESIGNATE_POOLMAN_TARGETS} type "${TYPE}"
-crudini --set $CONF pool_target:${DESIGNATE_POOLMAN_TARGETS} options "${OPTIONS}"
-# This is the mdns container, which is the master nameserver.
-crudini --set $CONF pool_target:${DESIGNATE_POOLMAN_TARGETS} masters "${DESIGNATE_MASTERNS}:${DESIGNATE_MDNS_PORT}"
-crudini --set $CONF pool_target:${DESIGNATE_POOLMAN_TARGETS} host "${DESIGNATE_MASTERNS}"
-crudini --set $CONF pool_target:${DESIGNATE_POOLMAN_TARGETS} port "${DESIGNATE_DNS_PORT}"
-
-crudini --set $CONF pool_nameserver:${DESIGNATE_POOLMAN_NSS} host "${DESIGNATE_MASTERNS}"
-crudini --set $CONF pool_nameserver:${DESIGNATE_POOLMAN_NSS} port "${DESIGNATE_DNS_PORT}"
-
-exec /usr/bin/designate-pool-manager
+../../../../common/designate/designate-poolmanager/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/galera/config-galera.sh b/docker/centos/binary/galera/config-galera.sh
index f0ab542e1..f6782bb87 100755..120000
--- a/docker/centos/binary/galera/config-galera.sh
+++ b/docker/centos/binary/galera/config-galera.sh
@@ -1,94 +1 @@
-#!/bin/bash
-
-. /opt/kolla/kolla-common.sh
-
-check_required_vars DB_CLUSTER_BIND_ADDRESS DB_CLUSTER_NAME DB_CLUSTER_NODES \
- DB_ROOT_PASSWORD DB_CLUSTER_WSREP_METHOD
-
-CFG=/etc/my.cnf.d/server.cnf
-DB_CLUSTER_INIT_SQL=/tmp/mysql-first-time.sql
-
-function configure_files {
- crudini --set $CFG mariadb bind-address "${DB_CLUSTER_BIND_ADDRESS}"
- crudini --set $CFG mariadb binlog_format "ROW"
- crudini --set $CFG mariadb character-set-server "utf8"
- crudini --set $CFG mariadb collation-server "utf8_general_ci"
- crudini --set $CFG mariadb datadir "/var/lib/mysql"
- crudini --set $CFG mariadb default-storage-engine "innodb"
- crudini --set $CFG mariadb init-connect "'SET NAMES utf8'"
- crudini --set $CFG mariadb innodb_autoinc_lock_mode "2"
- crudini --set $CFG mariadb innodb_file_per_table 1
- crudini --set $CFG mariadb innodb_flush_log_at_trx_commit "2"
- crudini --set $CFG mariadb innodb_locks_unsafe_for_binlog "1"
- crudini --set $CFG mariadb innodb_log_file_size "100M"
- crudini --set $CFG mariadb query_cache_size "0"
- crudini --set $CFG mariadb query_cache_type "0"
- crudini --set $CFG mariadb wsrep_cluster_address "gcomm://${DB_CLUSTER_NODES}"
- crudini --set $CFG mariadb wsrep_cluster_name "${DB_CLUSTER_NAME}"
- crudini --set $CFG mariadb wsrep_provider "/usr/lib64/galera/libgalera_smm.so"
- crudini --set $CFG mariadb wsrep_sst_auth "'root:${DB_ROOT_PASSWORD}'"
- crudini --set $CFG mariadb wsrep_sst_method "${DB_CLUSTER_WSREP_METHOD}"
-}
-
-function bootstrap_database() {
- mysqld_safe &
- # Waiting for deamon
- sleep 10
- expect -c '
- set timeout 10
- spawn mysql_secure_installation
- expect "Enter current password for root (enter for none):"
- send "\r"
- expect "Set root password?"
- send "y\r"
- expect "New password:"
- send "'"${DB_ROOT_PASSWORD}"'\r"
- expect "Re-enter new password:"
- send "'"${DB_ROOT_PASSWORD}"'\r"
- expect "Remove anonymous users?"
- send "y\r"
- expect "Disallow root login remotely?"
- send "n\r"
- expect "Remove test database and access to it?"
- send "y\r"
- expect "Reload privilege tables now?"
- send "y\r"
- expect eof'
- mysqladmin -p"${DB_ROOT_PASSWORD}" shutdown
-}
-
-function configure_db {
- bootstrap_database
-
- echo "GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '$DB_ROOT_PASSWORD' ;" > $DB_CLUSTER_INIT_SQL
-
- if [ "$MARIADB_DATABASE" ]; then
- echo "CREATE DATABASE IF NOT EXISTS $MARIADB_DATABASE ;" >> $DB_CLUSTER_INIT_SQL
- fi
-
- if [ "$MARIADB_USER" -a "$MARIADB_PASSWORD" ]; then
- echo "CREATE USER '$MARIADB_USER'@'%' IDENTIFIED BY '$MARIADB_PASSWORD' ;" >> $DB_CLUSTER_INIT_SQL
-
- if [ "$MARIADB_DATABASE" ]; then
- echo "GRANT ALL ON $MARIADB_DATABASE.* TO '$MARIADB_USER'@'%' ;" >> $DB_CLUSTER_INIT_SQL
- fi
- fi
-
- echo "FLUSH PRIVILEGES" >> $DB_CLUSTER_INIT_SQL
-}
-
-function populate_db {
- if [[ $(ls /var/lib/mysql) == "" ]]; then
- echo "POPULATING NEW DB"
- mysql_install_db
- chown -R mysql /var/lib/mysql
- else
- echo "DB ALREADY EXISTS"
- fi
-}
-
-function prepare_db {
- populate_db
- configure_db
- configure_files
-}
+../../../common/galera/config-galera.sh \ No newline at end of file
diff --git a/docker/centos/binary/galera/start.sh b/docker/centos/binary/galera/start.sh
index 9288b77cc..1fa9a143d 100755..120000
--- a/docker/centos/binary/galera/start.sh
+++ b/docker/centos/binary/galera/start.sh
@@ -1,14 +1 @@
-#!/bin/bash
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-galera.sh
-
-check_required_vars DB_CLUSTER_INIT_DB
-prepare_db
-
-if [[ "${DB_CLUSTER_INIT_DB}" == "true" ]] && ! [[ -a /var/lib/mysql/cluster.exists ]]; then
- DB_CLUSTER_IS_MASTER_NODE="--wsrep-new-cluster"
- touch /var/lib/mysql/cluster.exists
-fi
-
-mysqld_safe --init-file=$DB_CLUSTER_INIT_SQL $DB_CLUSTER_IS_MASTER_NODE \ No newline at end of file
+../../../common/galera/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/glance/glance-api/check.sh b/docker/centos/binary/glance/glance-api/check.sh
index f97ef70f4..73dd5e253 100755..120000
--- a/docker/centos/binary/glance/glance-api/check.sh
+++ b/docker/centos/binary/glance/glance-api/check.sh
@@ -1,17 +1 @@
-#!/bin/bash
-
-RES=0
-
-. /openrc
-if ! keystone token-get > /dev/null; then
- echo "ERROR: keystone token-get failed" >&2
- RES=1
-else
- if ! glance image-list > /dev/null; then
- echo "ERROR: glance image-list failed" >&2
- RES=1
- fi
-fi
-
-exit $RES
-
+../../../../common/glance/glance-api/check.sh \ No newline at end of file
diff --git a/docker/centos/binary/glance/glance-api/start.sh b/docker/centos/binary/glance/glance-api/start.sh
index c546333f4..6740e1fe9 100755..120000
--- a/docker/centos/binary/glance/glance-api/start.sh
+++ b/docker/centos/binary/glance/glance-api/start.sh
@@ -1,52 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-glance.sh
-: ${GLANCE_API_SERVICE_HOST:=$PUBLIC_IP}
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- GLANCE_KEYSTONE_USER GLANCE_KEYSTONE_PASSWORD \
- ADMIN_TENANT_NAME GLANCE_API_SERVICE_HOST \
- PUBLIC_IP
-
-fail_unless_os_service_running keystone
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-
-crux user-create --update \
- -n "${GLANCE_KEYSTONE_USER}" \
- -p "${GLANCE_KEYSTONE_PASSWORD}" \
- -t "${ADMIN_TENANT_NAME}" \
- -r admin
-
-crux endpoint-create --remove-all \
- -n glance -t image \
- -I "http://${GLANCE_API_SERVICE_HOST}:9292" \
- -P "http://${PUBLIC_IP}:9292" \
- -A "http://${GLANCE_API_SERVICE_HOST}:9292"
-
-# turn on notification sending by glance
-crudini --set /etc/glance/glance-api.conf \
- DEFAULT \
- notification_driver \
- "messaging"
-
-crudini --set /etc/glance/glance-api.conf \
- DEFAULT \
- rabbit_host \
- "${RABBITMQ_SERVICE_HOST}"
-
-crudini --set /etc/glance/glance-api.conf \
- DEFAULT \
- registry_host \
- "${GLANCE_REGISTRY_SERVICE_HOST}"
-
-crudini --set /etc/glance/glance-api.conf \
- DEFAULT \
- debug \
- "True"
-
-exec /usr/bin/glance-api
+../../../../common/glance/glance-api/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/glance/glance-base/config-glance.sh b/docker/centos/binary/glance/glance-base/config-glance.sh
index 97d076c11..d5c26f0b8 100644..120000
--- a/docker/centos/binary/glance/glance-base/config-glance.sh
+++ b/docker/centos/binary/glance/glance-base/config-glance.sh
@@ -1,63 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-
-: ${ADMIN_TENANT_NAME:=admin}
-: ${GLANCE_DB_NAME:=glance}
-: ${GLANCE_DB_USER:=glance}
-: ${GLANCE_KEYSTONE_USER:=glance}
-: ${KEYSTONE_AUTH_PROTOCOL:=http}
-: ${PUBLIC_IP:=$GLANCE_API_PORT_9292_TCP_ADDR}
-
-check_required_vars GLANCE_DB_PASSWORD GLANCE_KEYSTONE_PASSWORD
-dump_vars
-
-cat > /openrc <<EOF
-export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
-export OS_USERNAME="${GLANCE_KEYSTONE_USER}"
-export OS_PASSWORD="${GLANCE_KEYSTONE_PASSWORD}"
-export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
-EOF
-
-for cfg in /etc/glance/glance-api.conf /etc/glance/glance-registry.conf; do
- crudini --set $cfg \
- DEFAULT \
- log_file \
- ""
-
- for option in auth_protocol auth_host auth_port; do
- crudini --del $cfg \
- keystone_authtoken \
- $option
- done
-
- crudini --set $cfg \
- keystone_authtoken \
- auth_uri \
- "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/"
- crudini --set $cfg \
- keystone_authtoken \
- admin_tenant_name \
- "${ADMIN_TENANT_NAME}"
- crudini --set $cfg \
- keystone_authtoken \
- admin_user \
- "${GLANCE_KEYSTONE_USER}"
- crudini --set $cfg \
- keystone_authtoken \
- admin_password \
- "${GLANCE_KEYSTONE_PASSWORD}"
-
- crudini --set $cfg \
- paste_deploy \
- flavor \
- keystone
-
- crudini --set $cfg \
- database \
- connection \
- "mysql://${GLANCE_DB_USER}:${GLANCE_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${GLANCE_DB_NAME}"
-done
-
+../../../../common/glance/glance-base/config-glance.sh \ No newline at end of file
diff --git a/docker/centos/binary/glance/glance-registry/start.sh b/docker/centos/binary/glance/glance-registry/start.sh
index 5f590fb1c..1295cdc31 100755..120000
--- a/docker/centos/binary/glance/glance-registry/start.sh
+++ b/docker/centos/binary/glance/glance-registry/start.sh
@@ -1,21 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-glance.sh
-
-check_required_vars GLANCE_DB_NAME GLANCE_DB_USER GLANCE_DB_PASSWORD
-# lets wait for the DB to be available
-wait_for 25 1 check_for_db
-
-mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${GLANCE_DB_NAME} DEFAULT CHARACTER SET utf8;
-GRANT ALL PRIVILEGES ON ${GLANCE_DB_NAME}.* TO
- '${GLANCE_DB_USER}'@'%' IDENTIFIED BY '${GLANCE_DB_PASSWORD}'
-
-EOF
-
-/usr/bin/glance-manage db_sync
-
-exec /usr/bin/glance-registry
+../../../../common/glance/glance-registry/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/hautoproxy/haproxy.cfg.tmpl b/docker/centos/binary/hautoproxy/haproxy.cfg.tmpl
index cd1174b21..dc3f45c31 100644..120000
--- a/docker/centos/binary/hautoproxy/haproxy.cfg.tmpl
+++ b/docker/centos/binary/hautoproxy/haproxy.cfg.tmpl
@@ -1,26 +1 @@
-global
- daemon
- maxconn 4096
- pidfile /var/run/haproxy.pid
-
-defaults
- mode tcp
- timeout connect 5s
- timeout client 1m
- timeout server 1m
- option redispatch
- balance roundrobin
-
-listen stats :1936
- mode http
- stats enable
- stats hide-version
- #stats realm Haproxy\ Statistics
- stats uri /
- #stats auth Username:Password
-
-{% for service in services %}
-listen {{ service.service_name }}
- bind 127.0.0.1:{{service.local_port}}
- server {{ service.remote_name }} {{ service.remote_addr }}:{{ service.remote_port}} check inter 2s rise 3 fall 2
-{% endfor %}
+../../../common/hautoproxy/haproxy.cfg.tmpl \ No newline at end of file
diff --git a/docker/centos/binary/hautoproxy/start.py b/docker/centos/binary/hautoproxy/start.py
index 877b22157..f89efa2f8 100755..120000
--- a/docker/centos/binary/hautoproxy/start.py
+++ b/docker/centos/binary/hautoproxy/start.py
@@ -1,65 +1 @@
-#!/usr/bin/python
-
-'''This script configures and starts a local haproxy instances, bound to
-127.0.0.1, that forwards connections all of the discovered
-docker/kubernetes environment variables.'''
-
-import argparse
-import os
-import sys
-from jinja2 import Environment, FileSystemLoader
-import re
-import urlparse
-
-re_url = re.compile(
- '^(?P<name>.*)_PORT_(?P<port>\d+)_(?P<proto>(UDP|TCP))$')
-
-def parse_args():
- p = argparse.ArgumentParser()
- p.add_argument('--output', '-o',
- default='/etc/haproxy/haproxy.cfg')
- p.add_argument('--no-start', '-n',
- action='store_true')
- p.add_argument('--template-dir', '-t',
- default='/etc/haproxy/templates')
- return p.parse_args()
-
-def discover_services():
- services = []
- for k in os.environ:
- mo = re_url.match(k)
-
- if mo:
- parts = urlparse.urlparse(os.environ[k])
- remote_host,remote_port = parts.netloc.split(':')
- service_name = '%(name)s-%(port)s' % mo.groupdict()
-
- services.append({
- 'remote_name': mo.group('name'),
- 'remote_addr': remote_host,
- 'remote_port': remote_port,
- 'remote_proto': parts.scheme,
- 'local_port': mo.group('port'),
- 'service_name': service_name,
- })
-
- return services
-
-def main():
- args = parse_args()
- services = discover_services()
-
- env = Environment(loader=FileSystemLoader(['.',
- args.template_dir]))
- template = env.get_template('haproxy.cfg.tmpl')
- with open(args.output, 'w') as fd:
- fd.write(template.render(services=services))
-
- if args.no_start:
- return
-
- os.execlp('haproxy', 'haproxy', '-f', args.output, '-db')
-
-if __name__ == '__main__':
- main()
-
+../../../common/hautoproxy/start.py \ No newline at end of file
diff --git a/docker/centos/binary/heat/heat-api-cfn/check.sh b/docker/centos/binary/heat/heat-api-cfn/check.sh
index ee03dc6d2..68fce28bf 100755..120000
--- a/docker/centos/binary/heat/heat-api-cfn/check.sh
+++ b/docker/centos/binary/heat/heat-api-cfn/check.sh
@@ -1,16 +1 @@
-#!/bin/bash
-
-RES=0
-
-. /openrc
-if ! keystone token-get > /dev/null; then
- echo "ERROR: keystone token-get failed" >&2
- RES=1
-else
- if ! heat stack-list > /dev/null; then
- echo "ERROR: heat stack-list failed" >&2
- RES=1
- fi
-fi
-
-exit $RES
+../../../../common/heat/heat-api-cfn/check.sh \ No newline at end of file
diff --git a/docker/centos/binary/heat/heat-api-cfn/start.sh b/docker/centos/binary/heat/heat-api-cfn/start.sh
index bcd72250b..a71201d4b 100755..120000
--- a/docker/centos/binary/heat/heat-api-cfn/start.sh
+++ b/docker/centos/binary/heat/heat-api-cfn/start.sh
@@ -1,28 +1 @@
-#!/bin/bash
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-heat.sh
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- HEAT_CFN_KEYSTONE_USER HEAT_CFN_KEYSTONE_PASSWORD \
- KEYSTONE_AUTH_PROTOCOL KEYSTONE_ADMIN_SERVICE_PORT \
- ADMIN_TENANT_NAME HEAT_API_CFN_SERVICE_HOST \
- HEAT_API_CFN_SERVICE_PORT
-
-fail_unless_os_service_running keystone
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-
-crux user-create -n ${HEAT_CFN_KEYSTONE_USER} \
- -p ${HEAT_CFN_KEYSTONE_PASSWORD} \
- -t ${ADMIN_TENANT_NAME} \
- -r admin
-
-crux endpoint-create --remove-all -n ${HEAT_CFN_KEYSTONE_USER} -t cloudformation \
- -I "${KEYSTONE_AUTH_PROTOCOL}://${HEAT_API_CFN_SERVICE_HOST}:${HEAT_API_CFN_SERVICE_PORT}/v1" \
- -P "${KEYSTONE_AUTH_PROTOCOL}://${HEAT_API_CFN_SERVICE_HOST}:${HEAT_API_CFN_SERVICE_PORT}/v1" \
- -A "${KEYSTONE_AUTH_PROTOCOL}://${HEAT_API_CFN_SERVICE_HOST}:${HEAT_API_CFN_SERVICE_PORT}/v1"
-
-exec /usr/bin/heat-api-cfn
+../../../../common/heat/heat-api-cfn/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/heat/heat-api/check.sh b/docker/centos/binary/heat/heat-api/check.sh
index ee03dc6d2..1e72d2e2c 100755..120000
--- a/docker/centos/binary/heat/heat-api/check.sh
+++ b/docker/centos/binary/heat/heat-api/check.sh
@@ -1,16 +1 @@
-#!/bin/bash
-
-RES=0
-
-. /openrc
-if ! keystone token-get > /dev/null; then
- echo "ERROR: keystone token-get failed" >&2
- RES=1
-else
- if ! heat stack-list > /dev/null; then
- echo "ERROR: heat stack-list failed" >&2
- RES=1
- fi
-fi
-
-exit $RES
+../../../../common/heat/heat-api/check.sh \ No newline at end of file
diff --git a/docker/centos/binary/heat/heat-api/start.sh b/docker/centos/binary/heat/heat-api/start.sh
index b57aaa710..cf3eb022c 100755..120000
--- a/docker/centos/binary/heat/heat-api/start.sh
+++ b/docker/centos/binary/heat/heat-api/start.sh
@@ -1,29 +1 @@
-#!/bin/bash
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-heat.sh
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- HEAT_KEYSTONE_USER HEAT_KEYSTONE_PASSWORD \
- KEYSTONE_AUTH_PROTOCOL ADMIN_TENANT_NAME \
- HEAT_API_SERVICE_HOST PUBLIC_IP
-
-fail_unless_os_service_running keystone
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
-crux user-create -n ${HEAT_KEYSTONE_USER} \
- -p ${HEAT_KEYSTONE_PASSWORD} \
- -t ${ADMIN_TENANT_NAME} \
- -r admin
-
-crux endpoint-create --remove-all -n ${HEAT_KEYSTONE_USER} -t orchestration \
- -I "${KEYSTONE_AUTH_PROTOCOL}://${HEAT_API_SERVICE_HOST}:8004/v1/%(tenant_id)s" \
- -P "${KEYSTONE_AUTH_PROTOCOL}://${PUBLIC_IP}:8004/v1/%(tenant_id)s" \
- -A "${KEYSTONE_AUTH_PROTOCOL}://${HEAT_API_SERVICE_HOST}:8004/v1/%(tenant_id)s"
-
-# will use crux after https://github.com/larsks/crux/issues/1 is implemented
-openstack role list --os-token="${KEYSTONE_ADMIN_TOKEN}" --os-url $SERVICE_ENDPOINT -f csv | tail -n +2 | awk -F, '{print $2}' | grep heat_stack_user || keystone role-create --name heat_stack_user
-
-exec /usr/bin/heat-api
+../../../../common/heat/heat-api/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/heat/heat-base/config-heat.sh b/docker/centos/binary/heat/heat-base/config-heat.sh
index 74b2718a4..8b4e89797 100755..120000
--- a/docker/centos/binary/heat/heat-base/config-heat.sh
+++ b/docker/centos/binary/heat/heat-base/config-heat.sh
@@ -1,67 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-
-: ${ADMIN_TENANT_NAME:=admin}
-: ${HEAT_DB_NAME:=heat}
-: ${HEAT_DB_USER:=heat}
-: ${HEAT_KEYSTONE_USER:=heat}
-: ${HEAT_CFN_KEYSTONE_USER:=heat_cfn}
-: ${KEYSTONE_AUTH_PROTOCOL:=http}
-: ${PUBLIC_IP:=$HEAT_API_PORT_8004_TCP_ADDR}
-: ${RABBIT_USER:=guest}
-: ${RABBIT_PASSWORD:=guest}
-
-check_required_vars HEAT_DB_PASSWORD HEAT_KEYSTONE_PASSWORD \
- KEYSTONE_PUBLIC_SERVICE_HOST RABBITMQ_SERVICE_HOST
-
-fail_unless_db
-dump_vars
-
-cat > /openrc <<EOF
-export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
-export OS_USERNAME="${HEAT_KEYSTONE_USER}"
-export OS_PASSWORD="${HEAT_KEYSTONE_PASSWORD}"
-export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
-EOF
-
-crudini --set /etc/heat/heat.conf DEFAULT log_file \
- ""
-crudini --set /etc/heat/heat.conf DEFAULT use_stderr \
- true
-crudini --set /etc/heat/heat.conf DEFAULT rpc_backend \
- heat.openstack.common.rpc.impl_kombu
-crudini --set /etc/heat/heat.conf DEFAULT rabbit_host \
- "${RABBITMQ_SERVICE_HOST}"
-crudini --set /etc/heat/heat.conf DEFAULT rabbit_userid \
- "${RABBIT_USER}"
-crudini --set /etc/heat/heat.conf DEFAULT rabbit_password \
- "${RABBIT_PASSWORD}"
-
-crudini --set /etc/heat/heat.conf database connection \
- mysql://${HEAT_DB_USER}:${HEAT_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${HEAT_DB_NAME}
-
-crudini --set /etc/heat/heat.conf keystone_authtoken auth_protocol \
- "${KEYSTONE_AUTH_PROTOCOL}"
-crudini --set /etc/heat/heat.conf keystone_authtoken auth_host \
- "${KEYSTONE_PUBLIC_SERVICE_HOST}"
-crudini --set /etc/heat/heat.conf keystone_authtoken auth_port \
- "${KEYSTONE_PUBLIC_SERVICE_PORT}"
-crudini --set /etc/heat/heat.conf keystone_authtoken auth_uri \
- "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-crudini --set /etc/heat/heat.conf keystone_authtoken admin_tenant_name \
- "${ADMIN_TENANT_NAME}"
-crudini --set /etc/heat/heat.conf keystone_authtoken admin_user \
- "${HEAT_KEYSTONE_USER}"
-crudini --set /etc/heat/heat.conf keystone_authtoken admin_password \
- "${HEAT_KEYSTONE_PASSWORD}"
-
-crudini --set /etc/heat/heat.conf ec2authtoken auth_uri \
- "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-
-crudini --set /etc/heat/heat.conf DEFAULT heat_metadata_server_url \
- http://${HEAT_API_CFN_URL_HOST}:${HEAT_API_CFN_SERVICE_PORT}
-crudini --set /etc/heat/heat.conf DEFAULT heat_waitcondition_server_url \
- http://${HEAT_API_CFN_URL_HOST}:${HEAT_API_CFN_SERVICE_PORT}/v1/waitcondition
+../../../../common/heat/heat-base/config-heat.sh \ No newline at end of file
diff --git a/docker/centos/binary/heat/heat-engine/start.sh b/docker/centos/binary/heat/heat-engine/start.sh
index 2dfc78e92..d660bc5d1 100755..120000
--- a/docker/centos/binary/heat/heat-engine/start.sh
+++ b/docker/centos/binary/heat/heat-engine/start.sh
@@ -1,17 +1 @@
-#!/bin/bash
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-heat.sh
-
-check_required_vars HEAT_DB_NAME HEAT_DB_USER HEAT_DB_PASSWORD
-fail_unless_db
-
-mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${HEAT_DB_NAME} DEFAULT CHARACTER SET utf8;
-GRANT ALL PRIVILEGES ON ${HEAT_DB_NAME}.* TO
- '${HEAT_DB_USER}'@'%' IDENTIFIED BY '${HEAT_DB_PASSWORD}'
-EOF
-
-/usr/bin/heat-manage db_sync
-
-exec /usr/bin/heat-engine
+../../../../common/heat/heat-engine/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/horizon/start.sh b/docker/centos/binary/horizon/start.sh
index 4e720bb87..3c793e4f9 100755..120000
--- a/docker/centos/binary/horizon/start.sh
+++ b/docker/centos/binary/horizon/start.sh
@@ -1,36 +1 @@
-#!/bin/bash
-set -e
-
-: ${HORIZON_KEYSTONE_USER:=horizon}
-
-. /opt/kolla/kolla-common.sh
-
-fail_unless_os_service_running keystone
-fail_unless_os_service_running glance
-fail_unless_os_service_running nova
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
-
-cfg=/etc/openstack-dashboard/local_settings
-httpdcfg=/etc/httpd/conf.d/openstack-dashboard.conf
-
-sed -ri 's/ALLOWED_HOSTS = \['\''horizon.example.com'\'', '\''localhost'\''\]/ALLOWED_HOSTS = \['\''*'\'', \]/' /etc/openstack-dashboard/local_settings
-
-sed -ri 's/OPENSTACK_KEYSTONE_URL = \"http:\/\/%s:5000\/v2.0\" % OPENSTACK_HOST/OPENSTACK_KEYSTONE_URL = \"http:\/\/'"$KEYSTONE_PUBLIC_SERVICE_HOST"':5000\/v2.0\"/' /etc/openstack-dashboard/local_settings
-
-sed -ri 's/OPENSTACK_HOST = \"127.0.0.1\"/OPENSTACK_HOST = \"'"$KEYSTONE_PUBLIC_SERVICE_HOST"'\" /' /etc/openstack-dashboard/local_settings
-
-# Make sure we launch horizon using the default value for WEBROOT, which is
-# '/'.
-sed -ri '/^WEBROOT =.+/d' $cfg
-sed -ri 's,^(WSGIScriptAlias) /dashboard (/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi),\1 / \2,' $httpdcfg
-sed -ri 's,^(Alias /dashboard)(/static /usr/share/openstack-dashboard/static),Alias \2,' $httpdcfg
-
-# This step is required because of:
-# https://bugzilla.redhat.com/show_bug.cgi?id=1220070
-# Running this in the Dockerfile didn't fix the HTTP/500 as a result of the
-# missing compress action.
-python /usr/share/openstack-dashboard/manage.py compress
-
-/usr/sbin/httpd -DFOREGROUND
+../../../common/horizon/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/keystone/check.sh b/docker/centos/binary/keystone/check.sh
index ca4844784..fe8e7608c 100755..120000
--- a/docker/centos/binary/keystone/check.sh
+++ b/docker/centos/binary/keystone/check.sh
@@ -1,12 +1 @@
-#!/bin/bash
-
-RES=0
-
-. /openrc
-if ! keystone token-get > /dev/null; then
- echo "ERROR: keystone token-get failed" >&2
- RES=1
-fi
-
-exit $RES
-
+../../../common/keystone/check.sh \ No newline at end of file
diff --git a/docker/centos/binary/keystone/start.sh b/docker/centos/binary/keystone/start.sh
index 6dfebe060..ae34844ea 100755..120000
--- a/docker/centos/binary/keystone/start.sh
+++ b/docker/centos/binary/keystone/start.sh
@@ -1,162 +1 @@
-#!/bin/bash
-
-set -e
-
-# Run Kolla common script
-echo "Running the kolla-common script"
-. /opt/kolla/kolla-common.sh
-
-# Credentials, token, etc..
-: ${ADMIN_USER:=admin}
-: ${ADMIN_USER_PASSWORD:=password}
-: ${ADMIN_TENANT_NAME:=admin}
-: ${KEYSTONE_USER:=keystone}
-: ${KEYSTONE_ADMIN_PASSWORD:=password}
-: ${KEYSTONE_ADMIN_TOKEN:=changeme}
-# DB Settings
-: ${INIT_DB:=true}
-: ${KEYSTONE_DB_NAME:=keystone}
-: ${KEYSTONE_DB_USER:=keystone}
-: ${DB_ROOT_PASSWORD:=password}
-: ${MARIADB_SERVICE_HOST:=$PUBLIC_IP}
-: ${KEYSTONE_DB_PASSWORD:=password}
-# Service Addresses/Ports/Version
-: ${KEYSTONE_PUBLIC_SERVICE_HOST:=$PUBLIC_IP}
-: ${KEYSTONE_ADMIN_SERVICE_HOST:=$PUBLIC_IP}
-: ${KEYSTONE_PUBLIC_SERVICE_PORT:=5000}
-: ${KEYSTONE_ADMIN_SERVICE_PORT:=35357}
-: ${KEYSTONE_API_VERSION:=2.0}
-# Logging
-: ${LOG_FILE:=/var/log/keystone/keystone.log}
-: ${VERBOSE_LOGGING:=true}
-: ${DEBUG_LOGGING:=false}
-: ${USE_STDERR:=false}
-# Token provider, driver, etc..
-: ${TOKEN_PROVIDER:=uuid}
-: ${TOKEN_DRIVER:=sql}
-
-## Check DB connectivity and required variables
-echo "Checking connectivity to the DB"
-fail_unless_db
-echo "Checking for required variables"
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_DB_PASSWORD \
- KEYSTONE_ADMIN_PASSWORD ADMIN_TENANT_NAME \
- KEYSTONE_PUBLIC_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_HOST \
- PUBLIC_IP
-dump_vars
-
-# Setup the Keystone DB
-echo "Setting up Keystone DB"
-mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${KEYSTONE_DB_NAME};
-GRANT ALL PRIVILEGES ON ${KEYSTONE_DB_NAME}.* TO
- '${KEYSTONE_DB_USER}'@'%' IDENTIFIED BY '${KEYSTONE_DB_PASSWORD}'
-EOF
-
-# File path and name used by crudini tool
-cfg=/etc/keystone/keystone.conf
-
-# Token Configuration
-echo "Configuring keystone.conf"
-crudini --set $cfg \
- DEFAULT \
- admin_token \
- "${KEYSTONE_ADMIN_TOKEN}"
-
-# Database Configuration
-crudini --set $cfg \
- database \
- connection \
- "mysql://${KEYSTONE_DB_USER}:${KEYSTONE_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${KEYSTONE_DB_NAME}"
-
-# Logging
-crudini --del $cfg \
- DEFAULT \
- log_dir
-crudini --set $cfg \
- DEFAULT \
- log_file \
- ${LOG_FILE}
-crudini --set $cfg \
- DEFAULT \
- verbose \
- ${VERBOSE_LOGGING}
-crudini --set $cfg \
- DEFAULT \
- debug \
- ${DEBUG_LOGGING}
-crudini --set $cfg \
- DEFAULT \
- use_stderr \
- ${USE_STDERR}
-
-# Token Management
-crudini --set $cfg \
- token \
- provider \
- keystone.token.providers."${TOKEN_PROVIDER}".Provider
-crudini --set $cfg \
- token \
- driver \
- keystone.token.persistence.backends."${TOKEN_DRIVER}".Token
-crudini --set $cfg \
- revoke \
- driver \
- keystone.contrib.revoke.backends."${TOKEN_DRIVER}".Revoke
-
-# Setup the openrc auth file
-cat > /openrc <<EOF
-export OS_AUTH_URL=http://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v${KEYSTONE_API_VERSION}
-export OS_USERNAME=${KEYSTONE_USER}
-export OS_PASSWORD=${KEYSTONE_ADMIN_PASSWORD}
-export OS_TENANT_NAME=${ADMIN_TENANT_NAME}
-EOF
-
-# Run PKI Setup script
-echo "Setting up PKI"
-/usr/bin/keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
-
-# Fix permissions
-chown -R keystone:keystone /var/log/keystone
-chown -R keystone:keystone /etc/keystone/ssl
-chmod -R o-rwx /etc/keystone/ssl
-
-# Initialize the Keystone DB
-echo "Initializing Keystone DB"
-if [ "${INIT_DB}" == "true" ] ; then
- su -s /bin/bash -c "keystone-manage db_sync" keystone
-fi
-
-# Start Keystone
-echo "Starting Keystone"
-/usr/bin/keystone-all &
-PID=$!
-
-# Export Keystone service environment variables
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="http://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v${KEYSTONE_API_VERSION}"
-
-# Check to make sure the service is running
-echo "Verifying Keystone is running"
-while ! curl -o /dev/null -s --fail ${SERVICE_ENDPOINT}; do
- echo "waiting for Keystone @ ${SERVICE_ENDPOINT}"
- sleep 1;
-done
-echo "keystone is active @ ${SERVICE_ENDPOINT}"
-
-# Create Keystone tenant, user, role, service and endpoints
-echo "Creating Keystone tenant, user, role, service and endpoints"
-crux user-create --update \
- -n ${ADMIN_USER} -p "${ADMIN_USER_PASSWORD}" \
- -t ${ADMIN_TENANT_NAME} -r admin
-crux user-create --update \
- -n ${KEYSTONE_USER} -p "${KEYSTONE_ADMIN_PASSWORD}" \
- -t ${ADMIN_TENANT_NAME} -r admin
-crux endpoint-create --remove-all \
- -n keystone -t identity \
- -I "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v${KEYSTONE_API_VERSION}" \
- -A "http://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v${KEYSTONE_API_VERSION}" \
- -P "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v${KEYSTONE_API_VERSION}"
-
-# Wait on all jobs to exit before proceeding (see man wait)
-wait
+../../../common/keystone/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/magnum/magnum-api/check.sh b/docker/centos/binary/magnum/magnum-api/check.sh
index ee03dc6d2..7464ba296 100755..120000
--- a/docker/centos/binary/magnum/magnum-api/check.sh
+++ b/docker/centos/binary/magnum/magnum-api/check.sh
@@ -1,16 +1 @@
-#!/bin/bash
-
-RES=0
-
-. /openrc
-if ! keystone token-get > /dev/null; then
- echo "ERROR: keystone token-get failed" >&2
- RES=1
-else
- if ! heat stack-list > /dev/null; then
- echo "ERROR: heat stack-list failed" >&2
- RES=1
- fi
-fi
-
-exit $RES
+../../../../common/magnum/magnum-api/check.sh \ No newline at end of file
diff --git a/docker/centos/binary/magnum/magnum-api/start.sh b/docker/centos/binary/magnum/magnum-api/start.sh
index 00a51b3cd..58cc9e37c 100755..120000
--- a/docker/centos/binary/magnum/magnum-api/start.sh
+++ b/docker/centos/binary/magnum/magnum-api/start.sh
@@ -1,27 +1 @@
-#!/bin/bash
-set -e
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-magnum.sh
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- MAGNUM_KEYSTONE_USER MAGNUM_KEYSTONE_PASSWORD \
- KEYSTONE_AUTH_PROTOCOL ADMIN_TENANT_NAME \
- MAGNUM_API_SERVICE_HOST KEYSTONE_ADMIN_SERVICE_PORT \
- MAGNUM_API_SERVICE_PORT
-
-fail_unless_os_service_running keystone
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-crux user-create -n ${MAGNUM_KEYSTONE_USER} \
- -p ${MAGNUM_KEYSTONE_PASSWORD} \
- -t ${ADMIN_TENANT_NAME} \
- -r admin
-
-crux endpoint-create --remove-all -n ${MAGNUM_KEYSTONE_USER} -t container \
- -I "${KEYSTONE_AUTH_PROTOCOL}://${MAGNUM_API_SERVICE_HOST}:${MAGNUM_API_SERVICE_PORT}/v1" \
- -P "${KEYSTONE_AUTH_PROTOCOL}://${MAGNUM_API_SERVICE_HOST}:${MAGNUM_API_SERVICE_PORT}/v1" \
- -A "${KEYSTONE_AUTH_PROTOCOL}://${MAGNUM_API_SERVICE_HOST}:${MAGNUM_API_SERVICE_PORT}/v1"
-
-exec /usr/bin/magnum-api
+../../../../common/magnum/magnum-api/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/magnum/magnum-base/config-magnum.sh b/docker/centos/binary/magnum/magnum-base/config-magnum.sh
index 03599d359..473c0be8e 100755..120000
--- a/docker/centos/binary/magnum/magnum-base/config-magnum.sh
+++ b/docker/centos/binary/magnum/magnum-base/config-magnum.sh
@@ -1,46 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-
-check_required_vars MAGNUM_DB_PASSWORD MAGNUM_KEYSTONE_PASSWORD \
- KEYSTONE_PUBLIC_SERVICE_HOST KEYSTONE_PUBLIC_SERVICE_PORT \
- MAGNUM_KEYSTONE_USER ADMIN_TENANT_NAME \
- MAGNUM_DB_USER MAGNUM_DB_NAME KEYSTONE_AUTH_PROTOCOL \
- KEYSTONE_PUBLIC_SERVICE_PORT RABBITMQ_SERVICE_HOST \
- VERBOSE_LOGGING DEBUG_LOGGING
-
-fail_unless_db
-dump_vars
-
-cat > /openrc <<EOF
-export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-export OS_USERNAME="${MAGNUM_KEYSTONE_USER}"
-export OS_PASSWORD="${MAGNUM_KEYSTONE_PASSWORD}"
-export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
-EOF
-
-cfg=/etc/magnum/magnum.conf
-
-crudini --set $cfg DEFAULT log_file ""
-crudini --set $cfg DEFAULT verbose "${VERBOSE_LOGGING}"
-crudini --set $cfg DEFAULT debug "${DEBUG_LOGGING}"
-crudini --set $cfg DEFAULT use_stderr true
-crudini --set $cfg DEFAULT rpc_backend magnum.openstack.common.rpc.impl_kombu
-crudini --set $cfg DEFAULT admin_user admin
-crudini --set $cfg oslo_messaging_rabbit rabbit_host ${RABBITMQ_SERVICE_HOST}
-crudini --set $cfg oslo_messaging_rabbit rabbit_userid ${RABBIT_USER}
-crudini --set $cfg oslo_messaging_rabbit rabbit_password ${RABBIT_PASSWORD}
-crudini --set $cfg database connection \
- mysql://${MAGNUM_DB_USER}:${MAGNUM_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${MAGNUM_DB_NAME}
-crudini --set $cfg keystone_authtoken auth_protocol "${KEYSTONE_AUTH_PROTOCOL}"
-crudini --set $cfg keystone_authtoken auth_host "${KEYSTONE_PUBLIC_SERVICE_HOST}"
-crudini --set $cfg keystone_authtoken auth_port "${KEYSTONE_PUBLIC_SERVICE_PORT}"
-crudini --set $cfg keystone_authtoken auth_uri \
- "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-crudini --set $cfg keystone_authtoken admin_tenant_name "${ADMIN_TENANT_NAME}"
-crudini --set $cfg keystone_authtoken admin_user "${MAGNUM_KEYSTONE_USER}"
-crudini --set $cfg keystone_authtoken admin_password \
- "${MAGNUM_KEYSTONE_PASSWORD}"
-crudini --set $cfg api host ${MAGNUM_API_SERVICE_HOST}
+../../../../common/magnum/magnum-base/config-magnum.sh \ No newline at end of file
diff --git a/docker/centos/binary/magnum/magnum-conductor/start.sh b/docker/centos/binary/magnum/magnum-conductor/start.sh
index 4cf1291a3..681863036 100755..120000
--- a/docker/centos/binary/magnum/magnum-conductor/start.sh
+++ b/docker/centos/binary/magnum/magnum-conductor/start.sh
@@ -1,17 +1 @@
-#!/bin/bash
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-magnum.sh
-
-check_required_vars MAGNUM_DB_NAME MAGNUM_DB_USER MAGNUM_DB_PASSWORD
-fail_unless_db
-
-mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${MAGNUM_DB_NAME} DEFAULT CHARACTER SET utf8;
-GRANT ALL PRIVILEGES ON ${MAGNUM_DB_NAME}.* TO
- '${MAGNUM_DB_USER}'@'%' IDENTIFIED BY '${MAGNUM_DB_PASSWORD}'
-EOF
-
-/usr/bin/magnum-db-manage upgrade
-
-exec /usr/bin/magnum-conductor
+../../../../common/magnum/magnum-conductor/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/mariadb-app/config-mysql.sh b/docker/centos/binary/mariadb-app/config-mysql.sh
index b11939b8b..17341e415 100755..120000
--- a/docker/centos/binary/mariadb-app/config-mysql.sh
+++ b/docker/centos/binary/mariadb-app/config-mysql.sh
@@ -1,24 +1 @@
-#!/bin/bash
-
-. /opt/kolla/kolla-common.sh
-
-: ${BIND_ADDRESS:=$PUBLIC_IP}
-: ${DB_ROOT_PASSWORD:=$DB_ROOT_PASSWORD}
-: ${DEFAULT_STORAGE_ENGINE:=innodb}
-: ${COLLATION_SERVER:=utf8_general_ci}
-: ${INIT_CONNECT:=SET NAMES utf8}
-: ${CHAR_SET_SERVER:=utf8}
-: ${INNODB_FILE_PER_TABLE:=true}
-: ${DATADIR:=/var/lib/mysql}
-: ${TEMP_FILE:='/tmp/mysql-first-time.sql'}
-
-server_cnf=/etc/my.cnf.d/server.cnf
-
-crudini --set $server_cnf mysqld bind-address $BIND_ADDRESS
-crudini --set $server_cnf mysqld default-storage-engine $DEFAULT_STORAGE_ENGINE
-crudini --set $server_cnf mysqld collation-server $COLLATION_SERVER
-crudini --set $server_cnf mysqld init-connect "'${INIT_CONNECT}'"
-crudini --set $server_cnf mysqld character-set-server $CHAR_SET_SERVER
-if [ "${INNODB_FILE_PER_TABLE}" == "true" ] || ["${INNODB_FILE_PER_TABLE}" == "True" ] ; then
- crudini --set $server_cnf mysqld innodb_file_per_table 1
-fi
+../../../common/mariadb-app/config-mysql.sh \ No newline at end of file
diff --git a/docker/centos/binary/mariadb-app/mysql-entrypoint.sh b/docker/centos/binary/mariadb-app/mysql-entrypoint.sh
deleted file mode 100755
index 6dece43ca..000000000
--- a/docker/centos/binary/mariadb-app/mysql-entrypoint.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-set -e
-
-# Configure MySQL settings
-. /opt/kolla/config-mysql.sh
-
-if [ -z "$(ls -A /var/lib/mysql)" -a "${1%_safe}" = 'mysqld' ]; then
- PATH=/usr/libexec:$PATH
- export PATH
-
- if [ -z "$MARIADB_ROOT_PASSWORD" ]; then
- echo >&2 'error: database is uninitialized and MARIADB_ROOT_PASSWORD not set'
- echo >&2 ' Did you forget to add -e MARIADB_ROOT_PASSWORD=... ?'
- exit 1
- fi
-
- mysql_install_db --user=mysql --datadir="$DATADIR"
-
- # These statements _must_ be on individual lines, and _must_ end with
- # semicolons (no line breaks or comments are permitted).
- # TODO proper SQL escaping on ALL the things D:
- TEMP_FILE='/tmp/mysql-first-time.sql'
- cat > "$TEMP_FILE" <<-EOSQL
-DELETE FROM mysql.user ;
-CREATE USER 'root'@'%' IDENTIFIED BY '${MARIADB_ROOT_PASSWORD}' ;
-GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
-DROP DATABASE IF EXISTS test ;
-EOSQL
-
- if [ "$MARIADB_DATABASE" ]; then
- echo "CREATE DATABASE IF NOT EXISTS $MARIADB_DATABASE ;" >> "$TEMP_FILE"
- fi
-
- if [ "$MARIADB_USER" -a "$MARIADB_PASSWORD" ]; then
- echo "CREATE USER '$MARIADB_USER'@'%' IDENTIFIED BY '$MARIADB_PASSWORD' ;" >> "$TEMP_FILE"
-
- if [ "$MARIADB_DATABASE" ]; then
- echo "GRANT ALL ON $MARIADB_DATABASE.* TO '$MARIADB_USER'@'%' ;" >> "$TEMP_FILE"
- fi
- fi
-
- echo 'FLUSH PRIVILEGES ;' >> "$TEMP_FILE"
-
- set -- "$@" --init-file="$TEMP_FILE"
-fi
-
-chown -R mysql:mysql "$DATADIR"
-
-exec "$@"
diff --git a/docker/centos/binary/neutron/neutron-agents/check-scripts/check-dhcp-agent.sh b/docker/centos/binary/neutron/neutron-agents/check-scripts/check-dhcp-agent.sh
index 7dda736ef..fcce4f251 100755..120000
--- a/docker/centos/binary/neutron/neutron-agents/check-scripts/check-dhcp-agent.sh
+++ b/docker/centos/binary/neutron/neutron-agents/check-scripts/check-dhcp-agent.sh
@@ -1,13 +1 @@
-#!/bin/bash
-
-RES=0
-
-check=$(/usr/bin/neutron agent-list | awk '/ DHCP / {print $9}')
-error="ERROR: Neutron DHCP Agent is not alive."
-
-if [[ $check != ":-)" ]]; then
- echo $error >&2
- RES=1
-fi
-
-exit $RES
+../../../../../common/neutron/neutron-agents/check-scripts/check-dhcp-agent.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/check-scripts/check-l3-agent.sh b/docker/centos/binary/neutron/neutron-agents/check-scripts/check-l3-agent.sh
index d32c1e272..3975d06b6 100755..120000
--- a/docker/centos/binary/neutron/neutron-agents/check-scripts/check-l3-agent.sh
+++ b/docker/centos/binary/neutron/neutron-agents/check-scripts/check-l3-agent.sh
@@ -1,13 +1 @@
-#!/bin/bash
-
-RES=0
-
-check=$(/usr/bin/neutron agent-list | awk '/ L3 / {print $9}')
-error="ERROR: Neutron L3 Agent is not alive."
-
-if [[ $check != ":-)" ]]; then
- echo $error >&2
- RES=1
-fi
-
-exit $RES
+../../../../../common/neutron/neutron-agents/check-scripts/check-l3-agent.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/check-scripts/check-linuxbridge-agent.sh b/docker/centos/binary/neutron/neutron-agents/check-scripts/check-linuxbridge-agent.sh
index 4485fc1ec..8f26a18fe 100755..120000
--- a/docker/centos/binary/neutron/neutron-agents/check-scripts/check-linuxbridge-agent.sh
+++ b/docker/centos/binary/neutron/neutron-agents/check-scripts/check-linuxbridge-agent.sh
@@ -1,13 +1 @@
-#!/bin/bash
-
-RES=0
-
-check=$(/usr/bin/neutron agent-list | awk '/ Linux / {print $10}')
-error="ERROR: Neutron Linux Bridge agent is not alive."
-
-if [[ $check != ":-)" ]]; then
- echo $error >&2
- RES=1
-fi
-
-exit $RES
+../../../../../common/neutron/neutron-agents/check-scripts/check-linuxbridge-agent.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/check-scripts/check-metadata-agent.sh b/docker/centos/binary/neutron/neutron-agents/check-scripts/check-metadata-agent.sh
index fd1c6812b..aabb2a9ee 100755..120000
--- a/docker/centos/binary/neutron/neutron-agents/check-scripts/check-metadata-agent.sh
+++ b/docker/centos/binary/neutron/neutron-agents/check-scripts/check-metadata-agent.sh
@@ -1,13 +1 @@
-#!/bin/bash
-
-RES=0
-
-check=$(/usr/bin/neutron agent-list | awk '/ Metadata / {print $9}')
-error="ERROR: Neutron Metadata Agent is not alive."
-
-if [[ $check != ":-)" ]]; then
- echo $error >&2
- RES=1
-fi
-
-exit $RES
+../../../../../common/neutron/neutron-agents/check-scripts/check-metadata-agent.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh b/docker/centos/binary/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh
index db71678b1..8ef8dec06 100755..120000
--- a/docker/centos/binary/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh
+++ b/docker/centos/binary/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh
@@ -1,88 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/config-neutron.sh
-. /opt/kolla/config-sudoers.sh
-
-: ${DHCP_DRIVER:=neutron.agent.linux.dhcp.Dnsmasq}
-: ${USE_NAMESPACES:=true}
-: ${DELETE_NAMESPACES:=true}
-: ${DNSMASQ_CONFIG_FILE:=/etc/neutron/dnsmasq/dnsmasq-neutron.conf}
-: ${ROOT_HELPER:=sudo neutron-rootwrap /etc/neutron/rootwrap.conf}
-
-mkdir -p $(dirname $DNSMASQ_CONFIG_FILE)
-
-check_required_vars VERBOSE_LOGGING DEBUG_LOGGING MECHANISM_DRIVERS \
- DHCP_DRIVER USE_NAMESPACES DELETE_NAMESPACES \
- NEUTRON_LOG_DIR DNSMASQ_CONFIG_FILE \
-
-cfg=/etc/neutron/dhcp_agent.ini
-neutron_conf=/etc/neutron/neutron.conf
-
-# Workaround bug in dhclient in cirros images which does not correctly
-# handle setting checksums of packets when using hardware with checksum
-# offloading. See:
-# https://www.rdoproject.org/forum/discussion/567/packstack-allinone-grizzly-cirros-image-cannot-get-a-dhcp-address-when-a-centos-image-can/p1
-
-/usr/sbin/iptables -A POSTROUTING -t mangle -p udp --dport bootpc \
- -j CHECKSUM --checksum-fill
-
-if [[ ${MECHANISM_DRIVERS} =~ linuxbridge ]]; then
- interface_driver="neutron.agent.linux.interface.BridgeInterfaceDriver"
-elif [[ ${MECHANISM_DRIVERS} == "openvswitch" ]]; then
- interface_driver="neutron.agent.linux.interface.OVSInterfaceDriver"
-fi
-
-# Logging
-crudini --set $neutron_conf \
- DEFAULT \
- log_file \
- "${NEUTRON_DHCP_AGENT_LOG_FILE}"
-
-# Configure dhcp_agent.ini
-crudini --set $cfg \
- DEFAULT \
- verbose \
- "${VERBOSE_LOGGING}"
-crudini --set $cfg \
- DEFAULT \
- debug \
- "${DEBUG_LOGGING}"
-crudini --set $cfg \
- DEFAULT \
- interface_driver \
- "$interface_driver"
-crudini --set $cfg \
- DEFAULT \
- dhcp_driver \
- "${DHCP_DRIVER}"
-crudini --set $cfg \
- DEFAULT \
- use_namespaces \
- "${USE_NAMESPACES}"
-crudini --set $cfg \
- DEFAULT \
- delete_namespaces \
- "${DELETE_NAMESPACES}"
-crudini --set $cfg \
- DEFAULT \
- dnsmasq_config_file \
- "${DNSMASQ_CONFIG_FILE}"
-crudini --set $cfg \
- DEFAULT \
- root_helper \
- "${ROOT_HELPER}"
-
-cat > ${DNSMASQ_CONFIG_FILE} <<EOF
-dhcp-option-force=26,1450
-log-facility=${NEUTRON_LOG_DIR}/neutron-dnsmasq.log
-EOF
-
-# Remove any existing qdhcp namespaces
-ip netns list | grep qdhcp | while read -r line ; do
- ip netns delete $line
-done
-
-# Start DHCP Agent
-exec /usr/bin/neutron-dhcp-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/dhcp_agent.ini --config-dir /etc/neutron
+../../../../../common/neutron/neutron-agents/config-scripts/config-dhcp-agent.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/config-scripts/config-l3-agent.sh b/docker/centos/binary/neutron/neutron-agents/config-scripts/config-l3-agent.sh
index 761d07685..d92fe01ec 100755..120000
--- a/docker/centos/binary/neutron/neutron-agents/config-scripts/config-l3-agent.sh
+++ b/docker/centos/binary/neutron/neutron-agents/config-scripts/config-l3-agent.sh
@@ -1,85 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/config-neutron.sh
-. /opt/kolla/config-sudoers.sh
-
-: ${USE_NAMESPACES:=true}
-
-check_required_vars VERBOSE_LOGGING DEBUG_LOGGING
-
-cfg=/etc/neutron/l3_agent.ini
-neutron_conf=/etc/neutron/neutron.conf
-
-# Logging
-crudini --set $neutron_conf \
- DEFAULT \
- log_file \
- "${NEUTRON_L3_AGENT_LOG_FILE}"
-
-# Configure l3_agent.ini
-crudini --set $cfg \
- DEFAULT \
- verbose \
- "${VERBOSE_LOGGING}"
-crudini --set $cfg \
- DEFAULT \
- debug \
- "${DEBUG_LOGGING}"
-if [[ "${MECHANISM_DRIVERS}" =~ linuxbridge ]] ; then
- crudini --set $cfg \
- DEFAULT \
- interface_driver \
- "neutron.agent.linux.interface.BridgeInterfaceDriver"
- crudini --set $cfg \
- DEFAULT \
- gateway_external_network_id \
- ""
- crudini --set $cfg \
- DEFAULT \
- external_network_bridge \
- ""
-elif [[ "${MECHANISM_DRIVERS}" =~ .*openvswitch* ]] ; then
- crudini --set $cfg \
- DEFAULT \
- interface_driver \
- "neutron.agent.linux.interface.OVSInterfaceDriver"
- crudini --set $cfg \
- DEFAULT \
- gateway_external_network_id \
- "${NEUTRON_FLAT_NETWORK_BRIDGE}"
- crudini --set $cfg \
- DEFAULT \
- external_network_bridge \
- "${NEUTRON_FLAT_NETWORK_BRIDGE}"
-fi
-
-crudini --set $cfg \
- DEFAULT \
- use_namespaces \
- "${USE_NAMESPACES}"
-
-if [ "${USE_NAMESPACES}" == "false" ] ; then
- source /openrc
- # Create router if it does not exist
- /usr/bin/neutron router-list | grep admin-router || /usr/bin/neutron router-create admin-router
- # Set router-id
- crudini --set $cfg \
- DEFAULT \
- router_id \
- "$(/usr/bin/neutron router-list | awk '/ admin-router / {print $2}')"
-elif [ "${USE_NAMESPACES}" == "true" ] ; then
- crudini --set $cfg \
- DEFAULT \
- router_delete_namespaces \
- "true"
-fi
-
-# Remove any existing qrouter namespaces
-ip netns list | grep qrouter | while read -r line ; do
- ip netns delete $line
-done
-
-# Start L3 Agent
-exec /usr/bin/neutron-l3-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/l3_agent.ini --config-file /etc/neutron/fwaas_driver.ini --config-dir /etc/neutron
+../../../../../common/neutron/neutron-agents/config-scripts/config-l3-agent.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/config-scripts/config-linuxbridge-agent.sh b/docker/centos/binary/neutron/neutron-agents/config-scripts/config-linuxbridge-agent.sh
index bd8f90194..0736ca3ca 100755..120000
--- a/docker/centos/binary/neutron/neutron-agents/config-scripts/config-linuxbridge-agent.sh
+++ b/docker/centos/binary/neutron/neutron-agents/config-scripts/config-linuxbridge-agent.sh
@@ -1,29 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/config-neutron.sh
-. /opt/kolla/config-sudoers.sh
-
-: ${NEUTRON_FLAT_NETWORK_NAME:=physnet1}
-: ${NEUTRON_FLAT_NETWORK_INTERFACE:=eth1}
-
-check_required_vars PUBLIC_IP NEUTRON_FLAT_NETWORK_NAME \
- NEUTRON_FLAT_NETWORK_INTERFACE
-
-cfg=/etc/neutron/plugins/ml2/ml2_conf.ini
-
-# Configure ml2_conf.ini
-if [[ ${TYPE_DRIVERS} =~ vxlan ]]; then
- crudini --set $cfg \
- vxlan \
- local_ip \
- "${PUBLIC_IP}"
-fi
-
-crudini --set $cfg \
- linux_bridge \
- physical_interface_mappings \
- "${NEUTRON_FLAT_NETWORK_NAME}:${NEUTRON_FLAT_NETWORK_INTERFACE}"
-
-exec /usr/bin/neutron-linuxbridge-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-dir /etc/neutron
+../../../../../common/neutron/neutron-agents/config-scripts/config-linuxbridge-agent.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/config-scripts/config-metadata-agent.sh b/docker/centos/binary/neutron/neutron-agents/config-scripts/config-metadata-agent.sh
index d1eef341c..7e9c1b299 100755..120000
--- a/docker/centos/binary/neutron/neutron-agents/config-scripts/config-metadata-agent.sh
+++ b/docker/centos/binary/neutron/neutron-agents/config-scripts/config-metadata-agent.sh
@@ -1,74 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/config-neutron.sh
-. /opt/kolla/config-sudoers.sh
-
-: ${KEYSTONE_REGION:=RegionOne}
-: ${ENDPOINT_TYPE:=adminURL}
-: ${NEUTRON_SHARED_SECRET:=sharedsecret}
-
-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_METADATA_API_SERVICE_HOST \
- NOVA_METADATA_API_SERVICE_PORT
-
-cfg=/etc/neutron/metadata_agent.ini
-neutron_conf=/etc/neutron/neutron.conf
-
-# Logging
-crudini --set $neutron_conf \
- DEFAULT \
- log_file \
- "${NEUTRON_METADATA_AGENT_LOG_FILE}"
-
-# Configure metadata_agent.ini
-crudini --set $cfg \
- DEFAULT \
- verbose \
- "${VERBOSE_LOGGING}"
-crudini --set $cfg \
- DEFAULT \
- debug \
- "${DEBUG_LOGGING}"
-crudini --set $cfg \
- DEFAULT \
- auth_region \
- "${KEYSTONE_REGION}"
-crudini --set $cfg \
- DEFAULT \
- endpoint_type \
- "${ENDPOINT_TYPE}"
-crudini --set $cfg \
- DEFAULT \
- auth_url \
- "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-crudini --set $cfg \
- DEFAULT \
- admin_tenant_name \
- "${ADMIN_TENANT_NAME}"
-crudini --set $cfg \
- DEFAULT \
- admin_user \
- "${NEUTRON_KEYSTONE_USER}"
-crudini --set $cfg \
- DEFAULT \
- admin_password \
- "${NEUTRON_KEYSTONE_PASSWORD}"
-crudini --set $cfg \
- DEFAULT \
- nova_metadata_ip \
- "${NOVA_METADATA_API_SERVICE_HOST}"
-crudini --set $cfg \
- DEFAULT \
- nova_metadata_port \
- "${NOVA_METADATA_API_SERVICE_PORT}"
-crudini --set $cfg \
- DEFAULT \
- metadata_proxy_shared_secret \
- "${NEUTRON_SHARED_SECRET}"
-
-# Start Metadata Agent
-exec /usr/bin/neutron-metadata-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/metadata_agent.ini --config-dir /etc/neutron
+../../../../../common/neutron/neutron-agents/config-scripts/config-metadata-agent.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/config-scripts/config-sudoers.sh b/docker/centos/binary/neutron/neutron-agents/config-scripts/config-sudoers.sh
index 0e02226db..3ecc0c823 100755..120000
--- a/docker/centos/binary/neutron/neutron-agents/config-scripts/config-sudoers.sh
+++ b/docker/centos/binary/neutron/neutron-agents/config-scripts/config-sudoers.sh
@@ -1,12 +1 @@
-#!/bin/bash
-
-# Neutron uses rootwrap which requires a tty for sudo.
-# Since the container is running in daemon mode, a tty
-# is not present and requiretty must be commented out.
-if [ ! -f /var/run/sudo-modified ]; then
- chmod 0640 /etc/sudoers
- sed -i '/Defaults requiretty/s/^/#/' /etc/sudoers
- chmod 0440 /etc/sudoers
-fi
-
-touch /var/run/sudo-modified
+../../../../../common/neutron/neutron-agents/config-scripts/config-sudoers.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/fwaas_driver.ini b/docker/centos/binary/neutron/neutron-agents/fwaas_driver.ini
index 41f761abf..84e47b1c2 100644..120000
--- a/docker/centos/binary/neutron/neutron-agents/fwaas_driver.ini
+++ b/docker/centos/binary/neutron/neutron-agents/fwaas_driver.ini
@@ -1,3 +1 @@
-[fwaas]
-#driver = neutron.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver
-#enabled = True
+../../../../common/neutron/neutron-agents/fwaas_driver.ini \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/supervisord.conf b/docker/centos/binary/neutron/neutron-agents/supervisord.conf
index 7455cb3d7..a7f24cb77 100644..120000
--- a/docker/centos/binary/neutron/neutron-agents/supervisord.conf
+++ b/docker/centos/binary/neutron/neutron-agents/supervisord.conf
@@ -1,53 +1 @@
-[unix_http_server]
-file = /var/run/supervisor.sock
-
-[inet_http_server]
-port = 127.0.0.1:9001
-
-[supervisord]
-nodaemon=true
-logfile = /var/log/supervisor/supervisord.log
-logfile_maxbytes = 200KB
-logfile_backups = 1
-pidfile = /var/run/supervisord.pid
-childlogdir = /var/log/supervisor
-
-[rpcinterface:supervisor]
-supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
-[supervisorctl]
-serverurl = unix:///var/run/supervisor.sock
-
-[program:neutron-linuxbridge-agent]
-command=/opt/kolla/neutron/config-linuxbridge-agent.sh
-priority=30
-startsec=10
-stderr_events_enabled=true
-stdout_events_enabled=true
-
-[program:neutron-dhcp-agent]
-command=/opt/kolla/neutron/config-dhcp-agent.sh
-priority=40
-startsec=10
-stderr_events_enabled=true
-stdout_events_enabled=true
-
-[program:neutron-metadata-agent]
-command=/opt/kolla/neutron/config-metadata-agent.sh
-priority=40
-startsec=10
-stderr_events_enabled=true
-stdout_events_enabled=true
-
-[program:neutron-l3-agent]
-command=/opt/kolla/neutron/config-l3-agent.sh
-priority=40
-startsec=10
-stderr_events_enabled=true
-stdout_events_enabled=true
-
-[eventlistener:stdout]
-command = supervisor_stdout
-buffer_size = 100
-events = PROCESS_LOG
-result_handler = supervisor_stdout:event_handler
+../../../../common/neutron/neutron-agents/supervisord.conf \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-base/config-neutron.sh b/docker/centos/binary/neutron/neutron-base/config-neutron.sh
index 015565105..0de598123 100644..120000
--- a/docker/centos/binary/neutron/neutron-base/config-neutron.sh
+++ b/docker/centos/binary/neutron/neutron-base/config-neutron.sh
@@ -1,210 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-
-# Database
-: ${NEUTRON_DB_NAME:=neutron}
-: ${NEUTRON_DB_USER:=neutron}
-: ${NEUTRON_DB_PASSWORD:=password}
-# Keystone
-: ${ADMIN_TENANT_NAME:=admin}
-: ${NEUTRON_KEYSTONE_USER:=neutron}
-: ${NEUTRON_KEYSTONE_PASSWORD:=password}
-: ${KEYSTONE_AUTH_PROTOCOL:=http}
-: ${KEYSTONE_ADMIN_SERVICE_HOST:=127.0.0.1}
-: ${KEYSTONE_PUBLIC_SERVICE_HOST:=127.0.0.1}
-: ${KEYSTONE_ADMIN_SERVICE_PORT:=35357}
-: ${KEYSTONE_PUBLIC_SERVICE_PORT:=5000}
-: ${KEYSTONE_REGION:=RegionOne}
-# RabbitMQ
-: ${RABBIT_HOST:=$RABBITMQ_SERVICE_HOST}
-: ${RABBIT_USER:=guest}
-: ${RABBIT_PASSWORD:=guest}
-# Logging
-: ${VERBOSE_LOGGING:=true}
-: ${DEBUG_LOGGING:=false}
-# Networking
-: ${NEUTRON_FLAT_NETWORK_NAME:=physnet1}
-# Paste configuration file
-: ${API_PASTE_CONFIG:=/usr/share/neutron/api-paste.ini}
-
-check_required_vars NEUTRON_KEYSTONE_PASSWORD NEUTRON_API_PASTE_CONFIG \
- KEYSTONE_PUBLIC_SERVICE_HOST RABBITMQ_SERVICE_HOST
-
-core_cfg=/etc/neutron/neutron.conf
-ml2_cfg=/etc/neutron/plugins/ml2/ml2_conf.ini
-
-# Logging
-crudini --set $core_cfg \
- DEFAULT \
- log_dir \
- "${NEUTRON_LOG_DIR}"
-crudini --set $core_cfg \
- DEFAULT \
- verbose \
- "${VERBOSE_LOGGING}"
-crudini --set $core_cfg \
- DEFAULT \
- debug \
- "${DEBUG_LOGGING}"
-
-# Paste config
-crudini --set $core_cfg \
- DEFAULT \
- api_paste_config \
- "${NEUTRON_API_PASTE_CONFIG}"
-
-# Rabbit
-crudini --set $core_cfg \
- DEFAULT \
- rabbit_host \
- "${RABBIT_HOST}"
-crudini --set $core_cfg \
- DEFAULT \
- rabbit_userid \
- "${RABBIT_USER}"
-crudini --set $core_cfg \
- DEFAULT \
- rabbit_password \
- "${RABBIT_PASSWORD}"
-
-# Locking
-crudini --set $core_cfg \
- DEFAULT \
- lock_path \
- "/var/lock/neutron"
-
-# Keystone
-crudini --set $core_cfg \
- DEFAULT \
- auth_strategy \
- "keystone"
-crudini --set $core_cfg \
- keystone_authtoken \
- auth_uri \
- "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-crudini --set $core_cfg \
- keystone_authtoken \
- identity_uri \
- "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}"
-crudini --set $core_cfg \
- keystone_authtoken \
- admin_tenant_name \
- "${ADMIN_TENANT_NAME}"
-crudini --set $core_cfg \
- keystone_authtoken \
- admin_user \
- "${NEUTRON_KEYSTONE_USER}"
-crudini --set $core_cfg \
- keystone_authtoken \
- admin_password \
- "${NEUTRON_KEYSTONE_PASSWORD}"
-
-# Rootwrap
-crudini --set $core_cfg \
- agent \
- root_helper \
- "sudo neutron-rootwrap /etc/neutron/rootwrap.conf"
-
-# neutron.conf ml2 configuration
-crudini --set $core_cfg \
- DEFAULT \
- core_plugin \
- "neutron.plugins.ml2.plugin.Ml2Plugin"
-crudini --set $core_cfg \
- DEFAULT \
- service_plugins \
- "neutron.services.l3_router.l3_router_plugin.L3RouterPlugin"
-crudini --set $core_cfg \
- DEFAULT \
- allow_overlapping_ips \
- "True"
-
-# Configure ml2_conf.ini
-crudini --set $ml2_cfg \
- ml2 \
- type_drivers \
- "${TYPE_DRIVERS}"
-crudini --set $ml2_cfg \
- ml2 \
- tenant_network_types \
- "${TENANT_NETWORK_TYPES}"
-crudini --set $ml2_cfg \
- ml2 \
- mechanism_drivers \
- "${MECHANISM_DRIVERS}"
-
-if [[ ${TYPE_DRIVERS} =~ .*flat.* ]]; then
- crudini --set $ml2_cfg \
- ml2_type_flat \
- flat_networks \
- ${NEUTRON_FLAT_NETWORK_NAME}
-fi
-
-if [[ ${TYPE_DRIVERS} =~ .*vxlan.* ]]; then
- crudini --set $ml2_cfg \
- ml2_type_vxlan \
- vxlan_group \
- ""
- crudini --set $ml2_cfg \
- ml2_type_vxlan \
- vni_ranges \
- "1:1000"
- crudini --set $ml2_cfg \
- vxlan \
- enable_vxlan \
- "True"
- crudini --set $ml2_cfg \
- vxlan \
- vxlan_group \
- ""
- crudini --set $ml2_cfg \
- vxlan \
- l2_population \
- "True"
- crudini --set $ml2_cfg \
- agent \
- tunnel_types \
- "vxlan"
- crudini --set $ml2_cfg \
- agent \
- vxlan_udp_port \
- "4789"
- crudini --set $core_cfg \
- DEFAULT \
- network_device_mtu \
- "1450"
-fi
-
-crudini --set $ml2_cfg \
- l2pop \
- agent_boot_time \
- "180"
-crudini --set $ml2_cfg \
- securitygroup \
- enable_security_group \
- "True"
-crudini --set $ml2_cfg \
- securitygroup \
- enable_ipset \
- "True"
-
-if [[ ${MECHANISM_DRIVERS} =~ linuxbridge ]]; then
- firewall_driver="neutron.agent.linux.iptables_firewall.IptablesFirewallDriver"
-elif [[ ${MECHANISM_DRIVERS} == "openvswitch" ]]; then
- firewall_driver="neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver"
-fi
-
-crudini --set $ml2_cfg \
- securitygroup \
- firewall_driver \
- "$firewall_driver"
-
-cat > /openrc <<EOF
-export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/v2.0"
-export OS_USERNAME="${NEUTRON_KEYSTONE_USER}"
-export OS_PASSWORD="${NEUTRON_KEYSTONE_PASSWORD}"
-export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
-EOF
+../../../../common/neutron/neutron-base/config-neutron.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-server/check.sh b/docker/centos/binary/neutron/neutron-server/check.sh
index 4e9aa623c..001936616 100755..120000
--- a/docker/centos/binary/neutron/neutron-server/check.sh
+++ b/docker/centos/binary/neutron/neutron-server/check.sh
@@ -1,17 +1 @@
-#!/bin/bash
-
-RES=0
-
-. /openrc
-if ! keystone token-get > /dev/null; then
- echo "ERROR: keystone token-get failed" >&2
- RES=1
-else
- if ! neutron ext-list > /dev/null; then
- echo "ERROR: neutron ext-list failed" >&2
- RES=1
- fi
-fi
-
-exit $RES
-
+../../../../common/neutron/neutron-server/check.sh \ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-server/start.sh b/docker/centos/binary/neutron/neutron-server/start.sh
index fb971083f..a11ea7703 100755..120000
--- a/docker/centos/binary/neutron/neutron-server/start.sh
+++ b/docker/centos/binary/neutron/neutron-server/start.sh
@@ -1,98 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/config-neutron.sh
-
-: ${NEUTRON_FLAT_NETWORK_NAME:=physnet1}
-: ${NEUTRON_FLAT_NETWORK_INTERFACE:=eth1}
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- KEYSTONE_AUTH_PROTOCOL NOVA_API_SERVICE_HOST \
- NOVA_KEYSTONE_USER NOVA_KEYSTONE_PASSWORD \
- NEUTRON_DB_NAME NEUTRON_DB_USER NEUTRON_DB_PASSWORD \
- NEUTRON_KEYSTONE_USER NEUTRON_KEYSTONE_PASSWORD \
- ADMIN_TENANT_NAME NEUTRON_SERVER_SERVICE_HOST \
- PUBLIC_IP NEUTRON_DB_PASSWORD
-fail_unless_os_service_running keystone
-fail_unless_db
-
-mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${NEUTRON_DB_NAME} DEFAULT CHARACTER SET utf8;
-GRANT ALL PRIVILEGES ON ${NEUTRON_DB_NAME}.* TO
- '${NEUTRON_DB_USER}'@'%' IDENTIFIED BY '${NEUTRON_DB_PASSWORD}'
-
-EOF
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-
-# Configure Keystone Service Catalog
-crux user-create -n "${NEUTRON_KEYSTONE_USER}" \
- -p "${NEUTRON_KEYSTONE_PASSWORD}" \
- -t "${ADMIN_TENANT_NAME}" \
- -r admin
-
-crux endpoint-create -n neutron -t network \
- -I "${KEYSTONE_AUTH_PROTOCOL}://${NEUTRON_SERVER_SERVICE_HOST}:${NEUTRON_SERVER_SERVICE_PORT}" \
- -P "${KEYSTONE_AUTH_PROTOCOL}://${NEUTRON_SERVER_SERVICE_HOST}:${NEUTRON_SERVER_SERVICE_PORT}" \
- -A "${KEYSTONE_AUTH_PROTOCOL}://${NEUTRON_SERVER_SERVICE_HOST}:${NEUTRON_SERVER_SERVICE_PORT}"
-
-core_cfg=/etc/neutron/neutron.conf
-ml2_cfg=/etc/neutron/plugins/ml2/ml2_conf.ini
-
-# Logging
-crudini --set /etc/neutron/neutron.conf \
- DEFAULT \
- log_file \
- "${NEUTRON_SERVER_LOG_FILE}"
-
-# Database
-crudini --set $core_cfg \
- database \
- connection \
- "mysql://${NEUTRON_DB_USER}:${NEUTRON_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${NEUTRON_DB_NAME}"
-# Nova
-crudini --set $core_cfg \
- DEFAULT \
- notify_nova_on_port_status_changes \
- "True"
-crudini --set $core_cfg \
- DEFAULT \
- notify_nova_on_port_data_changes \
- "True"
-crudini --set $core_cfg \
- DEFAULT \
- nova_url \
- "http://${NOVA_API_SERVICE_HOST}:${NOVA_API_SERVICE_PORT}/v2"
-crudini --set $core_cfg \
- DEFAULT \
- nova_admin_auth_url \
- "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0"
-crudini --set $core_cfg \
- DEFAULT \
- nova_region_name \
- "${KEYSTONE_REGION}"
-crudini --set $core_cfg \
- DEFAULT \
- nova_admin_username \
- "${NOVA_KEYSTONE_USER}"
-crudini --set $core_cfg \
- DEFAULT \
- nova_admin_tenant_id \
- "$(keystone tenant-list | grep $ADMIN_TENANT_NAME | awk '{print $2;}')"
-crudini --set $core_cfg \
- DEFAULT \
- nova_admin_password \
- "${NOVA_KEYSTONE_PASSWORD}"
-
-if [[ ${MECHANISM_DRIVERS} =~ linuxbridge ]]; then
- crudini --set $ml2_cfg \
- linux_bridge \
- physical_interface_mappings \
- "${NEUTRON_FLAT_NETWORK_NAME}:${NEUTRON_FLAT_NETWORK_INTERFACE}"
-fi
-
-su -s /bin/bash -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
-
-exec /usr/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini
+../../../../common/neutron/neutron-server/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-base/config-nova.sh b/docker/centos/binary/nova-base/config-nova.sh
index 8789a14a5..32efe6056 100755..120000
--- a/docker/centos/binary/nova-base/config-nova.sh
+++ b/docker/centos/binary/nova-base/config-nova.sh
@@ -1,137 +1 @@
-#!/bin/bash
-
-. /opt/kolla/kolla-common.sh
-
-: ${NOVA_DB_USER:=nova}
-: ${NOVA_DB_NAME:=nova}
-: ${NOVA_KEYSTONE_USER:=admin}
-: ${NOVA_KEYSTONE_PASSWORD:=kolla}
-: ${ADMIN_TENANT_NAME:=admin}
-: ${RABBIT_USERID:=guest}
-: ${RABBIT_PASSWORD:=guest}
-: ${NETWORK_MANAGER:=nova}
-: ${FLAT_NETWORK:=eth1}
-: ${PUBLIC_NETWORK:=eth0}
-: ${ENABLED_APIS:=ec2,osapi_compute,metadata}
-: ${METADATA_HOST:=$PUBLIC_IP}
-: ${NEUTRON_SHARED_SECRET:=sharedsecret}
-
-check_required_vars KEYSTONE_ADMIN_TOKEN NOVA_DB_PASSWORD \
- RABBITMQ_SERVICE_HOST GLANCE_API_SERVICE_HOST \
- KEYSTONE_PUBLIC_SERVICE_HOST PUBLIC_IP \
- PUBLIC_INTERFACE FLAT_INTERFACE DEBUG_LOGGING \
- VERBOSE_LOGGING
-
-cfg=/etc/nova/nova.conf
-
-crudini --set $cfg DEFAULT amqp_durable_queues False
-crudini --set $cfg DEFAULT rabbit_host ${RABBITMQ_SERVICE_HOST}
-crudini --set $cfg DEFAULT rabbit_port 5672
-crudini --set $cfg DEFAULT rabbit_hosts ${RABBITMQ_SERVICE_HOST}:5672
-crudini --set $cfg DEFAULT rabbit_use_ssl False
-crudini --set $cfg DEFAULT rabbit_userid ${RABBIT_USERID}
-crudini --set $cfg DEFAULT rabbit_password "${RABBIT_PASSWORD}"
-crudini --set $cfg DEFAULT rabbit_virtual_host /
-crudini --set $cfg DEFAULT rabbit_ha_queues False
-crudini --set $cfg DEFAULT rpc_backend nova.openstack.common.rpc.impl_kombu
-crudini --set $cfg DEFAULT enabled_apis ${ENABLED_APIS}
-crudini --set $cfg DEFAULT ec2_listen 0.0.0.0
-crudini --set $cfg DEFAULT osapi_compute_listen 0.0.0.0
-crudini --set $cfg DEFAULT osapi_compute_workers 8
-crudini --set $cfg DEFAULT metadata_host ${METADATA_HOST}
-crudini --set $cfg DEFAULT metadata_listen 0.0.0.0
-crudini --set $cfg DEFAULT metadata_workers 8
-crudini --set $cfg DEFAULT service_down_time 60
-crudini --set $cfg DEFAULT rootwrap_config /etc/nova/rootwrap.conf
-crudini --set $cfg DEFAULT auth_strategy keystone
-crudini --set $cfg DEFAULT use_forwarded_for False
-crudini --set $cfg DEFAULT glance_api_servers ${GLANCE_API_SERVICE_HOST}:9292
-crudini --set $cfg DEFAULT cpu_allocation_ratio 16.0
-crudini --set $cfg DEFAULT ram_allocation_ratio 1.5
-crudini --set $cfg DEFAULT scheduler_default_filters RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,CoreFilter
-crudini --set $cfg DEFAULT compute_driver nova.virt.libvirt.LibvirtDriver
-crudini --set $cfg DEFAULT vif_plugging_is_fatal True
-crudini --set $cfg DEFAULT vif_plugging_timeout 300
-crudini --set $cfg DEFAULT volume_api_class nova.volume.cinder.API
-crudini --set $cfg DEFAULT image_service nova.image.glance.GlanceImageService
-crudini --set $cfg DEFAULT osapi_volume_listen 0.0.0.0
-crudini --set $cfg DEFAULT instances_path /var/lib/nova/instances
-crudini --set $cfg DEFAULT lock_path /var/lib/nova/lock
-
-# This is not created by openstack-nova packaging
-mkdir -p /var/lib/nova/lock
-
-# configure logging
-crudini --set $cfg DEFAULT log_dir "${NOVA_LOG_DIR}"
-crudini --set $cfg DEFAULT debug "${DEBUG_LOGGING}"
-crudini --set $cfg DEFAULT verbose "${VERBOSE_LOGGING}"
-
-crudini --set $cfg DEFAULT admin_token "${KEYSTONE_ADMIN_TOKEN}"
-
-crudini --set $cfg conductor workers 8
-
-if [ "${NETWORK_MANAGER}" == "nova" ] ; then
- crudini --set $cfg DEFAULT network_manager nova.network.manager.FlatDHCPManager
- crudini --set $cfg DEFAULT firewall_driver nova.virt.libvirt.firewall.IptablesFirewallDriver
- crudini --set $cfg DEFAULT network_size 254
- crudini --set $cfg DEFAULT allow_same_net_traffic False
- crudini --set $cfg DEFAULT multi_host True
- crudini --set $cfg DEFAULT send_arp_for_ha True
- crudini --set $cfg DEFAULT share_dhcp_address True
- crudini --set $cfg DEFAULT force_dhcp_release True
- crudini --set $cfg DEFAULT flat_interface $FLAT_INTERFACE
- crudini --set $cfg DEFAULT flat_network_bridge br100
- crudini --set $cfg DEFAULT public_interface $PUBLIC_INTERFACE
-elif [ "${NETWORK_MANAGER}" == "neutron" ] ; then
- check_required_vars NEUTRON_SHARED_SECRET
- crudini --set $cfg neutron service_metadata_proxy True
- crudini --set $cfg neutron metadata_proxy_shared_secret ${NEUTRON_SHARED_SECRET}
- crudini --set $cfg DEFAULT neutron_default_tenant_id default
- crudini --set $cfg DEFAULT network_api_class nova.network.neutronv2.api.API
- crudini --set $cfg DEFAULT security_group_api neutron
- if [[ "${MECHANISM_DRIVERS}" =~ linuxbridge ]] ; then
- crudini --set $cfg DEFAULT linuxnet_interface_driver nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
- elif [[ "${MECHANISM_DRIVERS}" =~ openvswitch ]] ; then
- crudini --set $cfg DEFAULT linuxnet_interface_driver nova.network.linux_net.LinuxOVSInterfaceDriver
- fi
- crudini --set $cfg DEFAULT libvirt_vif_driver nova.virt.libvirt.vif.LibvirtGenericVIFDriver
- crudini --set $cfg DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
- crudini --set $cfg neutron url http://${NEUTRON_SERVER_SERVICE_HOST}:${NEUTRON_SERVER_SERVICE_PORT}
- crudini --set $cfg neutron auth_strategy keystone
- crudini --set $cfg neutron admin_auth_url ${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0
- crudini --set $cfg neutron admin_tenant_name ${ADMIN_TENANT_NAME}
- crudini --set $cfg neutron admin_username ${NEUTRON_KEYSTONE_USER}
- crudini --set $cfg neutron admin_password ${NEUTRON_KEYSTONE_PASSWORD}
-else
- echo "Incorrect NETWORK_MANAGER ${NETWORK_MANAGER}. Supported options are nova and neutron."
- exit 1
-fi
-
-# disabled pending answers to http://lists.openstack.org/pipermail/openstack/2014-October/009997.html
-#for option in auth_protocol auth_host auth_port; do
-# crudini --del $cfg \
-# keystone_authtoken \
-# $option
-#done
-
-crudini --set $cfg keystone_authtoken auth_uri "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/"
-crudini --set $cfg keystone_authtoken auth_protocol http
-crudini --set $cfg keystone_authtoken auth_host ${KEYSTONE_PUBLIC_SERVICE_HOST}
-crudini --set $cfg keystone_authtoken auth_port 5000
-
-crudini --set $cfg keystone_authtoken admin_user ${NOVA_KEYSTONE_USER}
-crudini --set $cfg keystone_authtoken admin_password "${NOVA_KEYSTONE_PASSWORD}"
-crudini --set $cfg keystone_authtoken admin_tenant_name ${ADMIN_TENANT_NAME}
-
-cat > /openrc <<EOF
-export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
-export OS_USERNAME="${NOVA_KEYSTONE_USER}"
-export OS_PASSWORD="${NOVA_KEYSTONE_PASSWORD}"
-export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
-EOF
-
-# Configure database connection
-crudini --set $cfg \
- database \
- connection \
- "mysql://${NOVA_DB_USER}:${NOVA_DB_PASSWORD}@${MARIADB_SERVICE_HOST}/${NOVA_DB_NAME}"
+../../../common/nova-base/config-nova.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-compute/nova-compute/config-nova-compute.sh b/docker/centos/binary/nova-compute/nova-compute/config-nova-compute.sh
index 9a2c12572..0f3c1216c 100755..120000
--- a/docker/centos/binary/nova-compute/nova-compute/config-nova-compute.sh
+++ b/docker/centos/binary/nova-compute/nova-compute/config-nova-compute.sh
@@ -1,28 +1 @@
-#!/bin/bash
-
-. /opt/kolla/kolla-common.sh
-. /opt/kolla/config-nova.sh
-
-cfg=/etc/nova/nova.conf
-
-check_required_vars NOVA_VNCSERVER_PROXYCLIENT_ADDRESS NOVA_NOVNC_PROXY_PORT \
- NOVA_NOVNC_BASE_ADDRESS
-
-# Configures novnc to listen on all interfaces and instructs nova-compute to
-# announce PROXYCLIENT_IP to the nova-vncproxy. Clients like Horizon will
-# connect with this address.
-# As such, NOVA_VNCSERVER_PROXYCLIENT_ADDRESS is unique per compute node.
-crudini --set $cfg DEFAULT vnc_enabled "True"
-crudini --set $cfg DEFAULT vncserver_listen "0.0.0.0"
-crudini --set $cfg DEFAULT vncserver_proxyclient_address "${NOVA_VNCSERVER_PROXYCLIENT_ADDRESS}"
-crudini --set $cfg DEFAULT novncproxy_base_url "http://${NOVA_NOVNC_BASE_ADDRESS}:${NOVA_NOVNC_PROXY_PORT}/vnc_auto.html"
-
-# configure logging
-crudini --set $cfg DEFAULT log_file "${NOVA_COMPUTE_LOG_FILE}"
-
-# set qmeu emulation if no hardware acceleration found
-if [[ `egrep -c '(vmx|svm)' /proc/cpuinfo` == 0 ]]; then
- crudini --set $cfg libvirt virt_type qemu
-fi
-
-mkdir -p /var/lib/nova/instances
+../../../../common/nova-compute/nova-compute/config-nova-compute.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-compute/nova-compute/start.sh b/docker/centos/binary/nova-compute/nova-compute/start.sh
index ce3d0c0c3..ef5d32f18 100755..120000
--- a/docker/centos/binary/nova-compute/nova-compute/start.sh
+++ b/docker/centos/binary/nova-compute/nova-compute/start.sh
@@ -1,10 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/config-nova-compute.sh
-
-sleep 6
-
-echo "Starting nova-compute."
-exec /usr/bin/nova-compute --config-file /etc/nova/nova.conf
+../../../../common/nova-compute/nova-compute/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-compute/nova-libvirt/start.sh b/docker/centos/binary/nova-compute/nova-libvirt/start.sh
index bdbe882b8..eac909978 100755..120000
--- a/docker/centos/binary/nova-compute/nova-libvirt/start.sh
+++ b/docker/centos/binary/nova-compute/nova-libvirt/start.sh
@@ -1,22 +1 @@
-#!/bin/bash
-
-if [[ $(cat /proc/cpuinfo | grep vmx) ]]; then
- modprobe kvm_intel
-elif [[ $(cat /proc/cpuinfo | grep svm) ]]; then
- modprobe kvm_amd
-else
- echo "WARNING: Your hardware does not support hardware virtualization -" \
- "using qemu software virtualization instead"
-fi
-
-modprobe ip6_tables ip_tables ebtable_nat
-
-# If libvirt is not installed on the host permissions need to be set
-# If running in qemu, we don't need to set anything as /dev/kvm won't exist
-if [[ -c /dev/kvm ]]; then
- chmod 660 /dev/kvm
- chown root:kvm /dev/kvm
-fi
-
-echo "Starting libvirtd."
-exec /usr/sbin/libvirtd
+../../../../common/nova-compute/nova-libvirt/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-compute/nova-network/config-nova-network.sh b/docker/centos/binary/nova-compute/nova-network/config-nova-network.sh
index 6976d3a20..ed1af588e 100755..120000
--- a/docker/centos/binary/nova-compute/nova-network/config-nova-network.sh
+++ b/docker/centos/binary/nova-compute/nova-network/config-nova-network.sh
@@ -1,30 +1 @@
-#!/bin/bash
-
-. /opt/kolla/config-nova.sh
-
-cfg=/etc/nova/nova.conf
-
-# configure logging
-crudini --set $cfg DEFAULT log_file "${NOVA_NETWORK_LOG_FILE}"
-
-# Configure eth1 as a physcial interface for nova flat network
-cat > /etc/sysconfig/network-scripts/ifcfg-$FLAT_INTERFACE <<EOF
-DEVICE="$FLAT_INTERFACE"
-BOOTPROTO="none"
-ONBOOT="yes"
-TYPE="Ethernet"
-EOF
-
-/usr/sbin/ifup $FLAT_INTERFACE
-
-cfg=/etc/nova/nova.conf
-
-crudini --set $cfg DEFAULT network_manager nova.network.manager.FlatDHCPManager
-crudini --set $cfg DEFAULT firewall_driver nova.virt.libvirt.firewall.IptablesFirewallDriver
-crudini --set $cfg DEFAULT network_size 254
-crudini --set $cfg DEFAULT allow_same_net_traffic False
-crudini --set $cfg DEFAULT multi_host True
-crudini --set $cfg DEFAULT send_arp_for_ha True
-crudini --set $cfg DEFAULT share_dhcp_address True
-crudini --set $cfg DEFAULT force_dhcp_release True
-crudini --set $cfg DEFAULT flat_network_bridge br100
+../../../../common/nova-compute/nova-network/config-nova-network.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-compute/nova-network/start.sh b/docker/centos/binary/nova-compute/nova-network/start.sh
index 92381b720..f2bec1979 100755..120000
--- a/docker/centos/binary/nova-compute/nova-network/start.sh
+++ b/docker/centos/binary/nova-compute/nova-network/start.sh
@@ -1,8 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/config-nova-network.sh
-
-# Start nova-network
-exec /usr/bin/nova-network --config-file /etc/nova/nova.conf
+../../../../common/nova-compute/nova-network/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-controller/nova-api/check.sh b/docker/centos/binary/nova-controller/nova-api/check.sh
index b250682d8..2a047038e 100755..120000
--- a/docker/centos/binary/nova-controller/nova-api/check.sh
+++ b/docker/centos/binary/nova-controller/nova-api/check.sh
@@ -1,17 +1 @@
-#!/bin/bash
-
-RES=0
-
-. /openrc
-if ! keystone token-get > /dev/null; then
- echo "ERROR: keystone token-get failed" >&2
- RES=1
-else
- if ! nova list > /dev/null; then
- echo "ERROR: nova list failed" >&2
- RES=1
- fi
-fi
-
-exit $RES
-
+../../../../common/nova-controller/nova-api/check.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-controller/nova-api/start.sh b/docker/centos/binary/nova-controller/nova-api/start.sh
index 7928370a4..7613d713a 100755..120000
--- a/docker/centos/binary/nova-controller/nova-api/start.sh
+++ b/docker/centos/binary/nova-controller/nova-api/start.sh
@@ -1,46 +1 @@
-#!/bin/bash
-
-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 NOVA_DB_NAME
-fail_unless_os_service_running keystone
-fail_unless_db $NOVA_DB_NAME
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="http://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
-
-cfg=/etc/nova/nova.conf
-
-# configure logging
-crudini --set $cfg DEFAULT log_file "${NOVA_API_LOG_FILE}"
-
-crux user-create --update \
- -n "${NOVA_KEYSTONE_USER}" \
- -p "${NOVA_KEYSTONE_PASSWORD}" \
- -t "${ADMIN_TENANT_NAME}" \
- -r admin
-
-crux endpoint-create --remove-all \
- -n ec2 -t ec2 \
- -I "http://${NOVA_EC2_API_SERVICE_HOST}:8773/services/Cloud" \
- -P "http://${PUBLIC_IP}:8773/services/Cloud" \
- -A "http://${NOVA_EC2_API_SERVICE_HOST}:8773/services/Admin"
-
-crux endpoint-create --remove-all \
- -n nova -t compute \
- -I "http://${NOVA_API_SERVICE_HOST}:8774/v2/\$(tenant_id)s" \
- -P "http://${PUBLIC_IP}:8774/v2/\$(tenant_id)s" \
- -A "http://${NOVA_API_SERVICE_HOST}:8774/v2/\$(tenant_id)s"
-
-crux endpoint-create --remove-all \
- -n novav3 -t computev3 \
- -I "http://${NOVA_API_SERVICE_HOST}:8774/v3" \
- -P "http://${PUBLIC_IP}:8774/v3" \
- -A "http://${NOVA_API_SERVICE_HOST}:8774/v3"
-
-exec /usr/bin/nova-api --config-file /etc/nova/nova.conf
+../../../../common/nova-controller/nova-api/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-controller/nova-conductor/start.sh b/docker/centos/binary/nova-controller/nova-conductor/start.sh
index 575e7ff6c..2b0dc28f8 100755..120000
--- a/docker/centos/binary/nova-controller/nova-conductor/start.sh
+++ b/docker/centos/binary/nova-controller/nova-conductor/start.sh
@@ -1,23 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/config-nova.sh
-
-check_required_vars NOVA_DB_NAME NOVA_DB_USER NOVA_DB_PASSWORD
-fail_unless_db
-
-cfg=/etc/nova/nova.conf
-
-# configure logging
-crudini --set $cfg DEFAULT log_file "${NOVA_CONDUCTOR_LOG_FILE}"
-
-mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF
-CREATE DATABASE IF NOT EXISTS ${NOVA_DB_NAME};
-GRANT ALL PRIVILEGES ON ${NOVA_DB_NAME}.* TO
- '${NOVA_DB_USER}'@'%' IDENTIFIED BY '${NOVA_DB_PASSWORD}'
-EOF
-
-nova-manage db sync
-
-exec /usr/bin/nova-conductor --config-file /etc/nova/nova.conf
+../../../../common/nova-controller/nova-conductor/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-controller/nova-consoleauth/start.sh b/docker/centos/binary/nova-controller/nova-consoleauth/start.sh
index a1b0864ac..0821b3c38 100755..120000
--- a/docker/centos/binary/nova-controller/nova-consoleauth/start.sh
+++ b/docker/centos/binary/nova-controller/nova-consoleauth/start.sh
@@ -1,11 +1 @@
-#!/bin/bash
-set -e
-
-. /opt/kolla/config-nova.sh
-
-cfg=/etc/nova/nova.conf
-
-crudini --set $cfg DEFAULT log_file "${NOVA_CONSOLEAUTH_LOG_FILE}"
-
-echo Starting nova-consoleauth
-exec /usr/bin/nova-consoleauth
+../../../../common/nova-controller/nova-consoleauth/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-controller/nova-novncproxy/start.sh b/docker/centos/binary/nova-controller/nova-novncproxy/start.sh
index 9edafbca3..80b6459a4 100755..120000
--- a/docker/centos/binary/nova-controller/nova-novncproxy/start.sh
+++ b/docker/centos/binary/nova-controller/nova-novncproxy/start.sh
@@ -1,22 +1 @@
-#!/bin/bash
-set -e
-. /opt/kolla/kolla-common.sh
-
-cfg=/etc/nova/nova.conf
-
-check_required_vars PUBLIC_IP NOVA_NOVNC_PROXY_SERVICE_HOST NOVA_NOVNC_PROXY_PORT \
- NOVA_NOVNC_BASE_ADDRESS NOVA_VNCSERVER_LISTEN_ADDRESS \
- NOVA_VNCSERVER_PROXYCLIENT_ADDRESS
-
-crudini --set $cfg DEFAULT log_file "${NOVA_NOVNCPROXY_LOG_FILE}"
-
-# Listen on all interfaces on port $NOVA_NOVNC_PROXY_PORT for incoming novnc
-# requests.
-# The base_url is given to clients to connect to, like Horizon, so this could
-# very well be fancy DNS name.
-echo Configuring VNC...
-crudini --set $cfg DEFAULT vncserver_listen "${NOVA_VNCSERVER_LISTEN_ADDRESS}"
-crudini --set $cfg DEFAULT vncserver_proxyclient_address "${NOVA_VNCSERVER_PROXYCLIENT_ADDRESS}"
-
-echo Starting nova-novncproxy
-exec /usr/bin/nova-novncproxy
+../../../../common/nova-controller/nova-novncproxy/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/nova-controller/nova-scheduler/start.sh b/docker/centos/binary/nova-controller/nova-scheduler/start.sh
index 504c049ed..a72115139 100755..120000
--- a/docker/centos/binary/nova-controller/nova-scheduler/start.sh
+++ b/docker/centos/binary/nova-controller/nova-scheduler/start.sh
@@ -1,15 +1 @@
-#!/bin/bash
-
-set -e
-
-. /opt/kolla/config-nova.sh
-
-check_required_vars NOVA_DB_NAME
-fail_unless_db $NOVA_DB_NAME
-
-cfg=/etc/nova/nova.conf
-
-# configure logging
-crudini --set $cfg DEFAULT log_file "${NOVA_SCHEDULER_LOG_FILE}"
-
-exec /usr/bin/nova-scheduler --config-file /etc/nova/nova.conf
+../../../../common/nova-controller/nova-scheduler/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/rabbitmq/rabbitmq-env.conf b/docker/centos/binary/rabbitmq/rabbitmq-env.conf
index e76f18f0b..af9f8525e 100644..120000
--- a/docker/centos/binary/rabbitmq/rabbitmq-env.conf
+++ b/docker/centos/binary/rabbitmq/rabbitmq-env.conf
@@ -1,2 +1 @@
-RABBITMQ_NODENAME=@RABBITMQ_NODENAME@
-RABBITMQ_LOG_BASE=@RABBITMQ_LOG_BASE@
+../../../common/rabbitmq/rabbitmq-env.conf \ No newline at end of file
diff --git a/docker/centos/binary/rabbitmq/rabbitmq.config b/docker/centos/binary/rabbitmq/rabbitmq.config
index 15a47eba1..cfb088507 100644..120000
--- a/docker/centos/binary/rabbitmq/rabbitmq.config
+++ b/docker/centos/binary/rabbitmq/rabbitmq.config
@@ -1,11 +1 @@
-[
- {rabbit, [
- {default_user, <<"@RABBITMQ_USER@">>},
- {default_pass, <<"@RABBITMQ_PASS@">>}
- ]},
- {kernel, [
-
- ]}
-].
-% EOF
-
+../../../common/rabbitmq/rabbitmq.config \ No newline at end of file
diff --git a/docker/centos/binary/rabbitmq/start.sh b/docker/centos/binary/rabbitmq/start.sh
index f70c34866..035f55e26 100755..120000
--- a/docker/centos/binary/rabbitmq/start.sh
+++ b/docker/centos/binary/rabbitmq/start.sh
@@ -1,24 +1 @@
-#!/bin/bash
-
-set -e
-
-: ${RABBITMQ_USER:=guest}
-: ${RABBITMQ_PASS:=guest}
-: ${RABBITMQ_NODENAME:=rabbit}
-: ${RABBITMQ_LOG_BASE:=/var/log/rabbitmq}
-
-sed -i '
- s|@RABBITMQ_USER@|'"$RABBITMQ_USER"'|g
- s|@RABBITMQ_PASS@|'"$RABBITMQ_PASS"'|g
-' /etc/rabbitmq/rabbitmq.config
-
-sed -i '
- s|@RABBITMQ_NODENAME@|'"$RABBITMQ_NODENAME"'|g
- s|@RABBITMQ_LOG_BASE@|'"$RABBITMQ_LOG_BASE"'|g
-' /etc/rabbitmq/rabbitmq-env.conf
-
-# work around:
-# https://bugs.launchpad.net/ubuntu/+source/rabbitmq-server/+bug/653405
-echo "${RABBITMQ_SERVICE_HOST} `/usr/bin/hostname -s`" > /etc/hosts
-
-exec /usr/sbin/rabbitmq-server
+../../../common/rabbitmq/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-account/start.sh b/docker/centos/binary/swift/swift-account/start.sh
index bf86830f9..f9e76aa5b 100644..120000
--- a/docker/centos/binary/swift/swift-account/start.sh
+++ b/docker/centos/binary/swift/swift-account/start.sh
@@ -1,34 +1 @@
-#!/bin/bash
-
-: ${SWIFT_DB_USER:=swift}
-: ${SWIFT_DB_NAME:=swift}
-: ${KEYSTONE_AUTH_PROTOCOL:=http}
-: ${SWIFT_KEYSTONE_USER:=swift}
-: ${ADMIN_TENANT_NAME:=admin}
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- SWIFT_ADMIN_PASSWORD
-fail_unless_db
-fail_unless_os_service_running keystone
-
-if ! [ "$SWIFT_DB_PASSWORD" ]; then
- SWIFT_DB_PASSWORD=$(openssl rand -hex 15)
- export SWIFT_DB_PASSWORD
-fi
-
-sh /opt/swift/config-swift.sh account-server
-
-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
-'${SWIFT_DB_USER}'@'%' IDENTIFIED BY '${SWIFT_DB_PASSWORD}'
-EOF
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-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}
-/bin/keystone user-role-add --user ${SWIFT_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
-
-exec /usr/bin/swift-engine
+../../../../common/swift/swift-account/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-container/start.sh b/docker/centos/binary/swift/swift-container/start.sh
index 42d4ccf35..dc3c88490 100644..120000
--- a/docker/centos/binary/swift/swift-container/start.sh
+++ b/docker/centos/binary/swift/swift-container/start.sh
@@ -1,34 +1 @@
-#!/bin/bash
-
-: ${SWIFT_DB_USER:=swift}
-: ${SWIFT_DB_NAME:=swift}
-: ${KEYSTONE_AUTH_PROTOCOL:=http}
-: ${SWIFT_KEYSTONE_USER:=swift}
-: ${ADMIN_TENANT_NAME:=admin}
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- SWIFT_ADMIN_PASSWORD
-fail_unless_db
-fail_unless_os_service_running keystone
-
-if ! [ "$SWIFT_DB_PASSWORD" ]; then
- SWIFT_DB_PASSWORD=$(openssl rand -hex 15)
- export SWIFT_DB_PASSWORD
-fi
-
-sh /opt/swift/config-swift.sh container
-
-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
-'${SWIFT_DB_USER}'@'%' IDENTIFIED BY '${SWIFT_DB_PASSWORD}'
-EOF
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-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}
-/bin/keystone user-role-add --user ${SWIFT_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
-
-exec /usr/bin/swift-container-server
+../../../../common/swift/swift-container/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-object/start.sh b/docker/centos/binary/swift/swift-object/start.sh
index 7ed97536e..690be2540 100644..120000
--- a/docker/centos/binary/swift/swift-object/start.sh
+++ b/docker/centos/binary/swift/swift-object/start.sh
@@ -1,34 +1 @@
-#!/bin/bash
-
-: ${SWIFT_DB_USER:=swift}
-: ${SWIFT_DB_NAME:=swift}
-: ${KEYSTONE_AUTH_PROTOCOL:=http}
-: ${SWIFT_KEYSTONE_USER:=swift}
-: ${ADMIN_TENANT_NAME:=admin}
-
-check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \
- SWIFT_ADMIN_PASSWORD
-fail_unless_db
-fail_unless_os_service_running keystone
-
-if ! [ "$SWIFT_DB_PASSWORD" ]; then
- SWIFT_DB_PASSWORD=$(openssl rand -hex 15)
- export SWIFT_DB_PASSWORD
-fi
-
-sh /opt/swift/config-swift.sh engine
-
-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
-'${SWIFT_DB_USER}'@'%' IDENTIFIED BY '${SWIFT_DB_PASSWORD}'
-EOF
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-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}
-/bin/keystone user-role-add --user ${SWIFT_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME}
-
-exec /usr/bin/swift-object-server
+../../../../common/swift/swift-object/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/swift/swift-proxy-server/start.sh b/docker/centos/binary/swift/swift-proxy-server/start.sh
index 3f387d187..6a5581a46 100644..120000
--- a/docker/centos/binary/swift/swift-proxy-server/start.sh
+++ b/docker/centos/binary/swift/swift-proxy-server/start.sh
@@ -1,5 +1 @@
-#!/bin/bash
-
-sh /opt/swift/config-swift.sh proxy
-
-exec /usr/bin/swift-proxy-server
+../../../../common/swift/swift-proxy-server/start.sh \ No newline at end of file
diff --git a/docker/centos/binary/zaqar/check.sh b/docker/centos/binary/zaqar/check.sh
index 4b3cdbb46..48c775659 100755..120000
--- a/docker/centos/binary/zaqar/check.sh
+++ b/docker/centos/binary/zaqar/check.sh
@@ -1,10 +1 @@
-#!/bin/bash
-
-status=$(curl -s -w "%{http_code}" -o /dev/null http://localhost:8888/v1/queues)
-
-if [[ $status -ne 200 && $status -ne 204 ]]; then
- echo "ERROR($status): queue list failed"
- exit $status
-fi
-
-exit 0
+../../../common/zaqar/check.sh \ No newline at end of file
diff --git a/docker/centos/binary/zaqar/start.sh b/docker/centos/binary/zaqar/start.sh
index 6c68fccf2..48134a044 100755..120000
--- a/docker/centos/binary/zaqar/start.sh
+++ b/docker/centos/binary/zaqar/start.sh
@@ -1,64 +1 @@
-#!/bin/sh
-
-set -e
-
-. /opt/kolla/kolla-common.sh
-
-: ${ADMIN_TENANT_NAME:=admin}
-: ${ZAQAR_KEYSTONE_USER:=zaqar}
-: ${KEYSTONE_AUTH_PROTOCOL:=http}
-
-check_required_vars ZAQAR_KEYSTONE_PASSWORD ZAQAR_SERVER_SERVICE_HOST \
- KEYSTONE_ADMIN_SERVICE_HOST KEYSTONE_ADMIN_TOKEN \
- PUBLIC_IP
-dump_vars
-
-#check_for_mongodb
-check_for_keystone
-
-cat > /openrc <<EOF
-export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
-export OS_USERNAME="${ZAQAR_KEYSTONE_USER}"
-export OS_PASSWORD="${ZAQAR_KEYSTONE_PASSWORD}"
-export OS_TENANT_NAME="${ADMIN_TENANT_NAME}"
-EOF
-
-cfg=/etc/zaqar/zaqar.conf
-
-crudini --set $cfg DEFAULT log_file \
- ""
-crudini --set $cfg DEFAULT use_stderr \
- true
-
-crudini --set $cfg drivers storage \
- sqlite
-
-crudini --set $cfg keystone_authtoken admin_password \
- "${ZAQAR_KEYSTONE_PASSWORD}"
-crudini --set $cfg keystone_authtoken admin_user \
- "${ZAQAR_KEYSTONE_USER}"
-crudini --set $cfg keystone_authtoken admin_tenant_name \
- "${ADMIN_TENANT_NAME}"
-crudini --set $cfg keystone_authtoken auth_uri \
- "${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
-crudini --set $cfg keystone_authtoken auth_protocol \
- "${KEYSTONE_AUTH_PROTOCOL}"
-crudini --set $cfg keystone_authtoken auth_host \
- "${KEYSTONE_PUBLIC_SERVICE_HOST}"
-crudini --set $cfg keystone_authtoken auth_port \
- 5000
-
-
-export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}"
-export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:35357/v2.0"
-crux user-create -n ${ZAQAR_KEYSTONE_USER} \
- -p ${ZAQAR_KEYSTONE_PASSWORD} \
- -t ${ADMIN_TENANT_NAME} \
- -r admin
-
-crux endpoint-create --remove-all -n ${ZAQAR_KEYSTONE_USER} -t messaging \
- -I "${KEYSTONE_AUTH_PROTOCOL}://${ZAQAR_SERVER_SERVICE_HOST}:8888" \
- -P "${KEYSTONE_AUTH_PROTOCOL}://${PUBLIC_IP}:8888" \
- -A "${KEYSTONE_AUTH_PROTOCOL}://${ZAQAR_SERVER_SERVICE_HOST}:8888"
-
-exec /usr/bin/zaqar-server
+../../../common/zaqar/start.sh \ No newline at end of file