Files
mgmt/modules/grafana/main.mcl
James Shubin bdc46648ff modules: Add prometheus and grafana modules
These are really stubs, and need some more testing and integration, but
there were some people who expressed interest in this, so let's push it
early.
2025-02-03 04:46:44 -05:00

86 lines
1.8 KiB
Plaintext

import "deploy"
import "golang"
class server() {
pkg "grafana" { # on fedora
state => "installed",
}
file "/etc/grafana/" {
state => $const.res.file.state.exists,
#recurse => true,
#purge => true,
owner => "root",
group => "grafana",
mode => "u=rwx,g=rx,o=", # dir
}
file "/etc/grafana/ldap.toml" {
state => $const.res.file.state.exists,
content => deploy.readfile("/files/ldap.toml"), # XXX: eventually template
owner => "root",
group => "grafana",
mode => "u=rw,g=r,o=",
Notify => Svc["grafana-server"],
}
file "/etc/grafana/grafana.ini" {
state => $const.res.file.state.exists,
content => golang.template(deploy.readfile("/files/grafana.ini.tmpl")),
owner => "root",
group => "grafana",
mode => "u=rw,g=r,o=",
Notify => Svc["grafana-server"],
}
file "/etc/grafana/provisioning/" {
state => $const.res.file.state.exists,
#recurse => true,
#purge => true,
owner => "root",
group => "grafana",
mode => "u=rwx,g=rx,o=", # dir
}
svc "grafana-server" {
state => "running",
startup => "enabled",
}
}
class server:prometheus_base() {
file "/etc/grafana/provisioning/datasources/" {
state => $const.res.file.state.exists,
recurse => true,
purge => true,
owner => "root",
group => "grafana",
mode => "u=rwx,g=rx,o=", # dir
}
}
# XXX: if selinux is enabled, this wasn't connecting!
class server:prometheus($name, $st) {
include prometheus_base
$url = $st->url || "http://localhost:9090"
$comment = $st->comment || ""
$tmpl = struct{
name => "${name}",
url => "${url}",
comment => "${comment}",
}
file "/etc/grafana/provisioning/datasources/${name}.yaml" {
state => $const.res.file.state.exists,
content => golang.template(deploy.readfile("/files/prometheus.yaml.tmpl"), $tmpl),
owner => "root",
group => "grafana",
mode => "u=rw,g=r,o=",
}
}