From ef5b4f54879151948c1f933f888fe494e84047d7 Mon Sep 17 00:00:00 2001 From: Paul Belanger Date: Fri, 9 Oct 2015 11:20:50 -0400 Subject: [PATCH] Add grafyaml support 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 --- doc/source/grafyaml.rst | 25 +++++++++++++++++++ doc/source/systems.rst | 1 + manifests/site.pp | 15 +++++------ modules.env | 1 + .../openstack_project/manifests/grafana.pp | 17 +++++++++++-- 5 files changed, 50 insertions(+), 9 deletions(-) create mode 100644 doc/source/grafyaml.rst diff --git a/doc/source/grafyaml.rst b/doc/source/grafyaml.rst new file mode 100644 index 0000000000..3c9a14b9a6 --- /dev/null +++ b/doc/source/grafyaml.rst @@ -0,0 +1,25 @@ +:title: Grafyaml + +.. _grafyaml: + +Grafyaml +######## + +Grafyaml is a system for configuring Grafana dashboards using +simple YAML files stored in Git. + +At a Glance +=========== + +:Hosts: + * http://grafana.openstack.org +:Puppet: + * https://github.com/pabelanger/puppet-grafyaml +:Configuration: + * :config:`grafana` +:Projects: + * https://git.openstack.org/cgit/openstack-infra/grafyaml +:Bugs: + * https://storyboard.openstack.org/#!/project/818 +:Resources: + * `Reference Manual `_ diff --git a/doc/source/systems.rst b/doc/source/systems.rst index 99ccc63eea..8d4e5f85ec 100644 --- a/doc/source/systems.rst +++ b/doc/source/systems.rst @@ -9,6 +9,7 @@ Major Systems cacti gerrit grafana + grafyaml jenkins zuul jjb diff --git a/manifests/site.pp b/manifests/site.pp index c68968ed77..dfd98623de 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -123,13 +123,14 @@ node 'grafana.openstack.org' { sysadmins => hiera('sysadmins', []), } class { 'openstack_project::grafana': - admin_password => hiera('grafana_admin_password', 'XXX'), - admin_user => hiera('grafana_admin_user', 'username'), - mysql_host => hiera('grafana_mysql_host', 'localhost'), - mysql_name => hiera('grafana_mysql_name', 'XXX'), - mysql_password => hiera('grafana_mysql_password', 'XXX'), - mysql_user => hiera('grafana_mysql_user', 'username'), - secret_key => hiera('grafana_secret_key', 'XXX'), + admin_password => hiera('grafana_admin_password', 'XXX'), + admin_user => hiera('grafana_admin_user', 'username'), + mysql_host => hiera('grafana_mysql_host', 'localhost'), + mysql_name => hiera('grafana_mysql_name', 'XXX'), + mysql_password => hiera('grafana_mysql_password', 'XXX'), + mysql_user => hiera('grafana_mysql_user', 'username'), + project_config_repo => 'https://git.openstack.org/openstack-infra/project-config', + secret_key => hiera('grafana_secret_key', 'XXX'), } } diff --git a/modules.env b/modules.env index e3e2c4defa..268d120420 100644 --- a/modules.env +++ b/modules.env @@ -85,6 +85,7 @@ INTEGRATION_MODULES["$OPENSTACK_GIT_ROOT/openstack-infra/puppet-exim"]="origin/m INTEGRATION_MODULES["$OPENSTACK_GIT_ROOT/openstack-infra/puppet-gerrit"]="origin/master" INTEGRATION_MODULES["$OPENSTACK_GIT_ROOT/openstack-infra/puppet-gerritbot"]="origin/master" INTEGRATION_MODULES["$OPENSTACK_GIT_ROOT/openstack-infra/puppet-github"]="origin/master" +INTEGRATION_MODULES["$OPENSTACK_GIT_ROOT/openstack-infra/puppet-grafyaml"]="origin/master" INTEGRATION_MODULES["$OPENSTACK_GIT_ROOT/openstack-infra/puppet-graphite"]="origin/master" INTEGRATION_MODULES["$OPENSTACK_GIT_ROOT/openstack-infra/puppet-haveged"]="origin/master" INTEGRATION_MODULES["$OPENSTACK_GIT_ROOT/openstack-infra/puppet-httpd"]="origin/master" diff --git a/modules/openstack_project/manifests/grafana.pp b/modules/openstack_project/manifests/grafana.pp index cf2f0953ec..e83e783649 100644 --- a/modules/openstack_project/manifests/grafana.pp +++ b/modules/openstack_project/manifests/grafana.pp @@ -10,9 +10,12 @@ class openstack_project::grafana ( $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, ) { @@ -40,8 +43,8 @@ class openstack_project::grafana ( secret_key => $secret_key, }, 'server' => { - http_addr => '127.0.0.1', - http_port => 8080, + http_addr => $http_host, + http_port => $http_port, }, 'users' => { allow_sign_up => false, @@ -76,4 +79,14 @@ class openstack_project::grafana ( 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'], + } }