feat: manage grafana pgsql db

- add pgsql backend capabilities for grafana
- create/manage pgsql database for grafana
- fix psql_is_slave fact to work on all current patroni clusters
- fix extra } in resources
- fix unless in psql grant commands
- fix add database owner
- fix disabled schema permissions, the unless didnt work
This commit is contained in:
2025-06-29 18:28:12 +10:00
parent d1e63ad18b
commit d6ccb8aafe
8 changed files with 75 additions and 50 deletions
+30 -16
View File
@@ -3,13 +3,13 @@ class profiles::metrics::grafana (
Stdlib::Port $http_port = 8080,
String $app_mode = 'production',
Boolean $allow_sign_up = false,
Boolean $mysql_backend = true,
String $mysql_user = 'grafana',
String $mysql_name = 'grafana',
String $mysql_pass = fqdn_rand_string(16),
Stdlib::Host $mysql_host = '127.0.0.1',
Stdlib::Port $mysql_port = 3306,
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
@@ -18,26 +18,40 @@ class profiles::metrics::grafana (
# when using mysql backend
if $mysql_backend {
@@mysql_user { "${mysql_user}@${facts['networking']['fqdn']}":
@@mysql_user { "${db_user}@${facts['networking']['fqdn']}":
ensure => present,
password_hash => mysql::password(fqdn_rand_string(16)),
password_hash => mysql::password($db_pass),
tag => $facts['region'],
}
@@mysql_grant { "${mysql_user}@${facts['networking']['fqdn']}/${mysql_name}.*":
@@mysql_grant { "${db_user}@${facts['networking']['fqdn']}/${db_name}.*":
ensure => present,
table => "${mysql_name}.*",
user => "${mysql_user}@${facts['networking']['fqdn']}",
table => "${db_name}.*",
user => "${db_user}@${facts['networking']['fqdn']}",
privileges => ['ALL'],
tag => $facts['region'],
}
$database_config = {
type => 'mysql',
host => "${mysql_host}:${mysql_port}",
name => $mysql_name,
user => $mysql_user,
password => $mysql_pass.unwrap,
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,
}
}