From 9e420ba27eac22847870553c15b92ff499eef3aa Mon Sep 17 00:00:00 2001 From: Ryan Hallisey <rhalllise@redhat.com> Date: Mon, 6 Oct 2014 14:13:16 +0000 Subject: [PATCH] Initial setup for nova-controller Partial-blueprint: kube-nova-container Change-Id: Ib48e6318ae458bf03510725a220332d1920cbeae --- docker/nova-controller/nova-api/Dockerfile | 8 ++ docker/nova-controller/nova-api/build | 1 + docker/nova-controller/nova-api/start.sh | 41 ++++++++ .../nova-controller/nova-conductor/Dockerfile | 8 ++ docker/nova-controller/nova-conductor/build | 1 + .../nova-controller/nova-conductor/start.sh | 41 ++++++++ docker/nova-controller/nova-controller.json | 98 +++++++++++++++++++ .../nova-controller/Dockerfile | 8 ++ docker/nova-controller/nova-controller/build | 1 + .../nova-controller/nova-scheduler/Dockerfile | 8 ++ docker/nova-controller/nova-scheduler/build | 1 + .../nova-controller/nova-scheduler/start.sh | 41 ++++++++ 12 files changed, 257 insertions(+) create mode 100644 docker/nova-controller/nova-api/Dockerfile create mode 120000 docker/nova-controller/nova-api/build create mode 100644 docker/nova-controller/nova-api/start.sh create mode 100644 docker/nova-controller/nova-conductor/Dockerfile create mode 120000 docker/nova-controller/nova-conductor/build create mode 100644 docker/nova-controller/nova-conductor/start.sh create mode 100644 docker/nova-controller/nova-controller.json create mode 100644 docker/nova-controller/nova-controller/Dockerfile create mode 120000 docker/nova-controller/nova-controller/build create mode 100644 docker/nova-controller/nova-scheduler/Dockerfile create mode 120000 docker/nova-controller/nova-scheduler/build create mode 100644 docker/nova-controller/nova-scheduler/start.sh diff --git a/docker/nova-controller/nova-api/Dockerfile b/docker/nova-controller/nova-api/Dockerfile new file mode 100644 index 000000000..d43db5840 --- /dev/null +++ b/docker/nova-controller/nova-api/Dockerfile @@ -0,0 +1,8 @@ +FROM kollaglue/fedora-rdo-nova-controller +MAINTAINER Ryan Hallisey <rhallise@redhat.com> + +RUN yum -y install \ + openstack-nova-api && yum clean all + +ADD ./start.sh /start.sh +CMD ["/start.sh"] diff --git a/docker/nova-controller/nova-api/build b/docker/nova-controller/nova-api/build new file mode 120000 index 000000000..43944faa0 --- /dev/null +++ b/docker/nova-controller/nova-api/build @@ -0,0 +1 @@ +../../../tools/build-docker-image \ No newline at end of file diff --git a/docker/nova-controller/nova-api/start.sh b/docker/nova-controller/nova-api/start.sh new file mode 100644 index 000000000..ed2c11109 --- /dev/null +++ b/docker/nova-controller/nova-api/start.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +: ${NOVA_DB_USER:=nova} +: ${NOVA_DB_NAME:=nova} +: ${KEYSTONE_AUTH_PROTOCOL:=http} +: ${NOVA_KEYSTONE_USER:=admin} +: ${NOVA_ADMIN_PASSWORD:=kolla} +: ${ADMIN_TENANT_NAME:=admin} + +if ! [ "$KEYSTONE_ADMIN_TOKEN" ]; then + echo "*** Missing KEYSTONE_ADMIN_TOKEN" >&2 + exit 1 +fi + +if ! [ "$DB_ROOT_PASSWORD" ]; then + echo "*** Missing DB_ROOT_PASSWORD" >&2 + exit 1 +fi + +if ! [ "$NOVA_DB_PASSWORD" ]; then + NOVA_DB_PASSWORD=$(openssl rand -hex 15) + export NOVA_DB_PASSWORD +fi + +sh /opt/nova/config-nova.sh api + +mysql -h ${MARIADBMASTER_PORT_3306_TCP_ADDR} -u root \ + -p${DB_ROOT_PASSWORD} mysql <<EOF +CREATE DATABASE IF NOT EXISTS ${NOVA_DB_NAME}; +GRANT ALL PRIVILEGES ON nova* TO + '${NOVA_DB_USER}'@'%' IDENTIFIED BY '${NOVA_DB_PASSWORD}' +EOF + +export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}" +export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONEMASTER_35357_PORT_35357_TCP_ADDR}:35357/v2.0" + +/usr/bin/keystone user-create --name ${NOVA_KEYSTONE_USER} --pass ${NOVA_ADMIN_PASSWORD} +/usr/bin/keystone role-create --name ${NOVA_KEYSTONE_USER} +/usr/bin/keystone user-role-add --user ${NOVA_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME} + +exec /usr/bin/nova-api diff --git a/docker/nova-controller/nova-conductor/Dockerfile b/docker/nova-controller/nova-conductor/Dockerfile new file mode 100644 index 000000000..32d1e71ee --- /dev/null +++ b/docker/nova-controller/nova-conductor/Dockerfile @@ -0,0 +1,8 @@ +FROM kollaglue/fedora-rdo-nova-controller +MAINTAINER Ryan Hallisey <rhallisey@redhat.com> + +RUN yum -y install \ + openstack-nova-conductor && yum clean all + +ADD ./start.sh /start.sh +CMD ["/start.sh"] diff --git a/docker/nova-controller/nova-conductor/build b/docker/nova-controller/nova-conductor/build new file mode 120000 index 000000000..43944faa0 --- /dev/null +++ b/docker/nova-controller/nova-conductor/build @@ -0,0 +1 @@ +../../../tools/build-docker-image \ No newline at end of file diff --git a/docker/nova-controller/nova-conductor/start.sh b/docker/nova-controller/nova-conductor/start.sh new file mode 100644 index 000000000..38775c3d8 --- /dev/null +++ b/docker/nova-controller/nova-conductor/start.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +: ${NOVA_DB_USER:=nova} +: ${NOVA_DB_NAME:=nova} +: ${KEYSTONE_AUTH_PROTOCOL:=http} +: ${NOVA_KEYSTONE_USER:=admin} +: ${NOVA_ADMIN_PASSWORD:=kolla} +: ${ADMIN_TENANT_NAME:=admin} + +if ! [ "$KEYSTONE_ADMIN_TOKEN" ]; then + echo "*** Missing KEYSTONE_ADMIN_TOKEN" >&2 + exit 1 +fi + +if ! [ "$DB_ROOT_PASSWORD" ]; then + echo "*** Missing DB_ROOT_PASSWORD" >&2 + exit 1 +fi + +if ! [ "$NOVA_DB_PASSWORD" ]; then + NOVA_DB_PASSWORD=$(openssl rand -hex 15) + export NOVA_DB_PASSWORD +fi + +sh /opt/nova/config-nova.sh conductor + +mysql -h ${MARIADBMASTER_PORT_3306_TCP_ADDR} -u root \ + -p${DB_ROOT_PASSWORD} mysql <<EOF +CREATE DATABASE IF NOT EXISTS ${NOVA_DB_NAME}; +GRANT ALL PRIVILEGES ON nova* TO + '${NOVA_DB_USER}'@'%' IDENTIFIED BY '${NOVA_DB_PASSWORD}' +EOF + +export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}" +export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONEMASTER_35357_PORT_35357_TCP_ADDR}:35357/v2.0" + +/usr/bin/keystone user-create --name ${NOVA_KEYSTONE_USER} --pass ${NOVA_ADMIN_PASSWORD} +/usr/bin/keystone role-create --name ${NOVA_KEYSTONE_USER} +/usr/bin/keystone user-role-add --user ${NOVA_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME} + +exec /usr/bin/nova-conductor diff --git a/docker/nova-controller/nova-controller.json b/docker/nova-controller/nova-controller.json new file mode 100644 index 000000000..5faae5ca9 --- /dev/null +++ b/docker/nova-controller/nova-controller.json @@ -0,0 +1,98 @@ +{ + "id": "nova", + "desiredState": { + "manifest": { + "version": "v1beta1", + "id": "nova-1", + "containers": [ + { + "name": "nova-controller", + "image": "kollaglue/fedora-rdo-nova-controller", + "ports": [ + {"containerPort": 9292} + ], + "env": [ + { + "name": "DB_ROOT_PASSWORD", + "value": "password" + }, + { + "name": "NOVA_DB_PASSWORD", + "value": "novadbpassword" + }, + { + "name": "KEYSTONE_ADMIN_TOKEN", + "value": "ADMINTOKEN" + } + ] + }, + { + "name": "nova-conductor", + "image": "kollaglue/fedora-rdo-nova-conductor", + "ports": [ + {"containerPort": 9292} + ], + "env": [ + { + "name": "DB_ROOT_PASSWORD", + "value": "password" + }, + { + "name": "NOVA_DB_PASSWORD", + "value": "novadbpassword" + }, + { + "name": "KEYSTONE_ADMIN_TOKEN", + "value": "ADMINTOKEN" + } + ] + }, + { + "name": "nova-scheduler", + "image": "kollaglue/fedora-rdo-nova-scheduler", + "ports": [ + {"containerPort": 9292} + ], + "env": [ + { + "name": "DB_ROOT_PASSWORD", + "value": "password" + }, + { + "name": "NOVA_DB_PASSWORD", + "value": "novadbpassword" + }, + { + "name": "KEYSTONE_ADMIN_TOKEN", + "value": "ADMINTOKEN" + } + ] + }, + { + "name": "nova-api", + "image": "kollaglue/fedora-rdo-nova-api", + "ports": [ + {"containerPort": 9292} + ], + "env": [ + { + "name": "DB_ROOT_PASSWORD", + "value": "password" + }, + { + "name": "NOVA_DB_PASSWORD", + "value": "novadbpassword" + }, + { + "name": "KEYSTONE_ADMIN_TOKEN", + "value": "ADMINTOKEN" + } + ] + } + ] + } + }, + "labels": { + "name": "nova-controller" + } +} diff --git a/docker/nova-controller/nova-controller/Dockerfile b/docker/nova-controller/nova-controller/Dockerfile new file mode 100644 index 000000000..279034824 --- /dev/null +++ b/docker/nova-controller/nova-controller/Dockerfile @@ -0,0 +1,8 @@ +FROM kollaglue/fedora-rdo-base +MAINTAINER Ryan Hallisey <rhallisey@redhat.com> + +RUN yum -y install openstack-nova-common \ + install python-keystoneclient \ + install python-nova \ + install python-oslo-messaging \ + install python-websockify && yum clean all diff --git a/docker/nova-controller/nova-controller/build b/docker/nova-controller/nova-controller/build new file mode 120000 index 000000000..43944faa0 --- /dev/null +++ b/docker/nova-controller/nova-controller/build @@ -0,0 +1 @@ +../../../tools/build-docker-image \ No newline at end of file diff --git a/docker/nova-controller/nova-scheduler/Dockerfile b/docker/nova-controller/nova-scheduler/Dockerfile new file mode 100644 index 000000000..8b28875fc --- /dev/null +++ b/docker/nova-controller/nova-scheduler/Dockerfile @@ -0,0 +1,8 @@ +FROM kollaglue/fedora-rdo-nova-controller +MAINTAINER Ryan Hallisey <rhallise@redhat.com> + +RUN yum -y install \ + openstack-nova-scheduler && yum clean all + +ADD ./start.sh /start.sh +CMD ["/start.sh"] diff --git a/docker/nova-controller/nova-scheduler/build b/docker/nova-controller/nova-scheduler/build new file mode 120000 index 000000000..43944faa0 --- /dev/null +++ b/docker/nova-controller/nova-scheduler/build @@ -0,0 +1 @@ +../../../tools/build-docker-image \ No newline at end of file diff --git a/docker/nova-controller/nova-scheduler/start.sh b/docker/nova-controller/nova-scheduler/start.sh new file mode 100644 index 000000000..8ca13b66e --- /dev/null +++ b/docker/nova-controller/nova-scheduler/start.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +: ${NOVA_DB_USER:=nova} +: ${NOVA_DB_NAME:=nova} +: ${KEYSTONE_AUTH_PROTOCOL:=http} +: ${NOVA_KEYSTONE_USER:=admin} +: ${NOVA_ADMIN_PASSWORD:=kolla} +: ${ADMIN_TENANT_NAME:=admin} + +if ! [ "$KEYSTONE_ADMIN_TOKEN" ]; then + echo "*** Missing KEYSTONE_ADMIN_TOKEN" >&2 + exit 1 +fi + +if ! [ "$DB_ROOT_PASSWORD" ]; then + echo "*** Missing DB_ROOT_PASSWORD" >&2 + exit 1 +fi + +if ! [ "$NOVA_DB_PASSWORD" ]; then + NOVA_DB_PASSWORD=$(openssl rand -hex 15) + export NOVA_DB_PASSWORD +fi + +sh /opt/nova/config-nova.sh scheduler + +mysql -h ${MARIADBMASTER_PORT_3306_TCP_ADDR} -u root \ + -p${DB_ROOT_PASSWORD} mysql <<EOF +CREATE DATABASE IF NOT EXISTS ${NOVA_DB_NAME}; +GRANT ALL PRIVILEGES ON nova* TO + '${NOVA_DB_USER}'@'%' IDENTIFIED BY '${NOVA_DB_PASSWORD}' +EOF + +export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}" +export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONEMASTER_35357_PORT_35357_TCP_ADDR}:35357/v2.0" + +/usr/bin/keystone user-create --name ${NOVA_KEYSTONE_USER} --pass ${NOVA_ADMIN_PASSWORD} +/usr/bin/keystone role-create --name ${NOVA_KEYSTONE_USER} +/usr/bin/keystone user-role-add --user ${NOVA_KEYSTONE_USER} --role admin --tenant ${ADMIN_TENANT_NAME} + +exec /usr/bin/nova-scheduler -- GitLab