diff --git a/examples/init.pp b/examples/init.pp index ddf3cc9..8043c17 100644 --- a/examples/init.pp +++ b/examples/init.pp @@ -1,12 +1,12 @@ # The baseline for module testing used by Puppet Labs is that each manifest # should have a corresponding test manifest that declares that class or defined # type. # # Tests are then run by using puppet apply --noop (to check for compilation # errors and view a log of events) or by fully applying the test in a virtual # environment (to compare the resulting system state to the desired state). # # Learn more about module testing here: # http://docs.puppetlabs.com/guides/tests_smoke.html # -include ::grafana +include grafana diff --git a/manifests/install.pp b/manifests/install.pp index 74929dd..1996736 100644 --- a/manifests/install.pp +++ b/manifests/install.pp @@ -1,175 +1,175 @@ # == Class grafana::install # class grafana::install { $base_url = 'https://s3-us-west-2.amazonaws.com/grafana-releases/release' if $::grafana::archive_source != undef { $real_archive_source = $::grafana::archive_source } else { $real_archive_source = "${base_url}/grafana-${::grafana::version}.linux-x64.tar.gz" } if $::grafana::package_source != undef { $real_package_source = $::grafana::package_source } else { $real_package_source = $::osfamily ? { /(RedHat|Amazon)/ => "${base_url}/grafana-${::grafana::version}-${::grafana::rpm_iteration}.x86_64.rpm", 'Debian' => "${base_url}/builds/grafana_${::grafana::version}_amd64.deb", default => $real_archive_source, } } case $::grafana::install_method { 'docker': { docker::image { 'grafana/grafana': image_tag => $::grafana::version, require => Class['docker'], } } 'package': { case $facts['os']['family'] { 'Debian': { package { 'libfontconfig1': ensure => present, } archive { '/tmp/grafana.deb': source => $real_package_source, } package { $::grafana::package_name: ensure => present, provider => 'dpkg', source => '/tmp/grafana.deb', require => [Archive['/tmp/grafana.deb'],Package['libfontconfig1']], } } 'RedHat': { package { 'fontconfig': ensure => present, } package { $::grafana::package_name: ensure => present, provider => 'rpm', source => $real_package_source, require => Package['fontconfig'], } } default: { fail("${facts['os']['family']} not supported") } } } 'repo': { case $facts['os']['family'] { 'Debian': { package { 'libfontconfig1': ensure => present, } if ( $::grafana::manage_package_repo ){ if !defined( Class['apt'] ) { - class { '::apt': } + include apt } apt::source { 'grafana': location => 'https://packages.grafana.com/oss/deb', release => $grafana::repo_name, architecture => 'amd64,arm64,armhf', repos => 'main', key => { 'id' => '4E40DDF6D76E284A4A6780E48C8C34C524098CB6', 'source' => 'https://packages.grafana.com/gpg.key', }, before => Package[$::grafana::package_name], } Class['apt::update'] -> Package[$::grafana::package_name] } package { $::grafana::package_name: ensure => $::grafana::version, require => Package['libfontconfig1'], } } 'RedHat': { package { 'fontconfig': ensure => present, } if ( $::grafana::manage_package_repo ){ # http://docs.grafana.org/installation/rpm/#install-via-yum-repository $baseurl = $grafana::repo_name ? { 'stable' => 'https://packages.grafana.com/oss/rpm', 'beta' => 'https://packages.grafana.com/oss/rpm-beta', } yumrepo { 'grafana': descr => 'grafana repo', baseurl => $baseurl, gpgcheck => 1, gpgkey => 'https://packages.grafana.com/gpg.key', enabled => 1, before => Package[$::grafana::package_name], } } if $::grafana::version =~ /(installed|latest|present)/ { $real_version = $::grafana::version } else { $real_version = "${::grafana::version}-${::grafana::rpm_iteration}" } package { $::grafana::package_name: ensure => $real_version, require => Package['fontconfig'], } } 'Archlinux': { if $::grafana::manage_package_repo { fail('manage_package_repo is not supported on Archlinux') } package { $::grafana::package_name: ensure => 'present', # pacman provider doesn't have feature versionable } } default: { fail("${::operatingsystem} not supported") } } } 'archive': { # create log directory /var/log/grafana (or parameterize) if !defined(User['grafana']){ user { 'grafana': ensure => present, home => $::grafana::install_dir, } } file { $::grafana::install_dir: ensure => directory, group => 'grafana', owner => 'grafana', require => User['grafana'], } archive { '/tmp/grafana.tar.gz': ensure => present, extract => true, extract_command => 'tar xfz %s --strip-components=1', extract_path => $::grafana::install_dir, source => $real_archive_source, user => 'grafana', group => 'grafana', cleanup => true, require => File[$::grafana::install_dir], } } default: { fail("Installation method ${::grafana::install_method} not supported") } } }