Add Gnocchi service to kolla

Co-Authored-By: Swapnil Kulkarni <me@coolsvap.net"
Change-Id: I81e5e6bfde3323e6917e3d61e3db760e2fec2019
Implements: blueprint gnocchi-containers
This commit is contained in:
Swapnil Kulkarni 2015-07-17 06:09:23 +00:00
parent 6d4a55060e
commit 870ec615d6
26 changed files with 236 additions and 0 deletions

View File

@ -46,6 +46,7 @@ services:
* Horizon
* Zaqar
* Magnum
* Gnocchi
```
$ sudo docker search kollaglue

15
compose/gnocchi.yml Normal file
View File

@ -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"

View File

@ -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"]

View File

@ -0,0 +1 @@
../../../../../tools/build-docker-image

View File

@ -0,0 +1 @@
../../../../common/gnocchi/gnocchi-api/config-external.sh

View File

@ -0,0 +1 @@
../../../../common/gnocchi/gnocchi-api/config-internal.sh

View File

@ -0,0 +1 @@
../../../../common/gnocchi/gnocchi-api/start.sh

View File

@ -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

View File

@ -0,0 +1 @@
../../../../../tools/build-docker-image

View File

@ -0,0 +1 @@
../../../../common/gnocchi/gnocchi-base/config-gnocchi.sh

View File

@ -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"]

View File

@ -0,0 +1 @@
../../../../../tools/build-docker-image

View File

@ -0,0 +1 @@
../../../../common/gnocchi/gnocchi-statsd/config-external.sh

View File

@ -0,0 +1 @@
../../../../common/gnocchi/gnocchi-statsd/config-internal.sh

View File

@ -0,0 +1 @@
../../../../common/gnocchi/gnocchi-statsd/start.sh

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -0,0 +1,8 @@
#!/bin/bash
set -e
. /opt/kolla/kolla-common.sh
. /opt/kolla/config-gnocchi.sh
exec /usr/bin/gnocchi-statsd

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -46,6 +46,7 @@ function process_all {
process cinder-backup
process cinder-volume
process ceilometer
process gnocchi
}
function check_selinux {