Tested with Travis CI
- Overview
- Module Description - What the module does and why it is useful
- Setup - The basics of getting started with grafana
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
This module manages the Grafana UI for Graphite.
This module installs the Grafana package, managing the package repository if required, configures it and optionally enables and configures LDAP authentication. It can also install publicly available plugins.
If running on Puppet 3.x you will need to have the future parser enabled.
- The package providing the Grafana software.
- The
/etc/grafana/grafana.ini
configuration file. - The
/etc/grafana/ldap.toml
LDAP configuration file. - Plugins installed under
/var/lib/grafana
. - The service controlling Grafana.
class { '::grafana':
admin_password => 'admin',
secret_key => 'abc123',
}
Parameters within grafana
:
Maps to the security/admin_password
setting.
Maps to the security/secret_key
setting.
Maps to the security/admin_user
setting.
Maps to the users/allow_sign_up
setting.
Maps to the users/allow_org_create
setting.
Maps to the analytics/check_for_updates
setting.
The root configuration directory, defaults to /etc/grafana
.
The main configuration file, defaults to ${conf_dir}/grafana.ini
.
The root data directory, defaults to /var/lib/grafana
.
The root directory of the web application, defaults to /usr/share/grafana
.
The group to run as, defaults to grafana
.
The log directory, defaults to /var/log/grafana
.
Whether to manage the external repository for package installation.
Maximum number of open files, defaults to 10,000.
The name of the package to install, defaults to grafana
.
The plugins directory, defaults to ${data_dir}/plugins
.
Controls whether package upgrades trigger an automatic restart.
The name of the service, defaults to grafana-server
.
Maps to the grafana_net/url
setting.
The user to run as, defaults to grafana
.
Parameters within grafana::ldap
:
The distinguished name used to bind to LDAP with.
An array of hostnames or IP addresses of LDAP servers to use.
An array of LDAP search bases to try for locating the user.
An LDAP search filter to apply to user searches.
A hash of LDAP attribute mappings. Required keys are name
, surname
,
username
, member_of
, and email
. Values for each are the appropriate
LDAP attribute name.
The password to use when binding to LDAP.
The LDAP configuration file, defaults to ${::grafana::conf_dir}/ldap.toml
.
An array of mappings, each mapping being a hash containing the required keys
group_dn
and org_role
which contain the plain or distinguished name of
the group, (or *
as a catch-all), and one of Admin
, Editor
or Viewer
respectively. An optional org_id
key can be passed to map to the desired
Grafana organisation ID.
An array of LDAP search bases to try for group lookups.
An LDAP search filter to apply to group searches.
Used with recursive group membership lookups.
Port to use for LDAP connections, defaults to 389.
Path to root CA certificate for verifying SSL/TLS LDAP connections.
Boolean for SSL/TLS verification.
Whether to use STARTTLS.
Whether to use SSL/TLS, usually with port 636.
Enable verbose LDAP logging.
Parameters within grafana::plugin
:
The name of the plugin to install.
One of present
, absent
or latest
.
grafana_ini_setting { 'auth.ldap/config_file':
ensure => present,
value => '/etc/grafana/ldap.toml',
}
grafana_ini_setting { 'auth.ldap/enabled':
ensure => absent,
}
Parameters within grafana_ini_setting
:
The name of the setting, of the form <section>/<setting>
.
One of present
or absent
.
The value of the setting.
package { 'grafana-piechart-panel':
ensure => present,
provider => grafana,
}
Parameters within package
:
See the standard Puppet package type.
Install Grafana:
class { '::grafana':
admin_password => 'admin',
secret_key => 'abc123',
}
Extend the above to also install a piechart plugin:
class { '::grafana':
admin_password => 'admin',
secret_key => 'abc123',
}
::grafana::plugin { 'grafana-piechart-panel':
ensure => present,
}
Extend the above to also configure LDAP authentication:
include ::openldap
include ::openldap::client
class { '::openldap::server':
root_dn => 'cn=Manager,dc=example,dc=com',
root_password => 'secret',
suffix => 'dc=example,dc=com',
access => [
'to attrs=userPassword by self =xw by anonymous auth',
'to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by users read',
],
ldap_interfaces => ['127.0.0.1'],
local_ssf => 256,
}
::openldap::server::schema { 'cosine':
position => 1,
}
::openldap::server::schema { 'inetorgperson':
position => 2,
}
::openldap::server::schema { 'nis':
position => 3,
}
class { '::grafana':
admin_password => 'admin',
secret_key => 'abc123',
}
::grafana::plugin { 'grafana-piechart-panel':
ensure => present,
}
class { '::grafana::ldap':
bind_dn => 'cn=Manager,dc=example,dc=com',
bind_password => 'secret',
group_search_base_dns => ['ou=groups,dc=example,dc=com'],
group_search_filter => '(&(objectClass=posixGroup)(memberUid=%s))',
hosts => ['127.0.0.1'],
search_base_dns => ['ou=people,dc=example,dc=com'],
search_filter => '(uid=%s)',
attributes => {
'name' => 'givenName',
'surname' => 'sn',
'username' => 'uid',
'member_of' => 'cn',
'email' => 'mail',
},
group_mappings => [
{
'group_dn' => 'alice',
'org_role' => 'Admin',
},
],
require => Class['::openldap::server'],
}
grafana
: Main class for managing Grafana.grafana::ldap
: Main class for managing LDAP support in Grafana.
grafana::install
: Handles Grafana installation.grafana::config
: Handles Grafana configuration.grafana::params
: Different configuration data for different systems.grafana::service
: Handles running the Grafana service.grafana::ldap::config
: Handles Grafana LDAP configuration.
grafana::plugin
: Handles plugin installation.
grafana_ini_setting
: Manages configuration settings in/etc/grafana/grafana.ini
.package
: Package provider for managing Grafana plugins.
This module has been built on and tested against Puppet 3.0 and higher.
The module has been tested on:
- RedHat/CentOS Enterprise Linux 6/7
Testing on other platforms has been light and cannot be guaranteed.
Please log issues or pull requests at github.