Puppet Class: tempo::install

Defined in:
manifests/install.pp

Summary

A short summary of the purpose of this class

Overview



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
# File 'manifests/install.pp', line 4

class tempo::install {
  case $::tempo::install_method {
    'archive': {
      $release_file_name = "tempo_${tempo::version}_linux_amd64"
      $version_dir = "${tempo::data_dir}/tempo-${tempo::version}"

      $binary_path = "${version_dir}/${release_file_name}"

      if $::tempo::manage_user {
        user { 'tempo':
          ensure => present,
          home   => $tempo::data_dir,
          name   => $::tempo::user,
        }
        group { 'tempo':
          ensure => present,
          name   => $::tempo::group
        }

        File[$version_dir] {
          require => [Group['tempo'],User['tempo']],
        }
      }

      file { [$tempo::data_dir, $version_dir]:
        ensure => directory,
        group  => $::tempo::group,
        owner  => $::tempo::user,
      }
      -> archive { "${binary_path}.tar.gz":
        ensure       => present,
        source       => "https://github.com/grafana/tempo/releases/download/v${tempo::version}/${release_file_name}.tar.gz",
        extract      => true,
        extract_path => $version_dir,
        creates      => "${version_dir}/tempo",
        cleanup      => false,
        user         => $::tempo::user,
        group        => $::tempo::group,
      }

      file {
        "${version_dir}/tempo":
          ensure  => file,
          group   => $::tempo::group,
          mode    => '0755',
          owner   => $::tempo::user,
          require => Archive["${binary_path}.tar.gz"],
        ;
        "${tempo::bin_dir}/tempo":
          ensure  => link,
          group   => $::tempo::group,
          owner   => $::tempo::user,
          target  => "${version_dir}/tempo",
          require => File["${version_dir}/tempo"],
        ;
      }

      if $::tempo::manage_service {
        File["${tempo::bin_dir}/tempo"] {
          notify => Service['tempo'],
        }
      }
    }
    'package': {
      package { 'tempo':
        ensure => $::tempo::package_version,
        name   => $::tempo::package_name,
      }
    }
    default: {
      fail("Installation method ${::tempo::install_method} not supported")
    }
  }
}