Puppet Class: datadog_agent::suse

Inherits:
datadog_agent::params
Defined in:
manifests/suse.pp

Overview

Parameters:

  • agent_major_version (Integer) (defaults to: $datadog_agent::params::default_agent_major_version)
  • agent_version (String) (defaults to: $datadog_agent::params::agent_version)
  • release (String) (defaults to: $datadog_agent::params::apt_default_release)
  • agent_repo_uri (Optional[String]) (defaults to: undef)
  • agent_flavor (String) (defaults to: $datadog_agent::params::package_name)
  • rpm_repo_gpgcheck (Optional[Boolean]) (defaults to: undef)


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
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'manifests/suse.pp', line 6

class datadog_agent::suse(
  Integer $agent_major_version = $datadog_agent::params::default_agent_major_version,
  String $agent_version = $datadog_agent::params::agent_version,
  String $release = $datadog_agent::params::apt_default_release,
  Optional[String] $agent_repo_uri = undef,
  String $agent_flavor = $datadog_agent::params::package_name,
  Optional[Boolean] $rpm_repo_gpgcheck = undef,
) inherits datadog_agent::params {

  $current_key = 'https://keys.datadoghq.com/DATADOG_RPM_KEY_CURRENT.public'
  $all_keys = [
    $current_key,
    'https://keys.datadoghq.com/DATADOG_RPM_KEY_E09422B3.public',
    'https://keys.datadoghq.com/DATADOG_RPM_KEY_FD4BF915.public',
    'https://keys.datadoghq.com/DATADOG_RPM_KEY.public',
  ]

  if ($rpm_repo_gpgcheck != undef) {
    $repo_gpgcheck = $rpm_repo_gpgcheck
  } else {
    if ($agent_repo_uri == undef) {
      $repo_gpgcheck = true
    } else {
      $repo_gpgcheck = false
    }
  }

  case $agent_major_version {
      5 : { fail('Agent v5 package not available in SUSE') }
      6 : { $gpgkeys = $all_keys }
      7 : { $gpgkeys = $all_keys[0,-2] }
      default: { fail('invalid agent_major_version') }
  }

  if ($agent_repo_uri != undef) {
    $baseurl = $agent_repo_uri
  } else {
    $baseurl = "https://yum.datadoghq.com/suse/${release}/${agent_major_version}/${::architecture}"
  }

  package { 'datadog-agent-base':
    ensure => absent,
    before => Package[$agent_flavor],
  }

  # We need to install GPG keys manually since zypper will autoreject new keys
  # We download each key and import it using rpm --import
  $gpgkeys.each |String $key_url| {
    $key_name = split($key_url, '/')
    $key_path = "/tmp/${key_name[-1]}"

    file { $key_path:
      owner  => root,
      group  => root,
      mode   => '0600',
      source => $key_url,
    }

    exec { "install-${key_name}":
      command => "/bin/rpm --import ${key_path}",
    }
  }

  zypprepo { 'datadog':
    baseurl      => $baseurl,
    enabled      => 1,
    autorefresh  => 1,
    name         => 'datadog',
    gpgcheck     => 1,
    # zypper on SUSE < 15 only understands a single gpgkey value
    gpgkey       => (Float($::operatingsystemmajrelease) >= 15.0) ? { true => join($gpgkeys, "\n       "), default => $current_key },
    # TODO: when updating zypprepo to 4.0.0, uncomment the repo_gpgcheck line
    # For now, we can leave this commented, as zypper by default does repodata
    # signature checks if the repomd.xml.asc is present, so repodata checks
    # are effective for most users anyway. We'll make this explicit when we
    # update zypprepo version.
    # repo_gpgcheck => $repo_gpgcheck,
    keeppackages => 1,
  }

  package { $agent_flavor:
    ensure  => $agent_version,
  }

}