]> git.proxmox.com Git - ceph.git/blame - ceph/monitoring/grafana/build/Makefile
buildsys: switch source download to quincy
[ceph.git] / ceph / monitoring / grafana / build / Makefile
CommitLineData
f67539c2 1
522d829b
TL
2GRAFANA_VERSION ?= 6.7.4-1
3PIECHART_VERSION ?= "1.4.0"
4STATUS_PANEL_VERSION ?= "1.0.9"
5DASHBOARD_DIR := "../dashboards"
f67539c2 6DASHBOARD_PROVISIONING := "ceph-dashboard.yml"
522d829b 7IMAGE := "docker.io/centos:8"
f67539c2 8PKGMGR := "dnf"
f67539c2 9GF_CONFIG := "/etc/grafana/grafana.ini"
522d829b
TL
10# clip off "-<whatever> from the end of GRAFANA_VERSION
11CONTAINER_VERSION := $(shell /bin/echo $(GRAFANA_VERSION) | /bin/sed 's/-.*//')
12
13ARCH ?= x86_64
14ifeq "$(ARCH)" "arm64"
15 override ARCH := aarch64
16endif
17
18LOCALTAG=ceph-grafana:$(CONTAINER_VERSION)-$(ARCH)
19TAG=ceph/ceph-grafana:$(CONTAINER_VERSION)-$(ARCH)
f67539c2
TL
20
21# Build a grafana instance - preconfigured for use within Ceph's dashboard UI
22
522d829b 23build :
f67539c2 24 echo "Creating base container"
522d829b 25 $(eval CONTAINER := $(shell sudo buildah from ${IMAGE}))
f67539c2 26 # Using upstream grafana build
522d829b
TL
27 curl -fLO https://dl.grafana.com/oss/release/grafana-${GRAFANA_VERSION}.${ARCH}.rpm
28 sudo buildah copy $(CONTAINER) grafana-${GRAFANA_VERSION}.${ARCH}.rpm /tmp/grafana-${GRAFANA_VERSION}.${ARCH}.rpm
29 sudo buildah run $(CONTAINER) ${PKGMGR} install -y --setopt install_weak_deps=false --setopt=tsflags=nodocs /tmp/grafana-${GRAFANA_VERSION}.${ARCH}.rpm
30 sudo buildah run $(CONTAINER) ${PKGMGR} clean all
31 sudo buildah run $(CONTAINER) rm -f /tmp/grafana*.rpm
32 sudo buildah run $(CONTAINER) grafana-cli plugins install grafana-piechart-panel ${PIECHART_VERSION}
33 sudo buildah run $(CONTAINER) grafana-cli plugins install vonage-status-panel ${STATUS_PANEL_VERSION}
34 sudo buildah run $(CONTAINER) mkdir -p /etc/grafana/dashboards/ceph-dashboard
35 sudo buildah copy $(CONTAINER) ${DASHBOARD_DIR}/*.json /etc/grafana/dashboards/ceph-dashboard
f67539c2
TL
36
37 @/bin/echo -e "\
38apiVersion: 1 \\n\
39providers: \\n\
40- name: 'Ceph Dashboard' \\n\
41 torgId: 1 \\n\
42 folder: 'ceph-dashboard' \\n\
43 type: file \\n\
44 disableDeletion: false \\n\
45 updateIntervalSeconds: 3 \\n\
46 editable: false \\n\
47 options: \\n\
48 path: '/etc/grafana/dashboards/ceph-dashboard'" >> ${DASHBOARD_PROVISIONING}
49
50
522d829b 51 sudo buildah copy $(CONTAINER) ${DASHBOARD_PROVISIONING} /etc/grafana/provisioning/dashboards/${DASHBOARD_PROVISIONING}
f67539c2
TL
52
53 # expose tcp/3000 for grafana
522d829b 54 sudo buildah config --port 3000 $(CONTAINER)
f67539c2
TL
55
56 # set working dir
522d829b 57 sudo buildah config --workingdir /usr/share/grafana $(CONTAINER)
f67539c2
TL
58
59 # set environment overrides from the default locations in /usr/share
522d829b
TL
60 sudo buildah config --env GF_PATHS_LOGS="/var/log/grafana" $(CONTAINER)
61 sudo buildah config --env GF_PATHS_PLUGINS="/var/lib/grafana/plugins" $(CONTAINER)
62 sudo buildah config --env GF_PATHS_PROVISIONING="/etc/grafana/provisioning" $(CONTAINER)
63 sudo buildah config --env GF_PATHS_DATA="/var/lib/grafana" $(CONTAINER)
f67539c2
TL
64
65 # entrypoint
522d829b 66 sudo buildah config --entrypoint "grafana-server --config=${GF_CONFIG}" $(CONTAINER)
f67539c2
TL
67
68 # finalize
522d829b
TL
69 sudo buildah config --label maintainer="Paul Cuzner <pcuzner@redhat.com>" $(CONTAINER)
70 sudo buildah config --label description="Ceph Grafana Container" $(CONTAINER)
71 sudo buildah config --label summary="Grafana Container configured for Ceph mgr/dashboard integration" $(CONTAINER)
72 sudo buildah commit --format docker --squash $(CONTAINER) $(LOCALTAG)
73
74push:
75 # this transition-through-oci image is a workaround for
76 # https://github.com/containers/buildah/issues/3253 and
77 # can be removed when that is fixed and released. The
78 # --format v2s2 on push is to convert oci back to docker format.
79 sudo podman push $(LOCALTAG) --format=oci dir://tmp/oci-image
80 sudo podman pull dir://tmp/oci-image
81 sudo rm -rf /tmp/oci-image
82 sudo podman tag localhost/tmp/oci-image docker.io/${TAG}
83 sudo podman tag localhost/tmp/oci-image quay.io/${TAG}
84 # sudo podman has issues with auth.json; just override it
85 sudo podman login --authfile=auth.json -u ${DOCKER_HUB_USERNAME} -p ${DOCKER_HUB_PASSWORD} docker.io
86 sudo podman login --authfile=auth.json -u $(CONTAINER_REPO_USERNAME) -p $(CONTAINER_REPO_PASSWORD) quay.io
87 sudo podman push --authfile=auth.json --format v2s2 docker.io/${TAG}
88 sudo podman push --authfile=auth.json --format v2s2 quay.io/${TAG}
89
90clean:
91 sudo podman rmi ${LOCALTAG} || true
92 sudo podman rmi docker.io/${TAG} || true
93 sudo podman rmi quay.io/${TAG} || true
94 sudo podman rmi localhost/tmp/oci-image || true
95 rm -f grafana-*.rpm* auth.json
f67539c2 96 rm -f ${DASHBOARD_PROVISIONING}