Skip to content

Commit 5e53996

Browse files
authored
[agent6] adding support for the agent beta (DataDog#356)
* [agent6] add support for agent6 config locations. * [agent6] adding agent6 repos. * [agent6] adding datadog.yaml config template. * [agent6] preparing main manifest for agent6 support. fix lint issues * [agent6][spec] fixes + spec test work [spec] fix for older rubies. [agent6] consistent YAML experience across puppets [spec][agent6] cover old puppet ZAML regex * [agent6][repo] remove beta if on stable and viceversa * [agent6][spec] adding RHEL and Ubuntu repo tests * [agent6][yum] no ensure on yumrepo -> use datadog repo definition for both beta and stable. * [docker_daemon] agent6 goes back to docker.yaml for config * [gemfile] pin jwt to 1.5.6
1 parent 74e13ac commit 5e53996

93 files changed

Lines changed: 3131 additions & 2117 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ source "https://rubygems.org"
22

33
group :test do
44
gem "syck"
5+
gem "public_suffix", "~> 2.0.5"
56
gem "safe_yaml", "~> 1.0.4"
67
gem "hiera-eyaml", "~> 2.1.0"
78
gem "listen", "~> 3.0.0"
89
gem "puppet", ENV['PUPPET_VERSION'] || '~> 4.2.0'
910
gem "puppet-lint"
1011
gem "puppet-syntax"
1112
gem "puppetlabs_spec_helper"
13+
gem "jwt", "~> 1.5.6"
1214
gem "rake"
1315
gem "rspec-puppet", '2.3.2'
1416
end

Rakefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ PuppetLint.configuration.fail_on_warnings = true
1919
PuppetLint.configuration.send('disable_class_parameter_defaults')
2020
# http://puppet-lint.com/checks/class_inherits_from_params_class/
2121
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
22+
PuppetLint.configuration.send('disable_variable_scope')
2223

2324
exclude_paths = [
2425
"pkg/**/*",

lib/puppet/reports/datadog_reports.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
Puppet::Reports.register_report(:datadog_reports) do
1111

12-
configfile = "/etc/dd-agent/datadog.yaml"
12+
configfile = "/etc/datadog-agent/datadog-reports.yaml"
1313
raise(Puppet::ParseError, "Datadog report config file #{configfile} not readable") unless File.readable?(configfile)
1414
config = YAML.load_file(configfile)
1515
API_KEY = config[:datadog_api_key]

manifests/init.pp

Lines changed: 115 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@
102102
# $use_dogstatsd
103103
# Enables the dogstatsd server
104104
# Boolean. Default: true
105+
# $dogstatsd_socket
106+
# Specifies the socket file to be used by dogstatsd. Must have use_dogstatsd set
107+
# String. Default: empty
105108
# $dogstatsd_port
106109
# Specifies the port to be used by dogstatsd. Must have use_dogstatsd set
107110
# String. Default: empty
@@ -139,6 +142,9 @@
139142
# $custom_emitters
140143
# Specifies a comma seperated list of non standard emitters to be used
141144
# String. Default: empty
145+
# $agent6_log_file
146+
# Specifies the log file location for the agent6
147+
# String. Default: empty
142148
# $collector_log_file
143149
# Specifies the log file location for the collector system
144150
# String. Default: empty
@@ -199,6 +205,7 @@
199205
$manage_repo = true,
200206
$hostname_extraction_regex = nil,
201207
$dogstatsd_port = 8125,
208+
$dogstatsd_socket = '',
202209
$statsd_forward_host = '',
203210
$statsd_forward_port = '',
204211
$statsd_histogram_percentiles = '0.95',
@@ -227,6 +234,7 @@
227234
$dogstatsd_normalize = true,
228235
$device_blacklist_re = '',
229236
$custom_emitters = '',
237+
$agent6_log_file = '/var/log/datadog/agent.log',
230238
$collector_log_file = '',
231239
$forwarder_log_file = '',
232240
$dogstatsd_log_file = '',
@@ -240,7 +248,9 @@
240248
$sd_template_dir = '',
241249
$sd_jmx_enable = false,
242250
$consul_token = '',
251+
$agent6_enable = $datadog_agent::params::agent6_enable,
243252
$conf_dir = $datadog_agent::params::conf_dir,
253+
$conf6_dir = $datadog_agent::params::conf6_dir,
244254
$conf_dir_purge = $datadog_agent::params::conf_dir_purge,
245255
$service_name = $datadog_agent::params::service_name,
246256
$package_name = $datadog_agent::params::package_name,
@@ -306,6 +316,7 @@
306316
validate_string($statsd_forward_host)
307317
validate_string($device_blacklist_re)
308318
validate_string($custom_emitters)
319+
validate_string($agent6_log_file)
309320
validate_string($collector_log_file)
310321
validate_string($forwarder_log_file)
311322
validate_string($dogstatsd_log_file)
@@ -320,6 +331,7 @@
320331
validate_bool($sd_jmx_enable)
321332
validate_string($consul_token)
322333
validate_bool($apm_enabled)
334+
validate_bool($agent6_enable)
323335
validate_string($apm_env)
324336

325337
if $hiera_tags {
@@ -352,74 +364,131 @@
352364
}
353365

354366
case $::operatingsystem {
355-
'Ubuntu','Debian' : { include datadog_agent::ubuntu }
367+
'Ubuntu','Debian' : {
368+
if !$agent6_enable {
369+
include datadog_agent::ubuntu
370+
} else {
371+
include datadog_agent::ubuntu::agent6
372+
}
373+
}
356374
'RedHat','CentOS','Fedora','Amazon','Scientific' : {
357-
class { 'datadog_agent::redhat':
358-
manage_repo => $manage_repo,
375+
if !$agent6_enable {
376+
class { 'datadog_agent::redhat':
377+
manage_repo => $manage_repo,
378+
}
379+
} else {
380+
class { 'datadog_agent::redhat::agent6':
381+
manage_repo => $manage_repo,
382+
}
359383
}
360384
}
361385
default: { fail("Class[datadog_agent]: Unsupported operatingsystem: ${::operatingsystem}") }
362386
}
363387

364-
file { '/etc/dd-agent':
388+
# required by reports even in agent5 scenario
389+
file { '/etc/datadog-agent':
365390
ensure => directory,
366391
owner => $dd_user,
367392
group => $dd_group,
368393
mode => '0755',
369394
require => Package['datadog-agent'],
370395
}
371396

372-
file { $conf_dir:
373-
ensure => directory,
374-
purge => $conf_dir_purge,
375-
recurse => true,
376-
force => $conf_dir_purge,
377-
owner => $dd_user,
378-
group => $dd_group,
379-
notify => Service['datadog-agent']
380-
}
381397

382-
concat {'/etc/dd-agent/datadog.conf':
383-
owner => $datadog_agent::params::dd_user,
384-
group => $datadog_agent::params::dd_group,
385-
mode => '0640',
386-
notify => Service[$datadog_agent::params::service_name],
387-
require => File['/etc/dd-agent'],
388-
}
398+
if !$agent6_enable {
399+
file { '/etc/dd-agent':
400+
ensure => directory,
401+
owner => $dd_user,
402+
group => $dd_group,
403+
mode => '0755',
404+
require => Package['datadog-agent'],
405+
}
389406

390-
concat::fragment{ 'datadog header':
391-
target => '/etc/dd-agent/datadog.conf',
392-
content => template('datadog_agent/datadog_header.conf.erb'),
393-
order => '01',
394-
}
407+
file { $conf_dir:
408+
ensure => directory,
409+
purge => $conf_dir_purge,
410+
recurse => true,
411+
force => $conf_dir_purge,
412+
owner => $dd_user,
413+
group => $dd_group,
414+
notify => Service['datadog-agent']
415+
}
395416

396-
concat::fragment{ 'datadog tags':
397-
target => '/etc/dd-agent/datadog.conf',
398-
content => 'tags: ',
399-
order => '02',
400-
}
417+
concat {'/etc/dd-agent/datadog.conf':
418+
owner => $datadog_agent::params::dd_user,
419+
group => $datadog_agent::params::dd_group,
420+
mode => '0640',
421+
notify => Service[$datadog_agent::params::service_name],
422+
require => File['/etc/dd-agent'],
423+
}
401424

402-
concat::fragment{ 'datadog footer':
403-
target => '/etc/dd-agent/datadog.conf',
404-
content => template('datadog_agent/datadog_footer.conf.erb'),
405-
order => '05',
406-
}
425+
concat::fragment{ 'datadog header':
426+
target => '/etc/dd-agent/datadog.conf',
427+
content => template('datadog_agent/datadog_header.conf.erb'),
428+
order => '01',
429+
}
430+
431+
concat::fragment{ 'datadog tags':
432+
target => '/etc/dd-agent/datadog.conf',
433+
content => 'tags: ',
434+
order => '02',
435+
}
436+
437+
concat::fragment{ 'datadog footer':
438+
target => '/etc/dd-agent/datadog.conf',
439+
content => template('datadog_agent/datadog_footer.conf.erb'),
440+
order => '05',
441+
}
442+
443+
if ($extra_template != '') {
444+
concat::fragment{ 'datadog extra_template footer':
445+
target => '/etc/dd-agent/datadog.conf',
446+
content => template($extra_template),
447+
order => '06',
448+
}
449+
$apm_footer_order = '07'
450+
} else {
451+
$apm_footer_order = '06'
452+
}
407453

408-
if ($extra_template != '') {
409-
concat::fragment{ 'datadog extra_template footer':
454+
concat::fragment{ 'datadog apm footer':
410455
target => '/etc/dd-agent/datadog.conf',
411-
content => template($extra_template),
412-
order => '06',
456+
content => template('datadog_agent/datadog_apm_footer.conf.erb'),
457+
order => $apm_footer_order,
413458
}
414-
$apm_footer_order = '07'
415459
} else {
416-
$apm_footer_order = '06'
417-
}
418460

419-
concat::fragment{ 'datadog apm footer':
420-
target => '/etc/dd-agent/datadog.conf',
421-
content => template('datadog_agent/datadog_apm_footer.conf.erb'),
422-
order => $apm_footer_order,
461+
file { $conf6_dir:
462+
ensure => directory,
463+
purge => $conf_dir_purge,
464+
recurse => true,
465+
force => $conf_dir_purge,
466+
owner => $dd_user,
467+
group => $dd_group,
468+
notify => Service['datadog-agent']
469+
}
470+
471+
$agent_config = {
472+
'api_key' => $api_key,
473+
'dd_url' => $dd_url,
474+
'cmd_port' => 5001,
475+
'conf_path' => $datadog_agent::params::conf6_dir,
476+
'enable_metadata_collection' => $collect_instance_metadata,
477+
'dogstatsd_port' => $dogstatsd_port,
478+
'dogstatsd_socket' => $dogstatsd_socket,
479+
'dogstatsd_non_local_traffic' => $non_local_traffic,
480+
'log_file' => $agent6_log_file,
481+
'log_level' => $log_level,
482+
}
483+
484+
file { '/etc/datadog-agent/datadog.yaml':
485+
owner => 'dd-agent',
486+
group => 'dd-agent',
487+
mode => '0640',
488+
content => template('datadog_agent/datadog6.yaml.erb'),
489+
notify => Service[$datadog_agent::params::service_name],
490+
require => File['/etc/datadog-agent'],
491+
}
423492
}
424493

425494

manifests/integration.pp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@
1212
}
1313
validate_string($integration)
1414

15-
file { "${datadog_agent::conf_dir}/${integration}.yaml":
15+
if $::datadog_agent::agent6_enable {
16+
$dst = "${datadog_agent::conf6_dir}/${integration}.yaml"
17+
} else {
18+
$dst = "${datadog_agent::conf_dir}/${integration}.yaml"
19+
}
20+
21+
file { $dst:
1622
ensure => file,
1723
owner => $datadog_agent::dd_user,
1824
group => $datadog_agent::dd_group,

manifests/integrations/apache.pp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,13 @@
3939
validate_array($tags)
4040
validate_bool($disable_ssl_validation)
4141

42-
file { "${datadog_agent::params::conf_dir}/apache.yaml":
42+
if $::datadog_agent::agent6_enable {
43+
$dst = "${datadog_agent::conf6_dir}/apache.yaml"
44+
} else {
45+
$dst = "${datadog_agent::conf_dir}/apache.yaml"
46+
}
47+
48+
file { $dst:
4349
ensure => file,
4450
owner => $datadog_agent::params::dd_user,
4551
group => $datadog_agent::params::dd_group,

manifests/integrations/cacti.pp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,13 @@
2020
) inherits datadog_agent::params {
2121
include datadog_agent
2222

23-
file { "${datadog_agent::params::conf_dir}/cacti.yaml":
23+
if $::datadog_agent::agent6_enable {
24+
$dst = "${datadog_agent::conf6_dir}/cacti.yaml"
25+
} else {
26+
$dst = "${datadog_agent::conf_dir}/cacti.yaml"
27+
}
28+
29+
file { $dst:
2430
ensure => file,
2531
owner => $datadog_agent::params::dd_user,
2632
group => $datadog_agent::params::dd_group,

manifests/integrations/cassandra.pp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,13 @@
3535
require ::datadog_agent
3636
validate_hash($tags)
3737

38-
file { "${datadog_agent::params::conf_dir}/cassandra.yaml":
38+
if $::datadog_agent::agent6_enable {
39+
$dst = "${datadog_agent::conf6_dir}/cassandra.yaml"
40+
} else {
41+
$dst = "${datadog_agent::conf_dir}/cassandra.yaml"
42+
}
43+
44+
file { $dst:
3945
ensure => file,
4046
owner => $datadog_agent::params::dd_user,
4147
group => $datadog_agent::params::dd_group,

manifests/integrations/ceph.pp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@
2525
content => "# This file is required for dd ceph \ndd-agent ALL=(ALL) NOPASSWD:/usr/bin/ceph\n"
2626
}
2727

28-
file { "${datadog_agent::params::conf_dir}/ceph.yaml":
28+
if $::datadog_agent::agent6_enable {
29+
$dst = "${datadog_agent::conf6_dir}/ceph.yaml"
30+
} else {
31+
$dst = "${datadog_agent::conf_dir}/ceph.yaml"
32+
}
33+
34+
file { $dst:
2935
ensure => file,
3036
owner => $datadog_agent::params::dd_user,
3137
group => $datadog_agent::params::dd_group,

manifests/integrations/consul.pp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,13 @@
3939
validate_bool($new_leader_checks)
4040
validate_array($service_whitelist)
4141

42-
file { "${datadog_agent::params::conf_dir}/consul.yaml":
42+
if $::datadog_agent::agent6_enable {
43+
$dst = "${datadog_agent::conf6_dir}/consul.yaml"
44+
} else {
45+
$dst = "${datadog_agent::conf_dir}/consul.yaml"
46+
}
47+
48+
file { $dst:
4349
ensure => file,
4450
owner => $datadog_agent::params::dd_user,
4551
group => $datadog_agent::params::dd_group,

0 commit comments

Comments
 (0)