Add Monasca Grafana image

This provides support for building the Monasca fork of Grafana
which features Keystone integration.

It is primarily for use with the Monasca Grafana datasource, although
other datasources can be installed if required.

In the future it would be more efficient to build and host the packages
externally.

Implements: blueprint monasca-grafana
Change-Id: I6cb175868d1993ae31700de36b721f4833c4164b
This commit is contained in:
Doug Szumski 2018-10-18 12:45:36 +00:00
parent 380a7078e0
commit 3da653faf1
4 changed files with 96 additions and 0 deletions

View File

@ -0,0 +1,81 @@
FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
{% block monasca_grafana_header %}{% endblock %}
{% import "macros.j2" as macros with context %}
{{ macros.configure_user(name='monasca', homedir='/usr/share/grafana') }}
{% if base_distro in ['centos', 'oraclelinux', 'rhel'] %}
{% set monasca_grafana_build_packages = [
'golang',
'git',
'npm',
'bzip2',
'gcc-c++',
'make',
'ruby',
'ruby-devel',
'fontconfig',
'rpm-build'
] %}
{% elif base_distro in ['debian', 'ubuntu'] %}
{% set monasca_grafana_build_packages = [
'golang',
'git',
'npm',
'bzip2',
'g++',
'make',
'ruby',
'ruby-dev',
'fontconfig',
'rpm'
] %}
{% endif %}
{{ macros.install_packages(monasca_grafana_build_packages | customizable("packages")) }}
WORKDIR /usr/share/grafana
COPY grafana_sudoers /etc/sudoers.d/kolla_grafana_sudoers
COPY extend_start.sh /usr/local/bin/kolla_extend_start
ENV GO_PATH=/grafana
ENV monasca_grafana_build_path=${GO_PATH}/src/github.com/grafana/grafana
ARG monasca_grafana_version=grafana4
ARG monasca_grafana_url=https://github.com/monasca/grafana/archive/$monasca_grafana_version.tar.gz
{% block monasca_grafana_install %}
RUN gem install fpm \
&& curl -sSL -o /tmp/monasca-grafana.tgz ${monasca_grafana_url} \
&& mkdir -p ${monasca_grafana_build_path} \
&& tar --strip 1 -xvf /tmp/monasca-grafana.tgz -C ${monasca_grafana_build_path} \
&& rm -f /tmp/monasca-grafana.tgz \
&& cd ${monasca_grafana_build_path} \
&& go run build.go setup \
&& npm install \
&& go run build.go build package \
&& mv ${monasca_grafana_build_path}/dist /grafana_pkgs \
&& rm -rf /grafana
{% if base_distro in ['centos', 'oraclelinux', 'rhel'] %}
{% set monasca_grafana_packages = ['/grafana_pkgs/grafana*.rpm'] %}
{% elif base_distro in ['debian', 'ubuntu'] %}
{% set monasca_grafana_packages = ['/grafana_pkgs/grafana*.deb'] %}
{% endif %}
{{ macros.install_packages(monasca_grafana_packages | customizable("packages")) }}
{% endblock %}
RUN grafana-cli plugins install monasca-datasource \
&& chmod 750 /etc/sudoers.d \
&& chmod 440 /etc/sudoers.d/kolla_grafana_sudoers \
&& chmod 755 /usr/local/bin/kolla_extend_start
{% block monasca_grafana_footer %}{% endblock %}
{% block footer %}{% endblock %}
USER monasca

View File

@ -0,0 +1,8 @@
#!/bin/bash
if [[ ! -d "/var/log/kolla/monasca" ]]; then
mkdir -p /var/log/kolla/monasca
fi
if [[ $(stat -c %a /var/log/kolla/monasca) != "755" ]]; then
chmod 755 /var/log/kolla/monasca
fi

View File

@ -0,0 +1 @@
%kolla ALL=(root) NOPASSWD: /usr/bin/chown -R monasca\: /var/lib/grafana/, /bin/chown -R monasca\: /var/lib/grafana/

View File

@ -0,0 +1,6 @@
---
features:
- |
Add the Monasca fork of Grafana (v4.0.1). The Monasca fork of Grafana
adds Keystone integration, allowing Grafana users to log in with their
OpenStack credentials and see Metrics from their OpenStack project.