ef5b4f5487
This works almost the same way as JJB. Dashboards are stored in yaml, puppet detects a file change, and grafana-dashboard publishes the changes into grafana. Change-Id: I91d539bdf7273a26dbd6ac46268bf5f98b1ea44f Depends-On: I2755fe4fee720c7805eed2cb5bdf11de667bbd4f Depends-On: I07577d72b2d5d6a552a9f50f551263fe3ac47dfb Signed-off-by: Paul Belanger <pabelanger@redhat.com>
93 lines
2.3 KiB
Puppet
93 lines
2.3 KiB
Puppet
# == Class: openstack_project::grafana
|
|
#
|
|
# === Parameters
|
|
# [*cfg*]
|
|
# Manages the Grafana configuration file. The upstream puppet-grafana module
|
|
# documentaion: https://github.com/bfraser/puppet-grafana#cfg
|
|
#
|
|
class openstack_project::grafana (
|
|
$mysql_password,
|
|
$admin_password = '',
|
|
$admin_user = 'admin',
|
|
$grafana_cfg = {},
|
|
$http_host = '127.0.0.1',
|
|
$http_port = '8080',
|
|
$mysql_host = '127.0.0.1',
|
|
$mysql_name = 'grafana',
|
|
$mysql_user = 'grafana',
|
|
$project_config_repo = '',
|
|
$secret_key = '',
|
|
$vhost_name = $::fqdn,
|
|
) {
|
|
include ::httpd
|
|
|
|
$grafana_cfg_defaults = {
|
|
# NOTE(pabelanger): app_mode must be the first key!
|
|
'app_mode' => 'production',
|
|
'analytics' => {
|
|
'reporting_enabled' => false,
|
|
},
|
|
'auth.anonymous' => {
|
|
enabled => true,
|
|
},
|
|
'database' => {
|
|
type => 'mysql',
|
|
host => "${mysql_host}:3306",
|
|
name => $mysql_name,
|
|
user => $mysql_user,
|
|
password => $mysql_password,
|
|
},
|
|
'security' => {
|
|
admin_password => $admin_password,
|
|
admin_user => $admin_user,
|
|
secret_key => $secret_key,
|
|
},
|
|
'server' => {
|
|
http_addr => $http_host,
|
|
http_port => $http_port,
|
|
},
|
|
'users' => {
|
|
allow_sign_up => false,
|
|
},
|
|
}
|
|
|
|
$grafana_cfg_merged = merge($grafana_cfg_defaults, $grafana_cfg)
|
|
|
|
class { '::grafana':
|
|
cfg => $grafana_cfg_merged,
|
|
# Note that we can't use archive because that install_method requires
|
|
# the camptocamp-archive module but we have puppetcommunity-archive
|
|
# in modules.env, and puppet only supports having one in the modulepath
|
|
# at a time.
|
|
install_method => 'repo',
|
|
version => '2.1.0',
|
|
}
|
|
|
|
::httpd::vhost { $vhost_name:
|
|
docroot => 'MEANINGLESS ARGUMENT',
|
|
port => 80,
|
|
priority => '50',
|
|
template => 'openstack_project/grafana.vhost.erb',
|
|
}
|
|
|
|
httpd_mod { 'rewrite':
|
|
ensure => present,
|
|
}
|
|
httpd_mod { 'proxy':
|
|
ensure => present,
|
|
}
|
|
httpd_mod { 'proxy_http':
|
|
ensure => present,
|
|
}
|
|
|
|
class { '::project_config':
|
|
url => $project_config_repo,
|
|
}
|
|
|
|
class { '::grafyaml':
|
|
config_dir => $::project_config::grafana_dashboards_dir,
|
|
grafana_url => "http://${admin_user}:${admin_password}@${http_host}:${http_port}",
|
|
require => Class['grafana'],
|
|
}
|
|
}
|