Puppet Class: dynatrace::role::wsagent_package

Inherits:
dynatrace
Defined in:
manifests/role/wsagent_package.pp

Overview

wsagent_package

Parameters:

  • ensure (Any) (defaults to: 'present')
  • role_name (Any) (defaults to: 'Dynatrace WebServer Agent')
  • installer_prefix_dir (Any) (defaults to: $dynatrace::wsagent_package_installer_prefix_dir)
  • installer_file_name (Any) (defaults to: $dynatrace::wsagent_package_installer_file_name)
  • installer_file_url (Any) (defaults to: $dynatrace::wsagent_package_installer_file_url)
  • agent_name (Any) (defaults to: $dynatrace::wsagent_package_agent_name)
  • collector_hostname (Any) (defaults to: $dynatrace::wsagent_package_collector_hostname)
  • collector_port (Any) (defaults to: $dynatrace::wsagent_package_collector_port)
  • dynatrace_owner (Any) (defaults to: $dynatrace::dynatrace_owner)
  • dynatrace_group (Any) (defaults to: $dynatrace::dynatrace_group)


2
3
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
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
115
116
117
118
119
120
# File 'manifests/role/wsagent_package.pp', line 2

class dynatrace::role::wsagent_package (
  $ensure               = 'present',
  $role_name            = 'Dynatrace WebServer Agent',
  $installer_prefix_dir = $dynatrace::wsagent_package_installer_prefix_dir,
  $installer_file_name  = $dynatrace::wsagent_package_installer_file_name,
  $installer_file_url   = $dynatrace::wsagent_package_installer_file_url,
  $agent_name           = $dynatrace::wsagent_package_agent_name,
  $collector_hostname   = $dynatrace::wsagent_package_collector_hostname,
  $collector_port       = $dynatrace::wsagent_package_collector_port,
  $dynatrace_owner      = $dynatrace::dynatrace_owner,
  $dynatrace_group      = $dynatrace::dynatrace_group,
) inherits dynatrace {

  validate_re($ensure, ['^present$', '^absent$'])
  validate_string($installer_prefix_dir, $installer_file_name)
  validate_string($agent_name, $collector_hostname, $collector_port)

  case $::kernel {
    'Linux': {
      $installer_script_name = 'install-wsagent-package.sh'
      $service = $dynatrace::dynaTraceWebServerAgent
      $init_scripts = [$service]
    }
    default: {}
  }

  $directory_ensure = $ensure ? {
    'present' => 'directory',
    'absent'  => 'absent',
    default   => 'directory',
  }

  $installation_ensure = $ensure ? {
    'present' => 'installed',
    'absent'  => 'uninstalled',
    default   => 'installed',
  }

  $service_ensure = $ensure ? {
    'present' => 'running',
    'absent'  => 'stopped',
    default   => 'running',
  }

  $installer_cache_dir = "${settings::vardir}/dynatrace"
  $installer_cache_dir_tree = dirtree($installer_cache_dir)


  include dynatrace::role::dynatrace_user

  ensure_resource(file, $installer_cache_dir_tree, {
    ensure  => $directory_ensure,
    require => Class['dynatrace::role::dynatrace_user']
  })

  dynatrace::resource::copy_or_download_file { "Copy or download the ${role_name} installer":
    ensure    => $ensure,
    file_name => $installer_file_name,
    file_url  => $installer_file_url,
    path      => "${installer_cache_dir}/${installer_file_name}",
    require   => File[$installer_cache_dir_tree],
    notify    => [
      File["Configure and copy the ${role_name}'s install script"],
      Dynatrace_installation["Install the ${role_name}"]
    ]
  }

  file { "Configure and copy the ${role_name}'s install script":
    ensure  => $ensure,
    path    => "${installer_cache_dir}/${installer_script_name}",
    content => template("dynatrace/wsagent_package/${installer_script_name}"),
    mode    => '0744',
    before  => Dynatrace_installation["Install the ${role_name}"]
  }

  dynatrace_installation { "Install the ${role_name}":
    ensure                  => $installation_ensure,
    installer_prefix_dir    => $installer_prefix_dir,
    installer_file_name     => $installer_file_name,
    installer_file_url      => $installer_file_url,
    installer_script_name   => $installer_script_name,
    installer_path_part     => 'agent',
    installer_path_detailed => "${installer_prefix_dir}/dynatrace/agent/conf/agentversion.${agent_name}",
    installer_owner         => $dynatrace_owner,
    installer_group         => $dynatrace_group,
    installer_cache_dir     => $installer_cache_dir
  }

  file { "Configure and copy the ${role_name}'s 'dtwsagent.ini' file":
    ensure  => $ensure,
    path    => "${installer_prefix_dir}/dynatrace/agent/conf/dtwsagent.ini",
    owner   => $dynatrace_owner,
    group   => $dynatrace_group,
    content => template('dynatrace/wsagent_package/dtwsagent.ini.erb'),
    require => Dynatrace_installation["Install the ${role_name}"],
    notify  => Service["Start and enable the ${role_name}'s service: '${service}'"]
  }

  if $::kernel == 'Linux' {
    dynatrace::resource::configure_init_script { $init_scripts:
      ensure               => $ensure,
      role_name            => $role_name,
      installer_prefix_dir => $installer_prefix_dir,
      owner                => $dynatrace_owner,
      group                => $dynatrace_group,
      init_scripts_params  => {
        'installer_prefix_dir' => $installer_prefix_dir,
        'user'                 => $dynatrace_owner
      },
      notify               => Service["Start and enable the ${role_name}'s service: '${service}'"]
    }
  }

  service { "Start and enable the ${role_name}'s service: '${service}'":
    ensure => $service_ensure,
    name   => $service,
    enable => true
  }
}