Puppet Class: zabbix::repo

Inherits:
zabbix::params
Defined in:
manifests/repo.pp

Overview

Class: zabbix::repo

If enabled, this will install the repository used for installing zabbix

Please note:
This class will be called from zabbix::server, zabbix::proxy and
zabbix::agent. No need for calling this class manually.

Parameters

manage_repo

When true, it will create repository for installing the server.

zabbix_version

This is the zabbix version.

Authors

Author Name:

ikben@werner-dijkerman.nl
Tim Meusel <tim@bastelfreak.de>

Copyright 2014 Werner Dijkerman

Parameters:

  • manage_repo (Any) (defaults to: $zabbix::params::manage_repo)
  • repo_location (Any) (defaults to: $zabbix::params::repo_location)
  • zabbix_version (Any) (defaults to: $zabbix::params::zabbix_version)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'manifests/repo.pp', line 28

class zabbix::repo (
  $manage_repo    = $zabbix::params::manage_repo,
  $repo_location  = $zabbix::params::repo_location,
  $zabbix_version = $zabbix::params::zabbix_version,
) inherits zabbix::params {
  if ($manage_repo) {
    case $::operatingsystem {
      'PSBM'        : {
        $majorrelease = '6'
        $reponame     = $majorrelease
      }
      'Amazon'        : {
        $majorrelease = '6'
        $reponame     = $majorrelease
      }
      'oraclelinux' : {
        $majorrelease = $::operatingsystemmajrelease
        $reponame     = $majorrelease
      }
      default       : {
        $majorrelease = $::operatingsystemmajrelease
        $reponame     = $::operatingsystemmajrelease
      }
    }

    case $::operatingsystemrelease {
      /\/sid$/ : { $releasename = regsubst($::operatingsystemrelease, '/sid$', '') }
      default  : { $releasename = $::lsbdistcodename }
    }

    case $::osfamily {
      'RedHat' : {
        yumrepo { 'zabbix':
          name     => "Zabbix_${reponame}_${::architecture}",
          descr    => "Zabbix_${reponame}_${::architecture}",
          baseurl  => "http://repo.zabbix.com/zabbix/${zabbix_version}/rhel/${majorrelease}/\$basearch/",
          gpgcheck => '1',
          gpgkey   => 'http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX',
          priority => '1',
        }

        yumrepo { 'zabbix-nonsupported':
          name     => "Zabbix_nonsupported_${reponame}_${::architecture}",
          descr    => "Zabbix_nonsupported_${reponame}_${::architecture}",
          baseurl  => "http://repo.zabbix.com/non-supported/rhel/${majorrelease}/\$basearch/",
          gpgcheck => '1',
          gpgkey   => 'http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX',
          priority => '1',
        }

      }
      'Debian' : {
        if ($::architecture == 'armv6l') {
          apt::source { 'zabbix':
            location => 'http://naizvoru.com/raspbian/zabbix',
            repos    => 'main',
            key      => {
              'id'     => 'BC274A7EA7FD5DD267C9A18FD54A213C80E871A7',
              'source' => 'http://naizvoru.com/raspbian/zabbix/conf/boris@steki.net.gpg.key',
            }
            ,
            include  => {
              'src' => false,
            }
            ,
          }
        } else {
          $operatingsystem = downcase($::operatingsystem)

          apt::source { 'zabbix':
            location => "http://repo.zabbix.com/zabbix/${zabbix_version}/${operatingsystem}/",
            repos    => 'main',
            release  => $releasename,
            key      => {
              'id'     => 'FBABD5FB20255ECAB22EE194D13D58E479EA5ED4',
              'source' => 'http://repo.zabbix.com/zabbix-official-repo.key',
            }
            ,
          }
        }
      }
      default  : {
        fail('Unrecognized operating system for webserver')
      }
    }
  } # end if ($manage_repo)
}