Puppet Class: signalfx_agent
- Defined in:
- manifests/init.pp
Overview
Main class that installs and configures the agent
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 |
# File 'manifests/init.pp', line 2
class signalfx_agent (
$config = lookup('signalfx_agent::config', Hash, 'deep'),
$package_stage = 'release',
$repo_base = 'splunk.jfrog.io/splunk',
$config_file_path = $::osfamily ? {
'debian' => '/etc/signalfx/agent.yaml',
'redhat' => '/etc/signalfx/agent.yaml',
'windows' => 'C:\\ProgramData\\SignalFxAgent\\agent.yaml',
default => '/etc/signalfx/agent.yaml'
},
$agent_version = '',
$package_version = '',
$installation_directory = 'C:\\Program Files\\SignalFx',
$service_user = 'signalfx-agent', # linux only
$service_group = 'signalfx-agent', # linux only
) {
$service_name = 'signalfx-agent'
if !$config['signalFxAccessToken'] {
fail("The \$config parameter must contain a 'signalFxAccessToken'")
}
if $::osfamily == 'windows' {
if $agent_version == '' {
fail("The \$agent_version parameter must be set to a valid SignalFx Agent version")
}
$split_config_file_path = $config_file_path.split('\\\\')
$config_parent_directory_path = $split_config_file_path[0, - 2].join('\\')
package { $service_name:
ensure => 'installed',
name => 'signalfx-agent',
provider => 'windows',
source => "${installation_directory}\\SignalFxAgent\\bin\\signalfx-agent.exe",
install_options => [{ '-service' => '"install"' }, '-logEvents', { '-config' => $config_file_path }],
}
}
else {
$split_config_file_path = $config_file_path.split('/')
$config_parent_directory_path = $split_config_file_path[0, - 2].join('/')
if $package_version == '' {
if $agent_version == '' {
$version = 'latest'
} else {
$version = "${agent_version}-1"
}
} else {
$version = $package_version
}
package { $service_name:
ensure => $version
}
}
case $::osfamily {
'debian': {
class { 'signalfx_agent::debian_repo':
repo_base => $repo_base,
package_stage => $package_stage,
}
}
'redhat': {
class { 'signalfx_agent::yum_repo':
repo_base => $repo_base,
package_stage => $package_stage,
}
}
'windows': {
File[$config_file_path]
-> class { 'signalfx_agent::win_repo':
repo_base => 'dl.signalfx.com',
package_stage => $package_stage,
version => $agent_version,
config_file_path => $config_file_path,
installation_directory => $installation_directory,
service_name => $service_name,
}
}
default: {
fail("Your OS (${::osfamily}) is not supported by the SignalFx Agent")
}
}
-> Package[$service_name]
-> service { $service_name:
ensure => true,
enable => true,
}
if $::osfamily != 'windows' {
class { 'signalfx_agent::service_owner':
service_name => $service_name,
service_user => $service_user,
service_group => $service_group,
}
}
file { $config_parent_directory_path:
ensure => 'directory',
}
file { $config_file_path:
ensure => 'file',
content => template('signalfx_agent/agent.yaml.erb'),
mode => '0600',
}
File[$config_parent_directory_path] ~> File[$config_file_path] ~> Service[$service_name]
}
|