# profiles::metrics::grafana class profiles::metrics::grafana ( Stdlib::Port $http_port = 8080, String $app_mode = 'production', Boolean $allow_sign_up = false, Boolean $mysql_backend = false, Boolean $pgsql_backend = false, String $db_user = 'grafana', String $db_name = 'grafana', String $db_pass = fqdn_rand_string(16), Stdlib::Host $db_host = '127.0.0.1', Stdlib::Port $db_port = 5432, ) { # set the fqdn $fqdn = $::facts['networking']['fqdn'] # when using mysql backend if $mysql_backend { @@mysql_user { "${db_user}@${facts['networking']['fqdn']}": ensure => present, password_hash => mysql::password($db_pass), tag => $facts['region'], } @@mysql_grant { "${db_user}@${facts['networking']['fqdn']}/${db_name}.*": ensure => present, table => "${db_name}.*", user => "${db_user}@${facts['networking']['fqdn']}", privileges => ['ALL'], tag => $facts['region'], } $database_config = { type => 'mysql', host => "${db_host}:${db_port}", name => $db_name, user => $db_user, password => $db_pass.unwrap, } } # when using mysql backend if $pgsql_backend { include profiles::sql::postgresdb $database_config = { type => 'postgres', host => "${db_host}:${db_port}", name => $db_name, user => $db_user, password => $db_pass.unwrap, } } # build the grafana config hash $cfg = { app_mode => $app_mode, server => { http_port => $http_port, }, database => $database_config, users => { allow_sign_up => $allow_sign_up, }, } # deploy grafana class { 'grafana': cfg => $cfg, } # fix the package provided systemd service systemd::unit_file { 'grafana-server.service': content => template('profiles/metrics/grafana.service.erb'), require => Package['grafana'], before => Service['grafana'], } }