aboutsummaryrefslogtreecommitdiff
path: root/docker/swift
diff options
context:
space:
mode:
authorSam Yaple <sam@yaple.net>2015-08-28 12:16:53 +0000
committerSam Yaple <sam@yaple.net>2015-08-28 13:33:50 +0000
commitcbd42ca6e90cca2ff4b84f5e4e46224e6455e8b2 (patch)
tree2e4256b6b7b8339da11b1d17250378596e61605b /docker/swift
parent3b5380ade021c9884551f427441cbfc0122eb0f0 (diff)
downloadkolla-cbd42ca6e90cca2ff4b84f5e4e46224e6455e8b2.tar.gz
kolla-cbd42ca6e90cca2ff4b84f5e4e46224e6455e8b2.zip
Move docker_templates to docker dir
Updated build.py to reflect this change. Deprecate --template option and make it a noop. Change-Id: I7cd98d1ee684a4c64984a49597159868152683b2 Partially-Implements: blueprint remove-docker-dir
Diffstat (limited to 'docker/swift')
-rw-r--r--docker/swift/swift-account-server/Dockerfile.j219
-rw-r--r--docker/swift/swift-account-server/config-external.sh19
-rwxr-xr-xdocker/swift/swift-account-server/start.sh16
-rw-r--r--docker/swift/swift-base/Dockerfile.j229
-rw-r--r--docker/swift/swift-base/build-swift-ring.py93
-rwxr-xr-xdocker/swift/swift-base/config-swift.sh3
-rw-r--r--docker/swift/swift-container-server/Dockerfile.j219
-rw-r--r--docker/swift/swift-container-server/config-external.sh21
-rwxr-xr-xdocker/swift/swift-container-server/start.sh16
-rw-r--r--docker/swift/swift-object-auditor/Dockerfile.j29
-rw-r--r--docker/swift/swift-object-auditor/config-external.sh18
-rwxr-xr-xdocker/swift/swift-object-auditor/start.sh16
-rw-r--r--docker/swift/swift-object-base/Dockerfile.j214
-rw-r--r--docker/swift/swift-object-base/config-swift-object.sh72
-rw-r--r--docker/swift/swift-object-expirer/Dockerfile.j220
-rw-r--r--docker/swift/swift-object-expirer/config-external.sh18
-rwxr-xr-xdocker/swift/swift-object-expirer/start.sh16
-rw-r--r--docker/swift/swift-object-replicator/Dockerfile.j29
-rw-r--r--docker/swift/swift-object-replicator/config-external.sh18
-rwxr-xr-xdocker/swift/swift-object-replicator/start.sh16
-rw-r--r--docker/swift/swift-object-server/Dockerfile.j29
-rw-r--r--docker/swift/swift-object-server/config-external.sh27
-rwxr-xr-xdocker/swift/swift-object-server/start.sh16
-rw-r--r--docker/swift/swift-object-updater/Dockerfile.j29
-rw-r--r--docker/swift/swift-object-updater/config-external.sh18
-rwxr-xr-xdocker/swift/swift-object-updater/start.sh16
-rw-r--r--docker/swift/swift-proxy-server/Dockerfile.j216
-rwxr-xr-xdocker/swift/swift-proxy-server/config-external.sh33
-rwxr-xr-xdocker/swift/swift-proxy-server/start.sh16
29 files changed, 621 insertions, 0 deletions
diff --git a/docker/swift/swift-account-server/Dockerfile.j2 b/docker/swift/swift-account-server/Dockerfile.j2
new file mode 100644
index 000000000..7320de9f4
--- /dev/null
+++ b/docker/swift/swift-account-server/Dockerfile.j2
@@ -0,0 +1,19 @@
+FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-swift-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net.kolla)
+
+{% if install_type == 'binary' %}
+ {% if base_distro in ['centos', 'fedora', 'oraclelinux'] %}
+
+RUN yum -y install \
+ openstack-swift-account \
+ && yum clean all
+
+ {% endif %}
+{% endif %}
+
+COPY start.sh /
+COPY config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
+
+{{ include_footer }}
diff --git a/docker/swift/swift-account-server/config-external.sh b/docker/swift/swift-account-server/config-external.sh
new file mode 100644
index 000000000..61adefcd0
--- /dev/null
+++ b/docker/swift/swift-account-server/config-external.sh
@@ -0,0 +1,19 @@
+#!/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.ring.gz" ]]; then
+ cp /opt/kolla/swift/account.ring.gz /etc/swift/account.ring.gz
+ chown swift: /etc/swift/account.ring.gz
+ chmod 0640 /etc/swift/account.ring.gz
+fi
+
+if [[ -f /opt/kolla/swift-account-server/account-server.conf ]]; then
+ cp /opt/kolla/swift-account-server/account-server.conf /etc/swift/
+ chown swift: /etc/swift/account-server.conf
+ chmod 0640 /etc/swift/account-server.conf
+fi
diff --git a/docker/swift/swift-account-server/start.sh b/docker/swift/swift-account-server/start.sh
new file mode 100755
index 000000000..402ee6f44
--- /dev/null
+++ b/docker/swift/swift-account-server/start.sh
@@ -0,0 +1,16 @@
+#!/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
+
+source /opt/kolla/config-swift.sh
+
+# Execute config strategy
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/swift/swift-base/Dockerfile.j2 b/docker/swift/swift-base/Dockerfile.j2
new file mode 100644
index 000000000..7102916f1
--- /dev/null
+++ b/docker/swift/swift-base/Dockerfile.j2
@@ -0,0 +1,29 @@
+FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net.kolla)
+
+{% if install_type == 'binary' %}
+ {% if base_distro in ['centos', 'fedora', 'oraclelinux'] %}
+
+RUN yum -y install openstack-swift && yum clean all
+
+ {% elif base_distro in ['ubuntu', 'debian'] %}
+
+RUN echo '{{ install_type}} not yet available for {{ base_distro }}' \
+ && /bin/false
+
+ {% endif %}
+
+{% elif install_type == 'source' %}
+
+ADD swift.tar /
+RUN ln -s /swift-* swift \
+ && useradd --user-group swift \
+ && pip --no-cache-dir install /swift \
+ && mkdir -p /etc/swift /var/log/swift /home/swift \
+ && cp -r /swift/etc/* /etc/swift/ \
+ && chown -R swift: /etc/swift /var/log/swift /home/swift
+
+{% endif %}
+
+COPY config-swift.sh build-swift-ring.py /opt/kolla/
+RUN mkdir /opt/swift
diff --git a/docker/swift/swift-base/build-swift-ring.py b/docker/swift/swift-base/build-swift-ring.py
new file mode 100644
index 000000000..d7386392d
--- /dev/null
+++ b/docker/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/swift/swift-base/config-swift.sh b/docker/swift/swift-base/config-swift.sh
new file mode 100755
index 000000000..b101b4e69
--- /dev/null
+++ b/docker/swift/swift-base/config-swift.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+chown -R swift: /srv/node
diff --git a/docker/swift/swift-container-server/Dockerfile.j2 b/docker/swift/swift-container-server/Dockerfile.j2
new file mode 100644
index 000000000..1a08c0f5d
--- /dev/null
+++ b/docker/swift/swift-container-server/Dockerfile.j2
@@ -0,0 +1,19 @@
+FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-swift-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net.kolla)
+
+{% if install_type == 'binary' %}
+ {% if base_distro in ['centos', 'fedora', 'oraclelinux'] %}
+
+RUN yum -y install \
+ openstack-swift-container \
+ && yum clean all
+
+ {% endif %}
+{% endif %}
+
+COPY start.sh /
+COPY config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
+
+{{ include_footer }}
diff --git a/docker/swift/swift-container-server/config-external.sh b/docker/swift/swift-container-server/config-external.sh
new file mode 100644
index 000000000..d81ba6cc4
--- /dev/null
+++ b/docker/swift/swift-container-server/config-external.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+OWNER="swift"
+
+if [[ -f "/opt/kolla/swift/swift.conf" ]]; then
+ cp /opt/kolla/swift/swift.conf /etc/swift/swift.conf
+ chown ${OWNER}: /etc/swift/swift.conf
+ chmod 0640 /etc/swift/swift.conf
+fi
+
+if [[ -f "/opt/kolla/swift/container.ring.gz" ]]; then
+ cp /opt/kolla/swift/container.ring.gz /etc/swift/container.ring.gz
+ chown ${OWNER}: /etc/swift/container.ring.gz
+ chmod 0640 /etc/swift/container.ring.gz
+fi
+
+if [[ -f "/opt/kolla/swift-container-server/container-server.conf" ]]; then
+ cp /opt/kolla/swift-container-server/container-server.conf /etc/swift/container-server.conf
+ chown ${OWNER}: /etc/swift/container-server.conf
+ chmod 0640 /etc/swift/container-server.conf
+fi
diff --git a/docker/swift/swift-container-server/start.sh b/docker/swift/swift-container-server/start.sh
new file mode 100755
index 000000000..78070ab29
--- /dev/null
+++ b/docker/swift/swift-container-server/start.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -o errexit
+
+CMD="/usr/bin/swift-container-server"
+ARGS="/etc/swift/container-server.conf --verbose"
+
+# Loading common functions.
+source /opt/kolla/kolla-common.sh
+
+source /opt/kolla/config-swift.sh
+
+# Execute config strategy
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/swift/swift-object-auditor/Dockerfile.j2 b/docker/swift/swift-object-auditor/Dockerfile.j2
new file mode 100644
index 000000000..ab8a7adee
--- /dev/null
+++ b/docker/swift/swift-object-auditor/Dockerfile.j2
@@ -0,0 +1,9 @@
+FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-swift-object-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net.kolla)
+
+COPY start.sh /
+COPY config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
+
+{{ include_footer }}
diff --git a/docker/swift/swift-object-auditor/config-external.sh b/docker/swift/swift-object-auditor/config-external.sh
new file mode 100644
index 000000000..0fa02e985
--- /dev/null
+++ b/docker/swift/swift-object-auditor/config-external.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+SOURCE="/opt/kolla/swift/swift.conf"
+TARGET="/etc/swift/swift.conf"
+SOURCE_OBJECT_SERVER="/opt/kolla/swift/object-server.conf"
+TARGET_OBJECT_SERVER="/etc/swift/object-server.conf"
+OWNER="swift"
+
+if [[ -f "$SOURCE" ]]; then
+ cp $SOURCE $TARGET
+ chown ${OWNER}: $TARGET
+ chmod 0640 $TARGET
+fi
+
+if [[ -f "$SOURCE_OBJECT_SERVER" ]]; then
+ cp $SOURCE_OBJECT_SERVER $TARGET_OBJECT_SERVER
+ chown ${OWNER}: $TARGET_OBJECT_SERVER
+ chmod 0640 $TARGET_OBJECT_SERVER
+fi
diff --git a/docker/swift/swift-object-auditor/start.sh b/docker/swift/swift-object-auditor/start.sh
new file mode 100755
index 000000000..6319eed6b
--- /dev/null
+++ b/docker/swift/swift-object-auditor/start.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -o errexit
+
+CMD="/usr/bin/swift-object-auditor"
+ARGS="/etc/swift/object-server.conf --verbose"
+
+# Loading common functions.
+source /opt/kolla/kolla-common.sh
+
+source /opt/kolla/config-swift.sh
+
+# Execute config strategy
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/swift/swift-object-base/Dockerfile.j2 b/docker/swift/swift-object-base/Dockerfile.j2
new file mode 100644
index 000000000..54997a114
--- /dev/null
+++ b/docker/swift/swift-object-base/Dockerfile.j2
@@ -0,0 +1,14 @@
+FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-swift-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net.kolla)
+
+{% if install_type == 'binary' %}
+ {% if base_distro in ['centos', 'fedora', 'oraclelinux'] %}
+
+RUN yum -y install \
+ openstack-swift-object \
+ && yum clean all
+
+ {% endif %}
+{% endif %}
+
+COPY config-swift-object.sh /opt/kolla/
diff --git a/docker/swift/swift-object-base/config-swift-object.sh b/docker/swift/swift-object-base/config-swift-object.sh
new file mode 100644
index 000000000..0d3d58dc3
--- /dev/null
+++ b/docker/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/swift/swift-object-expirer/Dockerfile.j2 b/docker/swift/swift-object-expirer/Dockerfile.j2
new file mode 100644
index 000000000..af9f3eb58
--- /dev/null
+++ b/docker/swift/swift-object-expirer/Dockerfile.j2
@@ -0,0 +1,20 @@
+FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-swift-object-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net.kolla)
+
+{% if install_type == 'binary' %}
+ {% if base_distro in ['centos', 'fedora', 'oraclelinux'] %}
+
+RUN yum -y install \
+ openstack-swift-proxy \
+ openstack-swift-container \
+ && yum clean all
+
+ {% endif %}
+{% endif %}
+
+COPY start.sh /
+COPY config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
+
+{{ include_footer }}
diff --git a/docker/swift/swift-object-expirer/config-external.sh b/docker/swift/swift-object-expirer/config-external.sh
new file mode 100644
index 000000000..ff2bcf9f5
--- /dev/null
+++ b/docker/swift/swift-object-expirer/config-external.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+SOURCE="/opt/kolla/swift/swift.conf"
+TARGET="/etc/swift/swift.conf"
+SOURCE_OBJECT_EXPIRER="/opt/kolla/swift/object-expirer.conf"
+TARGET_OBJECT_EXPIRER="/etc/swift/object-expirer.conf"
+OWNER="swift"
+
+if [[ -f "$SOURCE" ]]; then
+ cp $SOURCE $TARGET
+ chown ${OWNER}: $TARGET
+ chmod 0640 $TARGET
+fi
+
+if [[ -f "$SOURCE_OBJECT_EXPIRER" ]]; then
+ cp $SOURCE_OBJECT_EXPIRER $TARGET_OBJECT_EXPIRER
+ chown ${OWNER}: $TARGET_OBJECT_EXPIRER
+ chmod 0640 $TARGET_OBJECT_EXPIRER
+fi
diff --git a/docker/swift/swift-object-expirer/start.sh b/docker/swift/swift-object-expirer/start.sh
new file mode 100755
index 000000000..434e8dc49
--- /dev/null
+++ b/docker/swift/swift-object-expirer/start.sh
@@ -0,0 +1,16 @@
+#!/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
+
+source /opt/kolla/config-swift.sh
+
+# Execute config strategy
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/swift/swift-object-replicator/Dockerfile.j2 b/docker/swift/swift-object-replicator/Dockerfile.j2
new file mode 100644
index 000000000..ab8a7adee
--- /dev/null
+++ b/docker/swift/swift-object-replicator/Dockerfile.j2
@@ -0,0 +1,9 @@
+FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-swift-object-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net.kolla)
+
+COPY start.sh /
+COPY config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
+
+{{ include_footer }}
diff --git a/docker/swift/swift-object-replicator/config-external.sh b/docker/swift/swift-object-replicator/config-external.sh
new file mode 100644
index 000000000..0fa02e985
--- /dev/null
+++ b/docker/swift/swift-object-replicator/config-external.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+SOURCE="/opt/kolla/swift/swift.conf"
+TARGET="/etc/swift/swift.conf"
+SOURCE_OBJECT_SERVER="/opt/kolla/swift/object-server.conf"
+TARGET_OBJECT_SERVER="/etc/swift/object-server.conf"
+OWNER="swift"
+
+if [[ -f "$SOURCE" ]]; then
+ cp $SOURCE $TARGET
+ chown ${OWNER}: $TARGET
+ chmod 0640 $TARGET
+fi
+
+if [[ -f "$SOURCE_OBJECT_SERVER" ]]; then
+ cp $SOURCE_OBJECT_SERVER $TARGET_OBJECT_SERVER
+ chown ${OWNER}: $TARGET_OBJECT_SERVER
+ chmod 0640 $TARGET_OBJECT_SERVER
+fi
diff --git a/docker/swift/swift-object-replicator/start.sh b/docker/swift/swift-object-replicator/start.sh
new file mode 100755
index 000000000..203f8864d
--- /dev/null
+++ b/docker/swift/swift-object-replicator/start.sh
@@ -0,0 +1,16 @@
+#!/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
+
+source /opt/kolla/config-swift.sh
+
+# Execute config strategy
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/swift/swift-object-server/Dockerfile.j2 b/docker/swift/swift-object-server/Dockerfile.j2
new file mode 100644
index 000000000..ab8a7adee
--- /dev/null
+++ b/docker/swift/swift-object-server/Dockerfile.j2
@@ -0,0 +1,9 @@
+FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-swift-object-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net.kolla)
+
+COPY start.sh /
+COPY config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
+
+{{ include_footer }}
diff --git a/docker/swift/swift-object-server/config-external.sh b/docker/swift/swift-object-server/config-external.sh
new file mode 100644
index 000000000..a3fb1a2cc
--- /dev/null
+++ b/docker/swift/swift-object-server/config-external.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+OWNER="swift"
+
+if [[ -f "/opt/kolla/swift/swift.conf" ]]; then
+ cp /opt/kolla/swift/swift.conf /etc/swift/swift.conf
+ chown ${OWNER}: /etc/swift/swift.conf
+ chmod 0640 /etc/swift/swift.conf
+fi
+
+if [[ -f "/opt/kolla/swift/object.ring.gz" ]]; then
+ cp /opt/kolla/swift/object.ring.gz /etc/swift/object.ring.gz
+ chown ${OWNER}: /etc/swift/object.ring.gz
+ chmod 0640 /etc/swift/object.ring.gz
+fi
+
+if [[ -f "/opt/kolla/swift/container.ring.gz" ]]; then
+ cp /opt/kolla/swift/container.ring.gz /etc/swift/container.ring.gz
+ chown ${OWNER}: /etc/swift/container.ring.gz
+ chmod 0640 /etc/swift/container.ring.gz
+fi
+
+if [[ -f "/opt/kolla/swift-object-server/object-server.conf" ]]; then
+ cp /opt/kolla/swift-object-server/object-server.conf /etc/swift/object-server.conf
+ chown ${OWNER}: /etc/swift/object-server.conf
+ chmod 0640 /etc/swift/object-server.conf
+fi
diff --git a/docker/swift/swift-object-server/start.sh b/docker/swift/swift-object-server/start.sh
new file mode 100755
index 000000000..f2a32b4d3
--- /dev/null
+++ b/docker/swift/swift-object-server/start.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -o errexit
+
+CMD="/usr/bin/swift-object-server"
+ARGS="/etc/swift/object-server.conf --verbose"
+
+# Loading common functions.
+source /opt/kolla/kolla-common.sh
+
+source /opt/kolla/config-swift.sh
+
+# Execute config strategy
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/swift/swift-object-updater/Dockerfile.j2 b/docker/swift/swift-object-updater/Dockerfile.j2
new file mode 100644
index 000000000..ab8a7adee
--- /dev/null
+++ b/docker/swift/swift-object-updater/Dockerfile.j2
@@ -0,0 +1,9 @@
+FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-swift-object-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net.kolla)
+
+COPY start.sh /
+COPY config-external.sh /opt/kolla/
+
+CMD ["/start.sh"]
+
+{{ include_footer }}
diff --git a/docker/swift/swift-object-updater/config-external.sh b/docker/swift/swift-object-updater/config-external.sh
new file mode 100644
index 000000000..0fa02e985
--- /dev/null
+++ b/docker/swift/swift-object-updater/config-external.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+SOURCE="/opt/kolla/swift/swift.conf"
+TARGET="/etc/swift/swift.conf"
+SOURCE_OBJECT_SERVER="/opt/kolla/swift/object-server.conf"
+TARGET_OBJECT_SERVER="/etc/swift/object-server.conf"
+OWNER="swift"
+
+if [[ -f "$SOURCE" ]]; then
+ cp $SOURCE $TARGET
+ chown ${OWNER}: $TARGET
+ chmod 0640 $TARGET
+fi
+
+if [[ -f "$SOURCE_OBJECT_SERVER" ]]; then
+ cp $SOURCE_OBJECT_SERVER $TARGET_OBJECT_SERVER
+ chown ${OWNER}: $TARGET_OBJECT_SERVER
+ chmod 0640 $TARGET_OBJECT_SERVER
+fi
diff --git a/docker/swift/swift-object-updater/start.sh b/docker/swift/swift-object-updater/start.sh
new file mode 100755
index 000000000..744344f74
--- /dev/null
+++ b/docker/swift/swift-object-updater/start.sh
@@ -0,0 +1,16 @@
+#!/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
+
+source /opt/kolla/config-swift.sh
+
+# Execute config strategy
+set_configs
+
+exec $CMD $ARGS
diff --git a/docker/swift/swift-proxy-server/Dockerfile.j2 b/docker/swift/swift-proxy-server/Dockerfile.j2
new file mode 100644
index 000000000..54d024f8b
--- /dev/null
+++ b/docker/swift/swift-proxy-server/Dockerfile.j2
@@ -0,0 +1,16 @@
+FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-swift-base:{{ tag }}
+MAINTAINER Kolla Project (https://launchpad.net.kolla)
+
+{% if install_type == 'binary' %}
+ {% if base_distro in ['centos', 'fedora', 'oraclelinux'] %}
+
+RUN yum -y install openstack-swift-proxy && yum clean all
+
+ {% endif %}
+{% endif %}
+
+COPY ./start.sh /start.sh
+COPY config-external.sh /opt/kolla/
+CMD ["/start.sh"]
+
+{{ include_footer }}
diff --git a/docker/swift/swift-proxy-server/config-external.sh b/docker/swift/swift-proxy-server/config-external.sh
new file mode 100755
index 000000000..434cce7e5
--- /dev/null
+++ b/docker/swift/swift-proxy-server/config-external.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+OWNER="swift"
+
+if [[ -f "/opt/kolla/swift/swift.conf" ]]; then
+ cp /opt/kolla/swift/swift.conf /etc/swift/swift.conf
+ chown ${OWNER}: /etc/swift/swift.conf
+ chmod 0640 /etc/swift/swift.conf
+fi
+
+if [[ -f "/opt/kolla/swift/object.ring.gz" ]]; then
+ cp /opt/kolla/swift/object.ring.gz /etc/swift/object.ring.gz
+ chown ${OWNER}: /etc/swift/object.ring.gz
+ chmod 0640 /etc/swift/object.ring.gz
+fi
+
+if [[ -f "/opt/kolla/swift/container.ring.gz" ]]; then
+ cp /opt/kolla/swift/container.ring.gz /etc/swift/container.ring.gz
+ chown ${OWNER}: /etc/swift/container.ring.gz
+ chmod 0640 /etc/swift/container.ring.gz
+fi
+
+if [[ -f "/opt/kolla/swift/account.ring.gz" ]]; then
+ cp /opt/kolla/swift/account.ring.gz /etc/swift/account.ring.gz
+ chown ${OWNER}: /etc/swift/account.ring.gz
+ chmod 0640 /etc/swift/account.ring.gz
+fi
+
+if [[ -f "/opt/kolla/swift-proxy-server/proxy-server.conf" ]]; then
+ cp /opt/kolla/swift-proxy-server/proxy-server.conf /etc/swift/proxy-server.conf
+ chown ${OWNER}: /etc/swift/proxy-server.conf
+ chmod 0640 /etc/swift/proxy-server.conf
+fi
diff --git a/docker/swift/swift-proxy-server/start.sh b/docker/swift/swift-proxy-server/start.sh
new file mode 100755
index 000000000..99a142e52
--- /dev/null
+++ b/docker/swift/swift-proxy-server/start.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -o errexit
+
+CMD="/usr/bin/swift-proxy-server"
+ARGS="/etc/swift/proxy-server.conf --verbose"
+
+# Loading common functions.
+source /opt/kolla/kolla-common.sh
+
+source /opt/kolla/config-swift.sh
+
+# Execute config strategy
+set_configs
+
+exec $CMD $ARGS