diff --git a/README.md b/README.md index 3d52602d3719ed43b6d4123d2dc498b26caf44b9..fb85c1192aab272c37caf6c2181329658db1d369 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ services: * Horizon * Zaqar * Magnum +* Gnocchi ``` $ sudo docker search kollaglue diff --git a/compose/gnocchi.yml b/compose/gnocchi.yml new file mode 100644 index 0000000000000000000000000000000000000000..cd3ead33023cdc4a1a39df2bb0e1800c8e0af59c --- /dev/null +++ b/compose/gnocchi.yml @@ -0,0 +1,15 @@ +gnocchiapi: + image: kollaglue/centos-rdo-gnocchi-api:latest + name: gnocchiapi + restart: always + env_file: + - openstack.env + net: "host" + +gnocchistatsd: + image: kollaglue/centos-rdo-gnocchi-statsd:latest + name: gnocchistatsd + restart: always + env_file: + - openstack.env + net: "host" diff --git a/docker/centos/binary/gnocchi/gnocchi-api/Dockerfile b/docker/centos/binary/gnocchi/gnocchi-api/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..cd5974a22d23b7f711022a39703b2cbbed143664 --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-api/Dockerfile @@ -0,0 +1,10 @@ +FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%gnocchi-base:%%KOLLA_TAG%% +MAINTAINER Kolla Project (https://launchpad.net/kolla) + +RUN yum install -y openstack-gnocchi-api \ + openstack-gnocchi-carbonara \ + openstack-gnocchi-indexer-sqlalchemy \ + && yum clean all + +COPY ./start.sh /start.sh +CMD ["/start.sh"] diff --git a/docker/centos/binary/gnocchi/gnocchi-api/build b/docker/centos/binary/gnocchi/gnocchi-api/build new file mode 120000 index 0000000000000000000000000000000000000000..ec19138031a79efca08ea540f84f25ef77ed2f22 --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-api/build @@ -0,0 +1 @@ +../../../../../tools/build-docker-image \ No newline at end of file diff --git a/docker/centos/binary/gnocchi/gnocchi-api/config-external.sh b/docker/centos/binary/gnocchi/gnocchi-api/config-external.sh new file mode 120000 index 0000000000000000000000000000000000000000..471d03664b9b6a373dc0219639b3f565abfdb0d4 --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-api/config-external.sh @@ -0,0 +1 @@ +../../../../common/gnocchi/gnocchi-api/config-external.sh \ No newline at end of file diff --git a/docker/centos/binary/gnocchi/gnocchi-api/config-internal.sh b/docker/centos/binary/gnocchi/gnocchi-api/config-internal.sh new file mode 120000 index 0000000000000000000000000000000000000000..79578ce601a1fd271093b175205145dd5e7d45dc --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-api/config-internal.sh @@ -0,0 +1 @@ +../../../../common/gnocchi/gnocchi-api/config-internal.sh \ No newline at end of file diff --git a/docker/centos/binary/gnocchi/gnocchi-api/start.sh b/docker/centos/binary/gnocchi/gnocchi-api/start.sh new file mode 120000 index 0000000000000000000000000000000000000000..99320c6d03160e7aa6914a6cbf962e14b1a7c790 --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-api/start.sh @@ -0,0 +1 @@ +../../../../common/gnocchi/gnocchi-api/start.sh \ No newline at end of file diff --git a/docker/centos/binary/gnocchi/gnocchi-base/Dockerfile b/docker/centos/binary/gnocchi/gnocchi-base/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..e9d67da7cead787ab698f24b3fc024e1cc047ff4 --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-base/Dockerfile @@ -0,0 +1,4 @@ +FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%base:%%KOLLA_TAG%% +MAINTAINER Kolla Project (https://launchpad.net/kolla) + +COPY config-gnocchi.sh /opt/kolla/config-gnocchi.sh diff --git a/docker/centos/binary/gnocchi/gnocchi-base/build b/docker/centos/binary/gnocchi/gnocchi-base/build new file mode 120000 index 0000000000000000000000000000000000000000..ec19138031a79efca08ea540f84f25ef77ed2f22 --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-base/build @@ -0,0 +1 @@ +../../../../../tools/build-docker-image \ No newline at end of file diff --git a/docker/centos/binary/gnocchi/gnocchi-base/config-gnocchi.sh b/docker/centos/binary/gnocchi/gnocchi-base/config-gnocchi.sh new file mode 120000 index 0000000000000000000000000000000000000000..75a8a5e104f88e9e56312be3f10bb4745fdb195d --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-base/config-gnocchi.sh @@ -0,0 +1 @@ +../../../../common/gnocchi/gnocchi-base/config-gnocchi.sh \ No newline at end of file diff --git a/docker/centos/binary/gnocchi/gnocchi-statsd/Dockerfile b/docker/centos/binary/gnocchi/gnocchi-statsd/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..7998a3621e28682fa9d33fcef3c94934e26a1916 --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-statsd/Dockerfile @@ -0,0 +1,7 @@ +FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%gnocchi-base:%%KOLLA_TAG%% +MAINTAINER Kolla Project (https://launchpad.net/kolla) + +RUN yum install -y openstack-gnocchi-statsd && yum clean all + +COPY ./start.sh /start.sh +CMD ["/start.sh"] diff --git a/docker/centos/binary/gnocchi/gnocchi-statsd/build b/docker/centos/binary/gnocchi/gnocchi-statsd/build new file mode 120000 index 0000000000000000000000000000000000000000..ec19138031a79efca08ea540f84f25ef77ed2f22 --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-statsd/build @@ -0,0 +1 @@ +../../../../../tools/build-docker-image \ No newline at end of file diff --git a/docker/centos/binary/gnocchi/gnocchi-statsd/config-external.sh b/docker/centos/binary/gnocchi/gnocchi-statsd/config-external.sh new file mode 120000 index 0000000000000000000000000000000000000000..fe516e42ce08787dbcdbc6d4bb5d2ae5cb0f2a14 --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-statsd/config-external.sh @@ -0,0 +1 @@ +../../../../common/gnocchi/gnocchi-statsd/config-external.sh \ No newline at end of file diff --git a/docker/centos/binary/gnocchi/gnocchi-statsd/config-internal.sh b/docker/centos/binary/gnocchi/gnocchi-statsd/config-internal.sh new file mode 120000 index 0000000000000000000000000000000000000000..9d9ebfa7d614f2fb3eec2edb4acc4c09d48e5acc --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-statsd/config-internal.sh @@ -0,0 +1 @@ +../../../../common/gnocchi/gnocchi-statsd/config-internal.sh \ No newline at end of file diff --git a/docker/centos/binary/gnocchi/gnocchi-statsd/start.sh b/docker/centos/binary/gnocchi/gnocchi-statsd/start.sh new file mode 120000 index 0000000000000000000000000000000000000000..ad961553e2b04db7aeb5e72466f163a83b109170 --- /dev/null +++ b/docker/centos/binary/gnocchi/gnocchi-statsd/start.sh @@ -0,0 +1 @@ +../../../../common/gnocchi/gnocchi-statsd/start.sh \ No newline at end of file diff --git a/docker/common/gnocchi/gnocchi-api/config-external.sh b/docker/common/gnocchi/gnocchi-api/config-external.sh new file mode 100755 index 0000000000000000000000000000000000000000..59639ba637148d1ea10628207b1fa51c7e668844 --- /dev/null +++ b/docker/common/gnocchi/gnocchi-api/config-external.sh @@ -0,0 +1,10 @@ +#!/bin/bash +SOURCE="/opt/kolla/gnocchi-api/gnocchi-api.conf" +TARGET="/etc/gnocchi/gnocchi-api.conf" +OWNER="gnocchi" + +if [[ -f "$SOURCE" ]]; then + cp $SOURCE $TARGET + chown ${OWNER}: $TARGET + chmod 0644 $TARGET +fi diff --git a/docker/common/gnocchi/gnocchi-api/config-internal.sh b/docker/common/gnocchi/gnocchi-api/config-internal.sh new file mode 100755 index 0000000000000000000000000000000000000000..411e9ae8ae906964ae72b6f939b945c6935dc327 --- /dev/null +++ b/docker/common/gnocchi/gnocchi-api/config-internal.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +set -e + +. /opt/kolla/kolla-common.sh +. /opt/kolla/config-gnocchi.sh + +check_required_vars KEYSTONE_ADMIN_TOKEN \ + KEYSTONE_AUTH_PROTOCOL \ + KEYSTONE_ADMIN_SERVICE_HOST \ + KEYSTONE_ADMIN_SERVICE_PORT \ + ADMIN_TENANT_NAME \ + GNOCCHI_DB_NAME \ + GNOCCHI_DB_USER \ + GNOCCHI_DB_PASSWORD \ + GNOCCHI_SERVICE_PROTOCOL \ + GNOCCHI_SERVICE_PORT \ + GNOCCHI_ARCHIVE_POLICY \ + GNOCCHI_STORAGE_BACKEND \ + GNOCCHI_KEYSTONE_USER \ + GNOCCHI_ADMIN_PASSWORD \ + GNOCCHI_API_SERVICE_HOST + +fail_unless_os_service_running keystone +fail_unless_db + +mysql -h ${MARIADB_SERVICE_HOST} -u root -p${DB_ROOT_PASSWORD} mysql <<EOF +CREATE DATABASE IF NOT EXISTS ${GNOCCHI_DB_NAME} DEFAULT CHARACTER SET utf8; +GRANT ALL PRIVILEGES ON ${GNOCCHI_DB_NAME}.* TO + '${GNOCCHI_DB_USER}'@'%' IDENTIFIED BY '${GNOCCHI_DB_PASSWORD}' + +EOF + + +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 ${GNOCCHI_KEYSTONE_USER} \ + -p ${GNOCCHI_ADMIN_PASSWORD} \ + -t ${ADMIN_TENANT_NAME} \ + -r service + +crux service-create -n ${GNOCCHI_KEYSTONE_USER} -t "metric" \ + -d "OpenStack Metric Service" + +crux endpoint-create i--remove-all -n ${GNOCCHI_KEYSTONE_USER} -t metric \ + -I "${GNOCCHI_SERVICE_PROTOCOL}://${GNOCCHI_API_SERVICE_HOST}:${GNOCCHI_SERVICE_PORT}" \ + -P "${GNOCCHI_SERVICE_PROTOCOL}://${GNOCCHI_API_SERVICE_HOST}:${GNOCCHI_SERVICE_PORT}" \ + -A "${GNOCCHI_SERVICE_PROTOCOL}://${GNOCCHI_API_SERVICE_HOST}:${GNOCCHI_SERVICE_PORT}" + +exec /usr/bin/gnocchi-api diff --git a/docker/common/gnocchi/gnocchi-api/start.sh b/docker/common/gnocchi/gnocchi-api/start.sh new file mode 100755 index 0000000000000000000000000000000000000000..704183ac87c36fd2e7d0424e039d6a502aa5649e --- /dev/null +++ b/docker/common/gnocchi/gnocchi-api/start.sh @@ -0,0 +1,21 @@ +#!/bin/bash +set -o errexit + +CMD="/usr/bin/gnocchi-api" +ARGS="" + +# Loading common functions. +source /opt/kolla/kolla-common.sh + +# Config-internal script exec out of this function, it does not return here. +set_configs + +# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases +# of the KOLLA_BOOTSTRAP variable being set, including empty. +if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then + su -s /bin/sh -c "gnocchi-manage db_sync" gnocchi + exit 0 +fi + +exec $CMD $ARGS + diff --git a/docker/common/gnocchi/gnocchi-base/config-gnocchi.sh b/docker/common/gnocchi/gnocchi-base/config-gnocchi.sh new file mode 100755 index 0000000000000000000000000000000000000000..fb5f5c55c4b95b622bb8bf31fd6861ab910edede --- /dev/null +++ b/docker/common/gnocchi/gnocchi-base/config-gnocchi.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e +. /opt/kolla/kolla-common.sh + +check_required_vars KEYSTONE_ADMIN_TOKEN KEYSTONE_ADMIN_SERVICE_HOST \ + KEYSTONE_ADMIN_SERVICE_PORT KEYSTONE_PUBLIC_SERVICE_HOST \ + GNOCCHI_STORAGE_BACKEND GNOCCHI_DATA_DIR GNOCCHI_SERVICE_PORT +dump_vars + +cat > /openrc <<EOF +export SERVICE_TOKEN="${KEYSTONE_ADMIN_TOKEN}" +export SERVICE_ENDPOINT="${KEYSTONE_AUTH_PROTOCOL}://${KEYSTONE_ADMIN_SERVICE_HOST}:${KEYSTONE_ADMIN_SERVICE_PORT}/v2.0" +EOF + + +cfg=/etc/gnocchi/gnocchi.conf +crudini --set $cfg \ + storage driver "$GNOCCHI_STORAGE_BACKEND" +crudini --set $cfg \ + storage file_basepath "$GNOCCHI_DATA_DIR" +crudini --set $cfg \ + indexer url "mysql://$GNOCCHI_DB_USER:$GNOCCHI_DB_PASSWORD@$MARIADB_SERVICE_HOST/$GNOCCHI_DB_NAME?charset=utf8" diff --git a/docker/common/gnocchi/gnocchi-statsd/config-external.sh b/docker/common/gnocchi/gnocchi-statsd/config-external.sh new file mode 100755 index 0000000000000000000000000000000000000000..59639ba637148d1ea10628207b1fa51c7e668844 --- /dev/null +++ b/docker/common/gnocchi/gnocchi-statsd/config-external.sh @@ -0,0 +1,10 @@ +#!/bin/bash +SOURCE="/opt/kolla/gnocchi-api/gnocchi-api.conf" +TARGET="/etc/gnocchi/gnocchi-api.conf" +OWNER="gnocchi" + +if [[ -f "$SOURCE" ]]; then + cp $SOURCE $TARGET + chown ${OWNER}: $TARGET + chmod 0644 $TARGET +fi diff --git a/docker/common/gnocchi/gnocchi-statsd/config-internal.sh b/docker/common/gnocchi/gnocchi-statsd/config-internal.sh new file mode 100755 index 0000000000000000000000000000000000000000..81a71da1608be66bd0ad6bd5ea1e207966b4a83b --- /dev/null +++ b/docker/common/gnocchi/gnocchi-statsd/config-internal.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e + +. /opt/kolla/kolla-common.sh +. /opt/kolla/config-gnocchi.sh + +exec /usr/bin/gnocchi-statsd diff --git a/docker/common/gnocchi/gnocchi-statsd/start.sh b/docker/common/gnocchi/gnocchi-statsd/start.sh new file mode 100755 index 0000000000000000000000000000000000000000..7e9024f15d16489132c73d95d9b88916f42b4282 --- /dev/null +++ b/docker/common/gnocchi/gnocchi-statsd/start.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -o errexit + +CMD="/usr/bin/gnocchi-statsd" +ARGS="" + +# 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/docs/integration-guide.md b/docs/integration-guide.md index 029f370b0c5369da55e46bc56433a11e35b2daa5..e131e85628a2ef8f3b27ff89bf5c53cf4bdff852 100755 --- a/docs/integration-guide.md +++ b/docs/integration-guide.md @@ -68,6 +68,12 @@ all containers. This allows a simple method of ensuring every type of node GLANCE_KEYSTONE_PASSWORD=<password> - Keystone DB password GLANCE_KEYSTONE_USER=<keystone> - Glance Keystone User GLANCE_REGISTRY_SERVICE_HOST=<glance IP> Glance registry service host + GNOCCHI_ADMIN_PASSWORD=<password> - admin password for gnocchi user + GNOCCHI_API_SERVICE_HOST=<IP> - address where gnocchi API is running + GNOCCHI_KEYSTONE_PASSWORD=<gnocchi> - Gnocchi keystone password + GNOCCHI_KEYSTONE_USER=<gnocchi> - Gnocchi Keystone User + GNOCCHI_SERVICE_PORT=<8041> - Port where gnocchi operates + GNOCCHI_STORAGE_BACKEND=<file> - Storage backend for gnocchi KEYSTONE_ADMIN_PASSWORD=<password> KEYSTONE_ADMIN_SERVICE_HOST=<IP> - IP Address of Keystone Host KEYSTONE_ADMIN_SERVICE_PORT=<35357> - Port where Keystone admin endpoint operates. diff --git a/docs/minimal-environment-vars.md b/docs/minimal-environment-vars.md index 80dbc3815d1fb7bc225e24f118245cfc2c833ae2..752505b5ecbc14ecfc926c2c24d35efd6a99257f 100644 --- a/docs/minimal-environment-vars.md +++ b/docs/minimal-environment-vars.md @@ -229,6 +229,38 @@ In order for each service to function, there is a minimum set of required variab GLANCE_DB_USER MARIADB_SERVICE_HOST +# Gnocchi-api + + ADMIN_TENANT_NAME + GNOCCHI_ADMIN_PASSWORD + GNOCCHI_API_SERVICE_HOST + GNOCCHI_ARCHIVE_POLICY + GNOCCHI_DB_NAME + GNOCCHI_DB_PASSWORD + GNOCCHI_DB_USER + GNOCCHI_KEYSTONE_USER + GNOCCHI_SERVICE_PORT + GNOCCHI_SERVICE_PROTOCOL + GNOCCHI_STORAGE_BACKEND + KEYSTONE_ADMIN_SERVICE_HOST + KEYSTONE_ADMIN_SERVICE_PORT + KEYSTONE_ADMIN_TOKEN + KEYSTONE_AUTH_PROTOCOL + +# Gnocchi-base + + GNOCCHI_DATA_DIR + GNOCCHI_SERVICE_PORT + GNOCCHI_STORAGE_BACKEND + KEYSTONE_ADMIN_SERVICE_HOST + KEYSTONE_ADMIN_SERVICE_PORT + KEYSTONE_ADMIN_TOKEN + KEYSTONE_PUBLIC_SERVICE_HOST + +# Gnocchi-statsd + + None + # Haproxy None diff --git a/tools/genenv b/tools/genenv index 84b42163c3aa6e7b392ca2726ee7bab97f70b66a..40d60a2f8de32248898e7367bcdda1c0fb590665 100755 --- a/tools/genenv +++ b/tools/genenv @@ -118,6 +118,18 @@ GLANCE_KEYSTONE_PASSWORD=glance GLANCE_API_SERVICE_HOST=$HOST_IP GLANCE_REGISTRY_SERVICE_HOST=$HOST_IP +# Gnocchi +GNOCCHI_DB_PASSWORD=gnocchi +GNOCCHI_DB_NAME=gnocchi +GNOCCHI_DB_USER=gnocchi +GNOCCHI_SERVICE_PROTOCOL=http +GNOCCHI_SERVICE_PORT=8041 +GNOCCHI_STORAGE_BACKEND=file +GNOCCHI_KEYSTONE_USER=gnocchi +GNOCCHI_KEYSTONE_PASSWORD=gnocchi +GNOCCHI_ADMIN_PASSWORD=gnocchi +GNOCCHI_API_SERVICE_HOST=$HOST_IP + # Nova NOVA_DB_PASSWORD=nova NOVA_DB_NAME=nova diff --git a/tools/kolla b/tools/kolla index b65f7b0229305255da1643f5b442d71d0b43113d..4df9ea4dbb7fe867d4dfc714d8cdfc79e9fe9c01 100755 --- a/tools/kolla +++ b/tools/kolla @@ -46,6 +46,7 @@ function process_all { process cinder-backup process cinder-volume process ceilometer + process gnocchi } function check_selinux {