diff --git a/README.md b/README.md index 7c1c3e7edf85614362313cdb7c3f792f755c59e4..3d52602d3719ed43b6d4123d2dc498b26caf44b9 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ services: * Ceilometer * Horizon * Zaqar +* Magnum ``` $ sudo docker search kollaglue diff --git a/compose/magnum-api-conductor.yml b/compose/magnum-api-conductor.yml new file mode 100644 index 0000000000000000000000000000000000000000..b7da90ef449d66c2a7b29ccb70900f1a979620b1 --- /dev/null +++ b/compose/magnum-api-conductor.yml @@ -0,0 +1,14 @@ +magnumapi: + image: kollaglue/centos-rdo-magnum-api:kilo + name: magnum-api + net: "host" + restart: always + env_file: + - openstack.env +magnumconductor: + image: kollaglue/centos-rdo-magnum-conductor:kilo + name: magnum-conductor + net: "host" + restart: always + env_file: + - openstack.env diff --git a/docker/magnum/magnum-api/Dockerfile b/docker/magnum/magnum-api/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..84efa2a92da75e33c60e6b1828002d080516074c --- /dev/null +++ b/docker/magnum/magnum-api/Dockerfile @@ -0,0 +1,11 @@ +FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%magnum-base:%%KOLLA_TAG%% +MAINTAINER Kolla Project (https://launchpad.net/kolla) + +RUN yum -y install \ + openstack-magnum-api \ + && yum clean all + +ADD ./start.sh /start.sh +ADD ./check.sh /check.sh + +CMD ["/start.sh"] diff --git a/docker/magnum/magnum-api/build b/docker/magnum/magnum-api/build new file mode 120000 index 0000000000000000000000000000000000000000..43944faa006f278c2090cfeeb7397fc7cd1fc6a4 --- /dev/null +++ b/docker/magnum/magnum-api/build @@ -0,0 +1 @@ +../../../tools/build-docker-image \ No newline at end of file diff --git a/docker/magnum/magnum-api/check.sh b/docker/magnum/magnum-api/check.sh new file mode 100755 index 0000000000000000000000000000000000000000..ee03dc6d23e3488433ffda423f567aabda4f9e73 --- /dev/null +++ b/docker/magnum/magnum-api/check.sh @@ -0,0 +1,16 @@ +#!/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 diff --git a/docker/magnum/magnum-api/start.sh b/docker/magnum/magnum-api/start.sh new file mode 100755 index 0000000000000000000000000000000000000000..00a51b3cdfa31b34cc9afecdd3c8e2399f269c21 --- /dev/null +++ b/docker/magnum/magnum-api/start.sh @@ -0,0 +1,27 @@ +#!/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 diff --git a/docker/magnum/magnum-base/Dockerfile b/docker/magnum/magnum-base/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..c9c3db08b707edf2f80ce8c70d358198c24c5c83 --- /dev/null +++ b/docker/magnum/magnum-base/Dockerfile @@ -0,0 +1,9 @@ +FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base:%%KOLLA_TAG%% +MAINTAINER Kolla Project (https://launchpad.net/kolla) + +# Magnum is not yet in upstream RDO packaging + +RUN curl https://copr.fedoraproject.org/coprs/sdake/openstack-magnum/repo/epel-7/sdake-openstack-magnum-epel-7.repo -o /etc/yum.repos.d/sdake-openstack-magnum-epel-7.repo + +RUN mkdir -p /opt/kolla +COPY config-magnum.sh /opt/kolla/config-magnum.sh diff --git a/docker/magnum/magnum-base/build b/docker/magnum/magnum-base/build new file mode 120000 index 0000000000000000000000000000000000000000..43944faa006f278c2090cfeeb7397fc7cd1fc6a4 --- /dev/null +++ b/docker/magnum/magnum-base/build @@ -0,0 +1 @@ +../../../tools/build-docker-image \ No newline at end of file diff --git a/docker/magnum/magnum-base/config-magnum.sh b/docker/magnum/magnum-base/config-magnum.sh new file mode 100755 index 0000000000000000000000000000000000000000..03599d359eb2c874e298443c891e7d7155225234 --- /dev/null +++ b/docker/magnum/magnum-base/config-magnum.sh @@ -0,0 +1,46 @@ +#!/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} diff --git a/docker/magnum/magnum-conductor/Dockerfile b/docker/magnum/magnum-conductor/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..f3d506cb8fb7b5c0f41f41cfa6a390d4c83186e2 --- /dev/null +++ b/docker/magnum/magnum-conductor/Dockerfile @@ -0,0 +1,13 @@ +FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%magnum-base:%%KOLLA_TAG%% +MAINTAINER Kolla Project (https://launchpad.net/kolla) + +RUN yum -y install \ + openstack-magnum-conductor \ + tar \ + && yum clean all + +# Install kubectl binary (ugh) +RUN cd /tmp && curl -L https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v0.15.0/kubernetes.tar.gz -o /tmp/kubernetes.tar.gz && /usr/bin/tar -xzvf /tmp/kubernetes.tar.gz && cp -a /tmp/kubernetes/platforms/linux/amd64/kubectl /usr/bin/kubectl && rm -rf /tmp/kubernetes + +ADD ./start.sh /start.sh +CMD ["/start.sh"] diff --git a/docker/magnum/magnum-conductor/build b/docker/magnum/magnum-conductor/build new file mode 120000 index 0000000000000000000000000000000000000000..43944faa006f278c2090cfeeb7397fc7cd1fc6a4 --- /dev/null +++ b/docker/magnum/magnum-conductor/build @@ -0,0 +1 @@ +../../../tools/build-docker-image \ No newline at end of file diff --git a/docker/magnum/magnum-conductor/start.sh b/docker/magnum/magnum-conductor/start.sh new file mode 100755 index 0000000000000000000000000000000000000000..4cf1291a393c92d093d18497e0ca0c7b334b0c85 --- /dev/null +++ b/docker/magnum/magnum-conductor/start.sh @@ -0,0 +1,17 @@ +#!/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 diff --git a/docs/integration-guide.md b/docs/integration-guide.md index 58165a06eff8e94da870f7f967cba464e70820f0..1db81ab7bfb4662337542f0564ee40a021558b57 100644 --- a/docs/integration-guide.md +++ b/docs/integration-guide.md @@ -110,6 +110,12 @@ all containers. This allows a simple method of ensuring every type of node RABBITMQ_USER=<rabbit> - The RabbitMQ user name RABBIT_PASSWORD=<password> - The RabbitMQ password RABBIT_USERID=<rabbit> - The RabbitMQ user id on the host + MAGNUM_DB_NAME=<magnum> - The Magnum database name + MAGNUM_DB_PASSWORD=<kolla> - The Magnum database password + MAGNUM_KEYSTONE_PASSWORD=<magnum> - The Magnum keystone password + MAGNUM_API_SERVICE_HOST=<IP> - The Magnum Host IP address + MAGNUM_API_SERVICE_PORT=<9511> - The Magnum port + [Minimum environment variable setup guide.](https://github.com/stackforge/kolla/blob/master/docs/minimal-environment-vars.md) diff --git a/tools/genenv b/tools/genenv index ecd648e5a5ac0d260d95d567e75938d9f7879f15..483c792ddc1361eda48abed0de627fb591e423d3 100755 --- a/tools/genenv +++ b/tools/genenv @@ -117,6 +117,13 @@ HEAT_API_SERVICE_HOST=$HOST_IP HEAT_API_CFN_SERVICE_HOST=$HOST_IP HEAT_API_CFN_URL_HOST=$HOST_IP +# Magnum +MAGNUM_DB_NAME=magnum +MAGNUM_DB_PASSWORD=kolla +MAGNUM_KEYSTONE_PASSWORD=magnum +MAGNUM_API_SERVICE_HOST=$HOST_IP +MAGNUM_API_SERVICE_PORT=9511 + cat > ./openrc <<EOF export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0" export OS_USERNAME=$ADMIN_TENANT_NAME @@ -147,6 +154,7 @@ ADMIN_TENANT_NAME=$ADMIN_TENANT_NAME DB_ROOT_PASSWORD=$MARIADB_ROOT_PASSWORD FLAT_INTERFACE=$NOVA_FLAT_INTERFACE GLANCE_API_SERVICE_HOST=$GLANCE_API_SERVICE_HOST +MAGNUM_API_SERVICE_HOST=$MAGNUM_API_SERVICE_PORT GLANCE_DB_NAME=$GLANCE_DB_NAME GLANCE_DB_PASSWORD=$GLANCE_DB_PASSWORD GLANCE_DB_USER=$GLANCE_DB_USER @@ -192,6 +200,10 @@ HEAT_DB_NAME=$HEAT_DB_NAME HEAT_DB_PASSWORD=$HEAT_DB_PASSWORD HEAT_KEYSTONE_PASSWORD=$HEAT_KEYSTONE_PASSWORD HEAT_API_SERVICE_HOST=$HEAT_API_SERVICE_HOST +MAGNUM_DB_NAME=$MAGNUM_DB_NAME +MAGNUM_DB_PASSWORD=$MAGNUM_DB_PASSWORD +MAGNUM_KEYSTONE_PASSWORD=$MAGNUM_KEYSTONE_PASSWORD +MAGNUM_API_SERVICE_HOST=$MAGNUM_API_SERVICE_HOST PUBLIC_INTERFACE=$NOVA_PUBLIC_INTERFACE PUBLIC_IP=$HOST_IP PUBLIC_IP=$PUBLIC_IP diff --git a/tools/kolla b/tools/kolla index 805a5cca24ae782101e1de085db1979abbee5f53..df69d64e8be65816db3570a23d3416ed857558cb 100755 --- a/tools/kolla +++ b/tools/kolla @@ -38,6 +38,7 @@ function process_all { process neutron-agents fi process heat-api-engine + process magnum-api-conductor process horizon }