diff options
Diffstat (limited to 'docker/common')
33 files changed, 638 insertions, 125 deletions
diff --git a/docker/common/swift/swift-account-server/config-external.sh b/docker/common/swift/swift-account-server/config-external.sh new file mode 100644 index 000000000..fe20dcb92 --- /dev/null +++ b/docker/common/swift/swift-account-server/config-external.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [[ -f /opt/kolla/swift/swift.conf ]]; then + cp /opt/kolla/swift/swift.conf /etc/swift/ + chown swift: /etc/swift/swift.conf + chmod 0640 /etc/swift/swift.conf +fi + +if [[ -f /opt/kolla/swift/account-server.conf ]]; then + cp /opt/kolla/swift/account-server.conf /etc/swift/ + chown swift: /etc/swift/account-server.conf + chmod 0640 /etc/swift/account-server.conf +fi diff --git a/docker/common/swift/swift-account-server/config-internal.sh b/docker/common/swift/swift-account-server/config-internal.sh new file mode 100755 index 000000000..461020fd0 --- /dev/null +++ b/docker/common/swift/swift-account-server/config-internal.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +set -e + +CMD="/usr/bin/swift-account-server" +ARGS="/etc/swift/account-server.conf --verbose" + +. /opt/kolla/config-swift.sh + +check_required_vars \ + SWIFT_ACCOUNT_SVC_BIND_IP \ + SWIFT_ACCOUNT_SVC_BIND_PORT \ + SWIFT_ACCOUNT_SVC_DEVICES \ + SWIFT_ACCOUNT_SVC_MOUNT_CHECK \ + SWIFT_ACCOUNT_SVC_RING_DEVICES \ + SWIFT_ACCOUNT_SVC_RING_HOSTS \ + SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS \ + SWIFT_ACCOUNT_SVC_RING_NAME \ + SWIFT_ACCOUNT_SVC_RING_PART_POWER \ + SWIFT_ACCOUNT_SVC_RING_REPLICAS \ + SWIFT_ACCOUNT_SVC_RING_WEIGHTS \ + SWIFT_ACCOUNT_SVC_RING_ZONES \ + SWIFT_DIR \ + SWIFT_USER + +exec $CMD $ARGS + +cfg=/etc/swift/account-server.conf + +# [DEFAULT] +crudini --set $cfg DEFAULT bind_ip "${SWIFT_ACCOUNT_SVC_BIND_IP}" +crudini --set $cfg DEFAULT bind_port "${SWIFT_ACCOUNT_SVC_BIND_PORT}" +crudini --set $cfg DEFAULT user "${SWIFT_USER}" +crudini --set $cfg DEFAULT swift_dir "${SWIFT_DIR}" +crudini --set $cfg DEFAULT devices "${SWIFT_ACCOUNT_SVC_DEVICES}" +crudini --set $cfg DEFAULT mount_check "${SWIFT_ACCOUNT_SVC_MOUNT_CHECK}" + +# Create swift user and group if they don't exist +id -u swift &>/dev/null || useradd --user-group swift + +# Ensure proper ownership of the mount point directory structure +chown -R swift:swift /srv/node + +python /opt/kolla/build-swift-ring.py \ + -f ${SWIFT_ACCOUNT_SVC_RING_NAME} \ + -p ${SWIFT_ACCOUNT_SVC_RING_PART_POWER} \ + -r ${SWIFT_ACCOUNT_SVC_RING_REPLICAS} \ + -m ${SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS} \ + -H ${SWIFT_ACCOUNT_SVC_RING_HOSTS} \ + -w ${SWIFT_ACCOUNT_SVC_RING_WEIGHTS} \ + -d ${SWIFT_ACCOUNT_SVC_RING_DEVICES} \ + -z ${SWIFT_ACCOUNT_SVC_RING_ZONES} + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-account-server/start.sh b/docker/common/swift/swift-account-server/start.sh new file mode 100755 index 000000000..96ce90d07 --- /dev/null +++ b/docker/common/swift/swift-account-server/start.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -o errexit + +CMD="/usr/bin/swift-account-server" +ARGS="/etc/swift/account-server.conf --verbose" + +# Loading common functions. +source /opt/kolla/kolla-common.sh + +# Config-internal script exec out of this function, it does not return here. +set_configs + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-account/config-external.sh b/docker/common/swift/swift-account/config-external.sh deleted file mode 100755 index 2de263dda..000000000 --- a/docker/common/swift/swift-account/config-external.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -SOURCE="/opt/kolla/swift-account/swift.conf" -TARGET="/etc/swift/swift.conf" -OWNER="swift" - -if [[ -f "$SOURCE" ]]; then - cp $SOURCE $TARGET - chown ${OWNER}: $TARGET - chmod 0644 $TARGET -fi diff --git a/docker/common/swift/swift-account/config-internal.sh b/docker/common/swift/swift-account/config-internal.sh deleted file mode 100755 index c0531f46e..000000000 --- a/docker/common/swift/swift-account/config-internal.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -check_required_vars KEYSTONE_ADMIN_SERVICE_HOST \ - KEYSTONE_ADMIN_TOKEN \ - 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 diff --git a/docker/common/swift/swift-base/build-swift-ring.py b/docker/common/swift/swift-base/build-swift-ring.py new file mode 100644 index 000000000..d7386392d --- /dev/null +++ b/docker/common/swift/swift-base/build-swift-ring.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python + +# Copyright 2015 Paul Bourke +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +This script is a simple wrapper used to create and rebalance Swift ring files. +""" + +import argparse +import subprocess +import sys + + +def setup_args(): + parser = argparse.ArgumentParser() + parser.add_argument("-f", "--ring-file", + required=True, + help="Path to ring file") + parser.add_argument("-p", "--part-power", + required=True, + help="Part power") + parser.add_argument("-r", "--num-replicas", + required=True, + help="Number of replicas") + parser.add_argument("-m", "--min-part-hours", + required=True, + help="Min part hours") + parser.add_argument("-H", "--hosts", + required=True, + help="Hosts in the ring, comma delimited") + parser.add_argument("-w", "--weights", + required=True, + help="Weight of each host, comma delimited") + parser.add_argument("-d", "--devices", + required=True, + help="Device on each host, comma delimited") + parser.add_argument("-z", "--zones", + required=True, + help="Zone of each host, comma delimited") + return parser.parse_args() + + +def run_cmd(cmd): + print(' '.join(cmd)) + subprocess.call(cmd) + + +def run(args): + hosts = args.hosts.split(',') + weights = args.weights.split(',') + zones = args.zones.split(',') + devices = args.devices.split(',') + if not (len(hosts) == len(weights) == len(zones) == len(devices)): + print('Error: an equal amount of hosts, devices, weights, ' + 'and zones are required') + sys.exit(1) + + run_cmd(['/usr/bin/swift-ring-builder', + args.ring_file, + 'create', + args.part_power, + args.num_replicas, + args.min_part_hours]) + + for i in xrange(len(hosts)): + run_cmd(['/usr/bin/swift-ring-builder', + args.ring_file, + 'add', + 'z{}-{}/{}'.format(zones[i], hosts[i], devices[i]), + weights[i]]) + + run_cmd(['/usr/bin/swift-ring-builder', args.ring_file, 'rebalance']) + + +def main(): + args = setup_args() + run(args) + + +if __name__ == "__main__": + main() diff --git a/docker/common/swift/swift-base/config-swift.sh b/docker/common/swift/swift-base/config-swift.sh new file mode 100755 index 000000000..343abdcec --- /dev/null +++ b/docker/common/swift/swift-base/config-swift.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +. /opt/kolla/kolla-common.sh + +check_required_vars SWIFT_HASH_PATH_SUFFIX + +cfg=/etc/swift/swift.conf + +crudini --set $cfg swift-hash swift_hash_path_suffix "${SWIFT_HASH_PATH_SUFFIX}" diff --git a/docker/common/swift/swift-container-server/config-external.sh b/docker/common/swift/swift-container-server/config-external.sh new file mode 100644 index 000000000..6f4186e0f --- /dev/null +++ b/docker/common/swift/swift-container-server/config-external.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [[ -f /opt/kolla/swift/swift.conf ]]; then + cp /opt/kolla/swift/swift.conf /etc/swift/ + chown swift: /etc/swift/swift.conf + chmod 0640 /etc/swift/swift.conf +fi + +if [[ -f /opt/kolla/swift/container-server.conf ]]; then + cp /opt/kolla/swift/container-server.conf /etc/swift/ + chown swift: /etc/swift/container-server.conf + chmod 0640 /etc/swift/container-server.conf +fi diff --git a/docker/common/swift/swift-container-server/config-internal.sh b/docker/common/swift/swift-container-server/config-internal.sh new file mode 100755 index 000000000..5404baea2 --- /dev/null +++ b/docker/common/swift/swift-container-server/config-internal.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +set -e + +CMD="/usr/bin/swift-container-server" +ARGS="/etc/swift/container-server.conf --verbose" + +. /opt/kolla/config-swift.sh + +check_required_vars \ + SWIFT_CONTAINER_SVC_BIND_IP \ + SWIFT_CONTAINER_SVC_BIND_PORT \ + SWIFT_CONTAINER_SVC_DEVICES \ + SWIFT_CONTAINER_SVC_MOUNT_CHECK \ + SWIFT_CONTAINER_SVC_RING_DEVICES \ + SWIFT_CONTAINER_SVC_RING_HOSTS \ + SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS \ + SWIFT_CONTAINER_SVC_RING_NAME \ + SWIFT_CONTAINER_SVC_RING_PART_POWER \ + SWIFT_CONTAINER_SVC_RING_REPLICAS \ + SWIFT_CONTAINER_SVC_RING_WEIGHTS \ + SWIFT_CONTAINER_SVC_RING_ZONES \ + SWIFT_DIR \ + SWIFT_USER + +cfg=/etc/swift/container-server.conf + +# [DEFAULT] +crudini --set $cfg DEFAULT bind_ip "${SWIFT_CONTAINER_SVC_BIND_IP}" +crudini --set $cfg DEFAULT bind_port "${SWIFT_CONTAINER_SVC_BIND_PORT}" +crudini --set $cfg DEFAULT user "${SWIFT_USER}" +crudini --set $cfg DEFAULT swift_dir "${SWIFT_DIR}" +crudini --set $cfg DEFAULT devices "${SWIFT_CONTAINER_SVC_DEVICES}" +crudini --set $cfg DEFAULT mount_check "${SWIFT_CONTAINER_SVC_MOUNT_CHECK}" + +# Create swift user and group if they don't exist +id -u swift &>/dev/null || useradd --user-group swift + +# Ensure proper ownership of the mount point directory structure +chown -R swift:swift /srv/node + +python /opt/kolla/build-swift-ring.py \ + -f ${SWIFT_CONTAINER_SVC_RING_NAME} \ + -p ${SWIFT_CONTAINER_SVC_RING_PART_POWER} \ + -r ${SWIFT_CONTAINER_SVC_RING_REPLICAS} \ + -m ${SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS} \ + -H ${SWIFT_CONTAINER_SVC_RING_HOSTS} \ + -w ${SWIFT_CONTAINER_SVC_RING_WEIGHTS} \ + -d ${SWIFT_CONTAINER_SVC_RING_DEVICES} \ + -z ${SWIFT_CONTAINER_SVC_RING_ZONES} + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-container/start.sh b/docker/common/swift/swift-container-server/start.sh index e3187b367..40ec93960 100755 --- a/docker/common/swift/swift-container/start.sh +++ b/docker/common/swift/swift-container-server/start.sh @@ -1,8 +1,9 @@ #!/bin/bash + set -o errexit CMD="/usr/bin/swift-container-server" -ARGS="" +ARGS="/etc/swift/container-server.conf --verbose" # Loading common functions. source /opt/kolla/kolla-common.sh diff --git a/docker/common/swift/swift-container/config-external.sh b/docker/common/swift/swift-container/config-external.sh deleted file mode 100755 index 23c9bb4ef..000000000 --- a/docker/common/swift/swift-container/config-external.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -SOURCE="/opt/kolla/swift-container/swift.conf" -TARGET="/etc/swift/swift.conf" -OWNER="swift" - -if [[ -f "$SOURCE" ]]; then - cp $SOURCE $TARGET - chown ${OWNER}: $TARGET - chmod 0644 $TARGET -fi diff --git a/docker/common/swift/swift-container/config-internal.sh b/docker/common/swift/swift-container/config-internal.sh deleted file mode 100755 index a11c10561..000000000 --- a/docker/common/swift/swift-container/config-internal.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -check_required_vars KEYSTONE_ADMIN_SERVICE_HOST \ - KEYSTONE_ADMIN_TOKEN \ - 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 diff --git a/docker/common/swift/swift-object-auditor/config-external.sh b/docker/common/swift/swift-object-auditor/config-external.sh new file mode 100644 index 000000000..f06689532 --- /dev/null +++ b/docker/common/swift/swift-object-auditor/config-external.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [[ -f /opt/kolla/swift/swift.conf ]]; then + cp /opt/kolla/swift/swift.conf /etc/swift/ + chown swift: /etc/swift/swift.conf + chmod 0640 /etc/swift/swift.conf +fi + +if [[ -f /opt/kolla/swift/object-server.conf ]]; then + cp /opt/kolla/swift/object-server.conf /etc/swift/ + chown swift: /opt/kolla/swift/object-server.conf + chmod 0640 /etc/swift/object-server.conf +fi diff --git a/docker/common/swift/swift-object-auditor/config-internal.sh b/docker/common/swift/swift-object-auditor/config-internal.sh new file mode 100755 index 000000000..8d3a19853 --- /dev/null +++ b/docker/common/swift/swift-object-auditor/config-internal.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +CMD="/usr/bin/swift-object-auditor" +ARGS="/etc/swift/object-server.conf --verbose" + +. /opt/kolla/config-swift.sh +. /opt/kolla/config-swift-object.sh + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-account/start.sh b/docker/common/swift/swift-object-auditor/start.sh index 7465fbc5d..ea587cfad 100755 --- a/docker/common/swift/swift-account/start.sh +++ b/docker/common/swift/swift-object-auditor/start.sh @@ -1,8 +1,9 @@ #!/bin/bash + set -o errexit -CMD="/usr/bin/swift-engine" -ARGS="" +CMD="/usr/bin/swift-object-auditor" +ARGS="/etc/swift/object-server.conf --verbose" # Loading common functions. source /opt/kolla/kolla-common.sh diff --git a/docker/common/swift/swift-object-base/config-swift-object.sh b/docker/common/swift/swift-object-base/config-swift-object.sh new file mode 100644 index 000000000..0d3d58dc3 --- /dev/null +++ b/docker/common/swift/swift-object-base/config-swift-object.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +. /opt/kolla/kolla-common.sh + +check_required_vars \ + SWIFT_CONTAINER_SVC_RING_DEVICES \ + SWIFT_CONTAINER_SVC_RING_HOSTS \ + SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS \ + SWIFT_CONTAINER_SVC_RING_NAME \ + SWIFT_CONTAINER_SVC_RING_PART_POWER \ + SWIFT_CONTAINER_SVC_RING_REPLICAS \ + SWIFT_CONTAINER_SVC_RING_WEIGHTS \ + SWIFT_CONTAINER_SVC_RING_ZONES \ + SWIFT_DIR \ + SWIFT_OBJECT_SVC_BIND_IP \ + SWIFT_OBJECT_SVC_BIND_PORT \ + SWIFT_OBJECT_SVC_DEVICES \ + SWIFT_OBJECT_SVC_MOUNT_CHECK \ + SWIFT_OBJECT_SVC_PIPELINE \ + SWIFT_OBJECT_SVC_RING_DEVICES \ + SWIFT_OBJECT_SVC_RING_HOSTS \ + SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS \ + SWIFT_OBJECT_SVC_RING_NAME \ + SWIFT_OBJECT_SVC_RING_PART_POWER \ + SWIFT_OBJECT_SVC_RING_REPLICAS \ + SWIFT_OBJECT_SVC_RING_WEIGHTS \ + SWIFT_OBJECT_SVC_RING_ZONES \ + SWIFT_USER + +cfg=/etc/swift/object-server.conf + +crudini --set $cfg DEFAULT bind_ip "${SWIFT_OBJECT_SVC_BIND_IP}" +crudini --set $cfg DEFAULT bind_port "${SWIFT_OBJECT_SVC_BIND_PORT}" +crudini --set $cfg DEFAULT user "${SWIFT_USER}" +crudini --set $cfg DEFAULT swift_dir "${SWIFT_DIR}" +crudini --set $cfg DEFAULT devices "${SWIFT_OBJECT_SVC_DEVICES}" +crudini --set $cfg DEFAULT mount_check "${SWIFT_OBJECT_SVC_MOUNT_CHECK}" + +crudini --set $cfg pipeline:main pipeline "${SWIFT_OBJECT_SVC_PIPELINE}" + +# NOTE(pbourke): some services require a section in the conf, even if empty +crudini --set $cfg object-expirer + +# Create swift user and group if they don't exist +id -u swift &>/dev/null || useradd --user-group swift + +# Ensure proper ownership of the mount point directory structure +chown -R swift:swift /srv/node + +# TODO(pbourke): does this need to be on a data vol? +mkdir -p /var/cache/swift +chown -R swift:swift /var/cache/swift + +python /opt/kolla/build-swift-ring.py \ + -f ${SWIFT_OBJECT_SVC_RING_NAME} \ + -p ${SWIFT_OBJECT_SVC_RING_PART_POWER} \ + -r ${SWIFT_OBJECT_SVC_RING_REPLICAS} \ + -m ${SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS} \ + -H ${SWIFT_OBJECT_SVC_RING_HOSTS} \ + -w ${SWIFT_OBJECT_SVC_RING_WEIGHTS} \ + -d ${SWIFT_OBJECT_SVC_RING_DEVICES} \ + -z ${SWIFT_OBJECT_SVC_RING_ZONES} + +python /opt/kolla/build-swift-ring.py \ + -f ${SWIFT_CONTAINER_SVC_RING_NAME} \ + -p ${SWIFT_CONTAINER_SVC_RING_PART_POWER} \ + -r ${SWIFT_CONTAINER_SVC_RING_REPLICAS} \ + -m ${SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS} \ + -H ${SWIFT_CONTAINER_SVC_RING_HOSTS} \ + -w ${SWIFT_CONTAINER_SVC_RING_WEIGHTS} \ + -d ${SWIFT_CONTAINER_SVC_RING_DEVICES} \ + -z ${SWIFT_CONTAINER_SVC_RING_ZONES} diff --git a/docker/common/swift/swift-object-expirer/config-external.sh b/docker/common/swift/swift-object-expirer/config-external.sh new file mode 100644 index 000000000..ca4b35499 --- /dev/null +++ b/docker/common/swift/swift-object-expirer/config-external.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [[ -f /opt/kolla/swift/swift.conf ]]; then + cp /opt/kolla/swift/swift.conf /etc/swift/ + chown swift: /opt/kolla/swift/swift.conf + chmod 0640 /etc/swift/swift.conf +fi + +if [[ -f /opt/kolla/swift/object-expirer.conf ]]; then + cp /opt/kolla/swift/object-expirer.conf /etc/swift/ + chown swift: /opt/kolla/swift/object-expirer.conf + chmod 0640 /etc/swift/object-expirer.conf +fi diff --git a/docker/common/swift/swift-object-expirer/config-internal.sh b/docker/common/swift/swift-object-expirer/config-internal.sh new file mode 100755 index 000000000..8b3cac0dc --- /dev/null +++ b/docker/common/swift/swift-object-expirer/config-internal.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +CMD="/usr/bin/swift-object-expirer" +ARGS="/etc/swift/object-server.conf --verbose" + +. /opt/kolla/config-swift.sh +. /opt/kolla/config-swift-object.sh + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-object-expirer/start.sh b/docker/common/swift/swift-object-expirer/start.sh new file mode 100755 index 000000000..e4cfa7369 --- /dev/null +++ b/docker/common/swift/swift-object-expirer/start.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -o errexit + +CMD="/usr/bin/swift-object-expirer" +ARGS="/etc/swift/object-server.conf --verbose" + +# Loading common functions. +source /opt/kolla/kolla-common.sh + +# Config-internal script exec out of this function, it does not return here. +set_configs + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-object-replicator/config-external.sh b/docker/common/swift/swift-object-replicator/config-external.sh new file mode 100644 index 000000000..fdf92592c --- /dev/null +++ b/docker/common/swift/swift-object-replicator/config-external.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [[ -f /opt/kolla/swift/swift.conf ]]; then + cp /opt/kolla/swift/swift.conf /etc/swift/ + chown swift: /opt/kolla/swift/swift.conf + chmod 0640 /etc/swift/swift.conf +fi + +if [[ -f /opt/kolla/swift/object-server.conf ]]; then + cp /opt/kolla/swift/object-server.conf /etc/swift/ + chown swift: /opt/kolla/swift/object-server.conf + chmod 0640 /etc/swift/object-server.conf +fi diff --git a/docker/common/swift/swift-object-replicator/config-internal.sh b/docker/common/swift/swift-object-replicator/config-internal.sh new file mode 100755 index 000000000..101fa90f8 --- /dev/null +++ b/docker/common/swift/swift-object-replicator/config-internal.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +CMD="/usr/bin/swift-object-replicator" +ARGS="/etc/swift/object-server.conf --verbose" + +. /opt/kolla/config-swift.sh +. /opt/kolla/config-swift-object.sh + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-object-replicator/start.sh b/docker/common/swift/swift-object-replicator/start.sh new file mode 100755 index 000000000..e6049717a --- /dev/null +++ b/docker/common/swift/swift-object-replicator/start.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -o errexit + +CMD="/usr/bin/swift-object-replicator" +ARGS="/etc/swift/object-server.conf --verbose" + +# Loading common functions. +source /opt/kolla/kolla-common.sh + +# Config-internal script exec out of this function, it does not return here. +set_configs + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-object-server/config-external.sh b/docker/common/swift/swift-object-server/config-external.sh new file mode 100644 index 000000000..fdf92592c --- /dev/null +++ b/docker/common/swift/swift-object-server/config-external.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [[ -f /opt/kolla/swift/swift.conf ]]; then + cp /opt/kolla/swift/swift.conf /etc/swift/ + chown swift: /opt/kolla/swift/swift.conf + chmod 0640 /etc/swift/swift.conf +fi + +if [[ -f /opt/kolla/swift/object-server.conf ]]; then + cp /opt/kolla/swift/object-server.conf /etc/swift/ + chown swift: /opt/kolla/swift/object-server.conf + chmod 0640 /etc/swift/object-server.conf +fi diff --git a/docker/common/swift/swift-object-server/config-internal.sh b/docker/common/swift/swift-object-server/config-internal.sh new file mode 100755 index 000000000..fbee94383 --- /dev/null +++ b/docker/common/swift/swift-object-server/config-internal.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +CMD="/usr/bin/swift-object-server" +ARGS="/etc/swift/object-server.conf --verbose" + +. /opt/kolla/config-swift.sh +. /opt/kolla/config-swift-object.sh + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-object/start.sh b/docker/common/swift/swift-object-server/start.sh index abda77dbe..7b9f022f2 100755 --- a/docker/common/swift/swift-object/start.sh +++ b/docker/common/swift/swift-object-server/start.sh @@ -1,8 +1,9 @@ #!/bin/bash + set -o errexit CMD="/usr/bin/swift-object-server" -ARGS="" +ARGS="/etc/swift/object-server.conf --verbose" # Loading common functions. source /opt/kolla/kolla-common.sh diff --git a/docker/common/swift/swift-object-updater/config-external.sh b/docker/common/swift/swift-object-updater/config-external.sh new file mode 100644 index 000000000..ebd1ad9a9 --- /dev/null +++ b/docker/common/swift/swift-object-updater/config-external.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +if [[ -f /opt/kolla/swift/swift.conf ]]; then + cp /opt/kolla/swift/swift.conf /etc/swift/ + chown swift: /etc/swift/swift.conf + chmod 0640 /etc/swift/swift.conf +fi + +if [[ -f /opt/kolla/swift/object-server.conf ]]; then + cp /opt/kolla/swift/object-server.conf /etc/swift/ + chown swift: /etc/swift/object-server.conf + chmod 0640 /etc/swift/object-server.conf +fi diff --git a/docker/common/swift/swift-object-updater/config-internal.sh b/docker/common/swift/swift-object-updater/config-internal.sh new file mode 100755 index 000000000..accaea6c7 --- /dev/null +++ b/docker/common/swift/swift-object-updater/config-internal.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -e + +CMD="/usr/bin/swift-object-updater" +ARGS="/etc/swift/object-server.conf --verbose" + +. /opt/kolla/config-swift.sh +. /opt/kolla/config-swift-object.sh + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-object-updater/start.sh b/docker/common/swift/swift-object-updater/start.sh new file mode 100755 index 000000000..e3b111e79 --- /dev/null +++ b/docker/common/swift/swift-object-updater/start.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -o errexit + +CMD="/usr/bin/swift-object-updater" +ARGS="/etc/swift/object-server.conf --verbose" + +# Loading common functions. +source /opt/kolla/kolla-common.sh + +# Config-internal script exec out of this function, it does not return here. +set_configs + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-object/config-external.sh b/docker/common/swift/swift-object/config-external.sh deleted file mode 100755 index d56baf152..000000000 --- a/docker/common/swift/swift-object/config-external.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -SOURCE="/opt/kolla/swift-object/swift.conf" -TARGET="/etc/swift/swift.conf" -OWNER="swift" - -if [[ -f "$SOURCE" ]]; then - cp $SOURCE $TARGET - chown ${OWNER}: $TARGET - chmod 0644 $TARGET -fi diff --git a/docker/common/swift/swift-object/config-internal.sh b/docker/common/swift/swift-object/config-internal.sh deleted file mode 100755 index 5931e89d6..000000000 --- a/docker/common/swift/swift-object/config-internal.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -check_required_vars KEYSTONE_ADMIN_SERVICE_HOST \ - KEYSTONE_ADMIN_TOKEN \ - 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 diff --git a/docker/common/swift/swift-proxy-server/config-external.sh b/docker/common/swift/swift-proxy-server/config-external.sh index 813462735..2b3327b33 100755 --- a/docker/common/swift/swift-proxy-server/config-external.sh +++ b/docker/common/swift/swift-proxy-server/config-external.sh @@ -6,5 +6,5 @@ OWNER="swift" if [[ -f "$SOURCE" ]]; then cp $SOURCE $TARGET chown ${OWNER}: $TARGET - chmod 0644 $TARGET + chmod 0640 $TARGET fi diff --git a/docker/common/swift/swift-proxy-server/config-internal.sh b/docker/common/swift/swift-proxy-server/config-internal.sh index 3f387d187..436d1fbba 100755 --- a/docker/common/swift/swift-proxy-server/config-internal.sh +++ b/docker/common/swift/swift-proxy-server/config-internal.sh @@ -1,5 +1,149 @@ #!/bin/bash -sh /opt/swift/config-swift.sh proxy +set -e -exec /usr/bin/swift-proxy-server +CMD="/usr/bin/swift-proxy-server" +ARGS="/etc/swift/proxy-server.conf --verbose" + +. /opt/kolla/config-swift.sh + +check_required_vars \ + SWIFT_ACCOUNT_SVC_RING_DEVICES \ + SWIFT_ACCOUNT_SVC_RING_HOSTS \ + SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS \ + SWIFT_ACCOUNT_SVC_RING_NAME \ + SWIFT_ACCOUNT_SVC_RING_PART_POWER \ + SWIFT_ACCOUNT_SVC_RING_REPLICAS \ + SWIFT_ACCOUNT_SVC_RING_WEIGHTS \ + SWIFT_ACCOUNT_SVC_RING_ZONES \ + SWIFT_ADMIN_USER \ + SWIFT_CONTAINER_SVC_RING_DEVICES \ + SWIFT_CONTAINER_SVC_RING_HOSTS \ + SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS \ + SWIFT_CONTAINER_SVC_RING_NAME \ + SWIFT_CONTAINER_SVC_RING_PART_POWER \ + SWIFT_CONTAINER_SVC_RING_REPLICAS \ + SWIFT_CONTAINER_SVC_RING_WEIGHTS \ + SWIFT_CONTAINER_SVC_RING_ZONES \ + SWIFT_KEYSTONE_PASSWORD \ + SWIFT_KEYSTONE_USER \ + SWIFT_OBJECT_SVC_RING_DEVICES \ + SWIFT_OBJECT_SVC_RING_HOSTS \ + SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS \ + SWIFT_OBJECT_SVC_RING_NAME \ + SWIFT_OBJECT_SVC_RING_PART_POWER \ + SWIFT_OBJECT_SVC_RING_REPLICAS \ + SWIFT_OBJECT_SVC_RING_WEIGHTS \ + SWIFT_OBJECT_SVC_RING_ZONES \ + SWIFT_PROXY_ACCOUNT_AUTOCREATE \ + SWIFT_PROXY_AUTH_PLUGIN \ + SWIFT_PROXY_BIND_IP \ + SWIFT_PROXY_BIND_PORT \ + SWIFT_PROXY_DELAY_AUTH_DECISION \ + SWIFT_PROXY_DIR \ + SWIFT_PROXY_OPERATOR_ROLES \ + SWIFT_PROXY_PASSWORD \ + SWIFT_PROXY_PIPELINE_MAIN \ + SWIFT_PROXY_PROJECT_DOMAIN_ID \ + SWIFT_PROXY_PROJECT_NAME \ + SWIFT_PROXY_SIGNING_DIR \ + SWIFT_PROXY_USER_DOMAIN_ID \ + SWIFT_PROXY_USERNAME \ + SWIFT_USER + +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 "${SWIFT_KEYSTONE_USER}" \ + -p "${SWIFT_KEYSTONE_PASSWORD}" \ + -t "${ADMIN_TENANT_NAME}" \ + -r admin + +crux endpoint-create --remove-all \ + -n swift -t object-store \ + -I "http://${SWIFT_API_SERVICE_HOST}:8080/v1/AUTH_%(tenant_id)s'" \ + -P "http://${PUBLIC_IP}:8080/v1/AUTH_%(tenant_id)s" \ + -A "http://${SWIFT_API_SERVICE_HOST}:8080'" + +cfg=/etc/swift/proxy-server.conf + +crudini --set $cfg DEFAULT bind_port "${SWIFT_PROXY_BIND_PORT}" +crudini --set $cfg DEFAULT user "${SWIFT_USER}" +crudini --set $cfg DEFAULT swift_dir "${SWIFT_PROXY_DIR}" +crudini --set $cfg DEFAULT bind_ip "${SWIFT_PROXY_BIND_IP}" + +crudini --set $cfg pipeline:main pipeline "${SWIFT_PROXY_PIPELINE_MAIN}" + +crudini --set $cfg app:proxy-server account_autocreate "${SWIFT_PROXY_ACCOUNT_AUTOCREATE}" + +crudini --del $cfg filter:keystone +crudini --set $cfg filter:keystoneauth use egg:swift#keystoneauth +crudini --set $cfg filter:keystoneauth operator_roles "${SWIFT_PROXY_OPERATOR_ROLES}" + +crudini --set $cfg filter:container_sync use egg:swift#container_sync + +crudini --set $cfg filter:bulk use egg:swift#bulk + +crudini --set $cfg filter:ratelimit use egg:swift#ratelimit + +crudini --set $cfg filter:authtoken auth_uri \ + "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_PUBLIC_SERVICE_PORT}/" +crudini --set $cfg filter:authtoken auth_url \ + "http://${KEYSTONE_PUBLIC_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/" +crudini --set $cfg filter:authtoken auth_host "${KEYSTONE_PUBLIC_SERVICE_HOST}" +crudini --set $cfg filter:authtoken auth_port "${KEYSTONE_ADMIN_SERVICE_PORT}" +crudini --set $cfg filter:authtoken admin_tenant_name "${ADMIN_TENANT_NAME}" +crudini --set $cfg filter:authtoken admin_user "${SWIFT_KEYSTONE_USER}" +crudini --set $cfg filter:authtoken admin_password "${SWIFT_KEYSTONE_PASSWORD}" +crudini --set $cfg filter:authtoken delay_auth_decision "${SWIFT_PROXY_DELAY_AUTH_DECISION}" +crudini --set $cfg filter:authtoken signing_dir "${SWIFT_PROXY_SIGNING_DIR}" + +crudini --set $cfg filter:cache memcache_servers "${PUBLIC_IP}:11211" + +crudini --set $cfg filter:gatekeeper use egg:swift#gatekeeper + +crudini --set $cfg filter:slo use egg:swift#slo + +crudini --set $cfg filter:dlo use egg:swift#dlo + +# Create swift user and group if they don't exist +id -u swift &>/dev/null || useradd --user-group swift + +# TODO(pbourke): should these go into the Dockerfile instead? +# TODO(pbourke): do we need a data vol for these? +mkdir -p ${SWIFT_PROXY_SIGNING_DIR} +chown swift: ${SWIFT_PROXY_SIGNING_DIR} +chmod 0700 ${SWIFT_PROXY_SIGNING_DIR} + +python /opt/kolla/build-swift-ring.py \ + -f ${SWIFT_OBJECT_SVC_RING_NAME} \ + -p ${SWIFT_OBJECT_SVC_RING_PART_POWER} \ + -r ${SWIFT_OBJECT_SVC_RING_REPLICAS} \ + -m ${SWIFT_OBJECT_SVC_RING_MIN_PART_HOURS} \ + -H ${SWIFT_OBJECT_SVC_RING_HOSTS} \ + -w ${SWIFT_OBJECT_SVC_RING_WEIGHTS} \ + -d ${SWIFT_OBJECT_SVC_RING_DEVICES} \ + -z ${SWIFT_OBJECT_SVC_RING_ZONES} + +python /opt/kolla/build-swift-ring.py \ + -f ${SWIFT_ACCOUNT_SVC_RING_NAME} \ + -p ${SWIFT_ACCOUNT_SVC_RING_PART_POWER} \ + -r ${SWIFT_ACCOUNT_SVC_RING_REPLICAS} \ + -m ${SWIFT_ACCOUNT_SVC_RING_MIN_PART_HOURS} \ + -H ${SWIFT_ACCOUNT_SVC_RING_HOSTS} \ + -w ${SWIFT_ACCOUNT_SVC_RING_WEIGHTS} \ + -d ${SWIFT_ACCOUNT_SVC_RING_DEVICES} \ + -z ${SWIFT_ACCOUNT_SVC_RING_ZONES} + +python /opt/kolla/build-swift-ring.py \ + -f ${SWIFT_CONTAINER_SVC_RING_NAME} \ + -p ${SWIFT_CONTAINER_SVC_RING_PART_POWER} \ + -r ${SWIFT_CONTAINER_SVC_RING_REPLICAS} \ + -m ${SWIFT_CONTAINER_SVC_RING_MIN_PART_HOURS} \ + -H ${SWIFT_CONTAINER_SVC_RING_HOSTS} \ + -w ${SWIFT_CONTAINER_SVC_RING_WEIGHTS} \ + -d ${SWIFT_CONTAINER_SVC_RING_DEVICES} \ + -z ${SWIFT_CONTAINER_SVC_RING_ZONES} + +exec $CMD $ARGS diff --git a/docker/common/swift/swift-proxy-server/start.sh b/docker/common/swift/swift-proxy-server/start.sh index 8957b5052..c1b5b29cd 100755 --- a/docker/common/swift/swift-proxy-server/start.sh +++ b/docker/common/swift/swift-proxy-server/start.sh @@ -1,8 +1,9 @@ #!/bin/bash + set -o errexit CMD="/usr/bin/swift-proxy-server" -ARGS="" +ARGS="/etc/swift/proxy-server.conf --verbose" # Loading common functions. source /opt/kolla/kolla-common.sh |
