aboutsummaryrefslogtreecommitdiff
path: root/docker/centos/binary/base
diff options
context:
space:
mode:
Diffstat (limited to 'docker/centos/binary/base')
-rw-r--r--docker/centos/binary/base/Dockerfile117
l---------docker/centos/binary/base/build1
l---------[-rw-r--r--]docker/centos/binary/base/kolla-common.sh171
l---------[-rwxr-xr-x]docker/centos/binary/base/service_hosts.sh46
4 files changed, 120 insertions, 215 deletions
diff --git a/docker/centos/binary/base/Dockerfile b/docker/centos/binary/base/Dockerfile
new file mode 100644
index 000000000..c929d7a55
--- /dev/null
+++ b/docker/centos/binary/base/Dockerfile
@@ -0,0 +1,117 @@
+FROM centos
+MAINTAINER Kolla Project (https://launchpad.net/kolla)
+
+# Set up repositories
+# This repository provides all dependencies used by RDO OpenStack
+RUN yum install -y https://rdoproject.org/repos/openstack-kilo/rdo-release-kilo.rpm
+# This repository provides latest packages built from trunk master into RPMs
+RUN curl http://trunk.rdoproject.org/centos70/current/delorean.repo -o /etc/yum.repos.d/delorean-current.repo
+# This repository provides crux which permits idempotent operation of RDO
+RUN curl https://copr.fedoraproject.org/coprs/sdake/crux/repo/epel-7/sdake-crux-epel-7.repo -o /etc/yum.repos.d/sdake-crux-epel-7.repo
+# This repository turns off auth in PAM so we can operate on Ubuntu 14.04
+RUN curl https://copr.fedoraproject.org/coprs/sdake/pam.noaudit/repo/epel-7/sdake-pam.noaudit-epel-7.repo -o /etc/yum.repos.d/sdake-pam.noaudit-epel-7.repo
+
+# CentOS 7.1 workaround for conflicting packages with libvirt
+RUN rpm -e --nodeps systemd-container systemd-container-libs
+RUN rpm -e --nodeps yum-plugin-fastestmirror
+RUN yum -d 10 -y install systemd systemd-libs systemd-devel && yum clean all
+
+RUN yum install -y epel-release && yum clean all
+
+# Update packages
+RUN yum update -y && yum clean all
+
+# Install base packages
+RUN yum install -y \
+ crux \
+ mariadb \
+ mariadb-libs \
+ openssl \
+ openstack-utils \
+ pyparsing \
+ python-alembic \
+ python-amqp \
+ python-amqplib \
+ python-anyjson \
+ python-boto \
+ python-cheetah \
+ python-cliff \
+ python-cmd2 \
+ python-croniter \
+ python-crypto \
+ python-d2to1 \
+ python-docutils \
+ python-dogpile-cache \
+ python-dogpile-core \
+ python-empy \
+ python-eventlet \
+ python-flask \
+ python-futures \
+ python-greenlet \
+ python-httplib2 \
+ python-iso8601 \
+ python-itsdangerous \
+ python-jinja2 \
+ python-jsonpatch \
+ python-jsonpath-rw \
+ python-jsonpointer \
+ python-jsonschema \
+ python-keyring \
+ python-kombu \
+ python-ldap \
+ python-lesscpy \
+ python-lockfile \
+ python-lxml \
+ python-markdown \
+ python-memcached \
+ python-migrate \
+ python-msgpack \
+ python-netifaces \
+ python-networkx \
+ python-oauthlib \
+ python-oslo-config \
+ python-oslo-messaging \
+ python-oslo-rootwrap \
+ python-paramiko \
+ python-passlib \
+ python-paste-deploy \
+ python-pbr \
+ python-pecan \
+ python-ply \
+ python-prettytable \
+ python-psutil \
+ python-pycadf \
+ python-pygments \
+ python-pymongo \
+ python-qpid \
+ python-repoze-lru \
+ python-requests \
+ python-routes \
+ python-simplegeneric \
+ python-simplejson \
+ python-singledispatch \
+ python-six \
+ python-sqlalchemy \
+ python-stevedore \
+ python-taskflow \
+ python-versiontools \
+ python-warlock \
+ python-webob \
+ python-websockify \
+ python-webtest \
+ python-werkzeug \
+ python-wsme \
+ && yum clean all
+
+# This is dirty like zebra. This works around a bug in Ubuntu 14.04 LTS. The
+# --net=host option does not work on ubuntu 14.04 because of a kernel bug. One
+# workaround is to buid pam without authentication.
+# See:
+# https://registry.hub.docker.com/u/sequenceiq/pam/
+#
+RUN rpm -e --nodeps pam
+RUN yum -y install pam+noaudit && yum clean all
+# End dirty like zebra
+
+RUN mkdir -p /opt/kolla
+COPY service_hosts.sh kolla-common.sh /opt/kolla/
diff --git a/docker/centos/binary/base/build b/docker/centos/binary/base/build
new file mode 120000
index 000000000..8d652f7ee
--- /dev/null
+++ b/docker/centos/binary/base/build
@@ -0,0 +1 @@
+../../../../tools/build-docker-image \ 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 8c2ef5ec1..380efbc3d 100644..120000
--- a/docker/centos/binary/base/kolla-common.sh
+++ b/docker/centos/binary/base/kolla-common.sh
@@ -1,170 +1 @@
-#!/bin/bash
-
-. /opt/kolla/service_hosts.sh
-
-# Set some generally useful defaults.
-MY_IP=$(ip route get $(ip route | awk '$1 == "default" {print $3}') |
- awk '$4 == "src" {print $5}')
-
-: ${PUBLIC_IP:=${MY_IP}}
-
-# Iterate over a list of variable names and exit if one is
-# undefined.
-check_required_vars() {
- for var in $*; do
- if [ -z "${!var}" ]; then
- echo "ERROR: missing $var" >&2
- exit 1
- fi
- done
-}
-
-# The usage of the wait_for function looks like the following
-# wait_for LOOPS_NUMBER SLEEP_TIME ARGS
-#
-# The ARGS are read and concatenated together into a single command and the
-# command is executed in a loop until it succeeds or reaches the max number of
-# attempts (LOOPS_NUMBER).
-#
-# Optional variables SUCCESSFUL_MATCH_OUTPUT and FAIL_MATCH_OUTPUT variable may
-# also be set to control if the loop exits early if the commands stdout/stderr
-# matches the supplied regex string. Consider using the `wait_for_output` and
-# `wait_for_output_unless` functions in case there is a need to check for the
-# command output.
-#
-# The script exits on failure, either when output contains string identified as
-# failure, or when it reaches a timeout.
-#
-# Examples:
-# wait_for 30 10 ping -c 1 192.0.2.2
-# wait_for 10 1 ls file_we_are_waiting_for
-# wait_for 10 3 date \| grep 8
-wait_for() {
- local loops=${1:-""}
- local sleeptime=${2:-""}
- FAIL_MATCH_OUTPUT=${FAIL_MATCH_OUTPUT:-""}
- SUCCESSFUL_MATCH_OUTPUT=${SUCCESSFUL_MATCH_OUTPUT:-""}
- shift 2 || true
- local command="$@"
-
- if [ -z "$loops" -o -z "$sleeptime" -o -z "$command" ]; then
- echo "wait_for is missing a required parameter"
- exit 1
- fi
-
- local i=0
- while [ $i -lt $loops ]; do
- i=$((i + 1))
- local status=0
- local output=$(eval $command 2>&1) || status=$?
- if [[ -n "$SUCCESSFUL_MATCH_OUTPUT" ]] \
- && [[ $output =~ $SUCCESSFUL_MATCH_OUTPUT ]]; then
- return 0
- elif [[ -n "$FAIL_MATCH_OUTPUT" ]] \
- && [[ $output =~ $FAIL_MATCH_OUTPUT ]]; then
- echo "Command output matched '$FAIL_MATCH_OUTPUT'."
- exit 1
- elif [[ -z "$SUCCESSFUL_MATCH_OUTPUT" ]] && [[ $status -eq 0 ]]; then
- return 0
- fi
- sleep $sleeptime
- done
- local seconds=$((loops * sleeptime))
- printf 'Timing out after %d seconds:\ncommand=%s\nOUTPUT=%s\n' \
- "$seconds" "$command" "$output"
- exit 1
-}
-
-# Helper function to `wait_for` that only succeeds when the given regex is
-# matching the command's output. Exit early with a failure when the second
-# supplied regexp is matching the output.
-#
-# Example:
-# wait_for_output_unless CREATE_COMPLETE CREATE_FAIL 30 10 heat stack-show undercloud
-wait_for_output_unless() {
- SUCCESSFUL_MATCH_OUTPUT=$1
- FAIL_MATCH_OUTPUT=$2
- shift 2
- wait_for $@
- local status=$?
- unset SUCCESSFUL_MATCH_OUTPUT
- unset FAIL_MATCH_OUTPUT
- return $status
-}
-
-# Helper function to `wait_for` that only succeeds when the given regex is
-# matching the command's output.
-#
-# Example:
-# wait_for_output CREATE_COMPLETE 30 10 heat stack-show undercloud
-wait_for_output() {
- local expected_output=$1
- shift
- wait_for_output_unless $expected_output '' $@
-}
-
-# Check if we receive a successful response from corresponding OpenStack
-# service endpoint.
-check_for_os_service_endpoint() {
- local name=$1
- local host_var=$2
- local port_var=$3
- local api_version=$4
-
- check_required_vars $host_var $port_var
-
- local endpoint="http://${!host_var}:${!port_var}/$api_version"
-
- curl -sf -o /dev/null "$endpoint" || {
- echo "ERROR: $name is not available @ $endpoint" >&2
- return 1
- }
-
- echo "$name is active @ $endpoint"
-}
-
-check_for_os_service_running() {
- local service=$1
- local args=
- case $service in
- ("glance") args="GLANCE_API_SERVICE_HOST GLANCE_API_SERVICE_PORT" ;;
- ("keystone") args="KEYSTONE_PUBLIC_SERVICE_HOST KEYSTONE_PUBLIC_SERVICE_PORT v2.0" ;;
- ("neutron") args="NEUTRON_SERVER_SERVICE_HOST NEUTRON_SERVER_SERVICE_PORT" ;;
- ("nova") args="NOVA_API_SERVICE_HOST NOVA_API_SERVICE_PORT" ;;
- (*)
- echo "Unknown service $service"
- return 1 ;;
- esac
- check_for_os_service_endpoint $service $args
-}
-
-fail_unless_os_service_running() {
- check_for_os_service_running $@ || exit $?
-}
-
-# Check if we receive a successful response from the database server.
-# Optionally takes a database name to check for. Defaults to 'mysql'.
-check_for_db() {
- local database=${1:-mysql}
- check_required_vars MARIADB_SERVICE_HOST DB_ROOT_PASSWORD
-
- mysql -h ${MARIADB_SERVICE_HOST} -u root -p"${DB_ROOT_PASSWORD}" \
- -e "select 1" $database > /dev/null 2>&1 || {
- echo "ERROR: database $database is not available @ $MARIADB_SERVICE_HOST" >&2
- return 1
- }
-
- echo "database is active @ ${MARIADB_SERVICE_HOST}"
-}
-
-fail_unless_db() {
- check_for_db $@ || exit $?
-}
-
-# Dump shell environment to a file
-dump_vars() {
- set -o posix
- set > /pid_$$_vars.sh
- set +o posix
-}
-
+../../../common/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 c3006f720..777b7334d 100755..120000
--- a/docker/centos/binary/base/service_hosts.sh
+++ b/docker/centos/binary/base/service_hosts.sh
@@ -1,45 +1 @@
-#!/bin/bash
-
-# Kubernetes currently creates FOO_SERVICE_HOST and FOO_SERVICE_PORT env vars
-# as part of starting the containers. However this is not done when starting
-# them with plain docker. Defaulting variables to their common version if
-# they're not already set allows the usage of --link in plain 'docker run' to
-# wire together containers.
-
-: ${BARBICAN_ADMIN_SERVICE_HOST:=$BARBICAN_ADMIN_PORT_9312_TCP_ADDR}
-: ${BARBICAN_ADMIN_SERVICE_PORT:=9312}
-: ${BARBICAN_PUBLIC_SERVICE_HOST:=$BARBICAN_PUBLIC_PORT_9311_TCP_ADDR}
-: ${BARBICAN_PUBLIC_SERVICE_PORT:=9311}
-: ${CEILOMETER_API_SERVICE_HOST:=$CEILOMETER_API_PORT_8777_TCP_ADDR}
-: ${CEILOMETER_API_SERVICE_PORT:=8777}
-: ${GLANCE_API_SERVICE_HOST:=$GLANCE_API_PORT_9292_TCP_ADDR}
-: ${GLANCE_API_SERVICE_PORT:=9292}
-: ${GLANCE_REGISTRY_SERVICE_HOST:=$GLANCE_REGISTRY_PORT_9191_TCP_ADDR}
-: ${GLANCE_REGISTRY_SERVICE_PORT:=9191}
-: ${HEAT_API_SERVICE_HOST:=$HEAT_API_PORT_8004_TCP_ADDR}
-: ${HEAT_API_SERVICE_PORT:=8004}
-: ${HORIZON_SERVICE_HOST:=$HORIZON_PORT_80_TCP_ADDR}
-: ${HORIZON_SERVICE_PORT:=80}
-: ${KEYSTONE_ADMIN_SERVICE_HOST:=$KEYSTONE_PORT_35357_TCP_ADDR}
-: ${KEYSTONE_ADMIN_SERVICE_PORT:=35357}
-: ${KEYSTONE_PUBLIC_SERVICE_HOST:=$KEYSTONE_PORT_5000_TCP_ADDR}
-: ${KEYSTONE_PUBLIC_SERVICE_PORT:=5000}
-: ${MARIADB_SERVICE_HOST:=$MARIADB_PORT_3306_TCP_ADDR}
-: ${MARIADB_SERVICE_PORT:=3306}
-: ${MONGODB_SERVICE_HOST:=$MONGODB_PORT_27017_TCP_ADDR}
-: ${MONGODB_SERVICE_PORT:=27017}
-: ${NEUTRON_SERVER_SERVICE_HOST:=$NEUTRON_SERVER_PORT_9696_TCP_ADDR}
-: ${NEUTRON_SERVER_SERVICE_PORT:=9696}
-: ${NOVA_API_SERVICE_HOST:=$NOVA_API_PORT_8774_TCP_ADDR}
-: ${NOVA_API_SERVICE_PORT:=8774}
-: ${NOVA_EC2_API_SERVICE_HOST:=$NOVA_EC2_API_PORT_8773_TCP_ADDR}
-: ${NOVA_EC2_API_SERVICE_PORT:=8773}
-: ${NOVA_LIBVIRT_SERVICE_HOST:=$NOVA_LIBVIRT_PORT_16509_TCP_ADDR}
-: ${NOVA_LIBVIRT_SERVICE_PORT:=16509}
-: ${NOVA_METADATA_API_SERVICE_HOST:=$NOVA_METADATA_API_PORT_8775_TCP_ADDR}
-: ${NOVA_METADATA_API_SERVICE_PORT:=8775}
-: ${RABBITMQ_SERVICE_HOST:=$RABBITMQ_PORT_5672_TCP_ADDR}
-: ${RABBITMQ_SERVICE_PORT:=5672}
-: ${ZAQAR_SERVER_SERVICE_HOST:=$ZAQAR_SERVER_PORT_8888_TCP_ADDR}
-: ${ZAQAR_SERVER_SERVICE_PORT:=8888}
-
+../../../common/service_hosts.sh \ No newline at end of file