Skip to content

Commit 38c3bef

Browse files
authored
Add manage_install option (DataDog#608)
- Add manage_install parameter to disable installing the Agent - Split service and repo management, since service code is the same for all Linuxes while repo code is not.
1 parent 31ca191 commit 38c3bef

8 files changed

Lines changed: 134 additions & 292 deletions

File tree

manifests/init.pp

Lines changed: 57 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,11 @@
6767
# Set the value of the statsd_forward_port varable. Used to forward all
6868
# statsd metrics to another host.
6969
# $manage_repo
70-
# Boolean to indicate whether this module should attempt to manage
71-
# the package repo. Only for RPM-based distros. Default true.
70+
# Deprecated. Only works for RPM. Install datadog-agent manually and then set
71+
# manage_install=false to achieve the same behaviour as setting this to false.
72+
# $manage_install
73+
# Boolean to indicate whether this module should attempt to install the
74+
# Agent, or assume it will be installed by other means. Default true.
7275
# $graphite_listen_port
7376
# Set graphite listener port
7477
# $extra_template
@@ -243,6 +246,7 @@
243246
$service_ensure = 'running',
244247
$service_enable = true,
245248
Boolean $manage_repo = true,
249+
Boolean $manage_install = true,
246250
$hostname_extraction_regex = undef,
247251
Boolean $hostname_fqdn = false,
248252
$dogstatsd_port = 8125,
@@ -385,56 +389,61 @@
385389
default: { $_loglevel = 'INFO' }
386390
}
387391

388-
if $use_apt_backup_keyserver {
389-
$_apt_keyserver = $apt_backup_keyserver
390-
} else {
391-
$_apt_keyserver = $apt_keyserver
392-
}
393-
394-
case $::operatingsystem {
395-
'Ubuntu','Debian' : {
396-
class { 'datadog_agent::ubuntu':
397-
agent_major_version => $_agent_major_version,
398-
agent_version => $agent_version,
399-
service_ensure => $service_ensure,
400-
service_enable => $service_enable,
401-
service_provider => $service_provider,
402-
agent_repo_uri => $agent_repo_uri,
403-
release => $apt_release,
404-
skip_apt_key_trusting => $skip_apt_key_trusting,
405-
apt_keyserver => $_apt_keyserver,
406-
}
407-
}
408-
'RedHat','CentOS','Fedora','Amazon','Scientific','OracleLinux' : {
409-
class { 'datadog_agent::redhat':
410-
agent_major_version => $_agent_major_version,
411-
agent_repo_uri => $agent_repo_uri,
412-
manage_repo => $manage_repo,
413-
agent_version => $agent_version,
414-
service_ensure => $service_ensure,
415-
service_enable => $service_enable,
416-
service_provider => $service_provider,
392+
# Install agent
393+
if $manage_install {
394+
case $::operatingsystem {
395+
'Ubuntu','Debian' : {
396+
if $use_apt_backup_keyserver {
397+
$_apt_keyserver = $apt_backup_keyserver
398+
} else {
399+
$_apt_keyserver = $apt_keyserver
400+
}
401+
class { 'datadog_agent::ubuntu':
402+
agent_major_version => $_agent_major_version,
403+
agent_version => $agent_version,
404+
agent_repo_uri => $agent_repo_uri,
405+
release => $apt_release,
406+
skip_apt_key_trusting => $skip_apt_key_trusting,
407+
apt_keyserver => $_apt_keyserver,
408+
}
417409
}
418-
}
419-
'Windows' : {
420-
class { 'datadog_agent::windows' :
421-
agent_major_version => $_agent_major_version,
422-
agent_repo_uri => $agent_repo_uri,
423-
agent_version => $agent_version,
424-
service_ensure => $service_ensure,
425-
service_enable => $service_enable,
426-
msi_location => $win_msi_location,
427-
api_key => $api_key,
428-
hostname => $host,
429-
service_name => $datadog_agent::params::service_name,
430-
tags => $local_tags,
431-
ensure => $win_ensure
410+
'RedHat','CentOS','Fedora','Amazon','Scientific','OracleLinux' : {
411+
class { 'datadog_agent::redhat':
412+
agent_major_version => $_agent_major_version,
413+
agent_repo_uri => $agent_repo_uri,
414+
manage_repo => $manage_repo,
415+
agent_version => $agent_version,
416+
}
432417
}
433-
if ($win_ensure == absent) {
434-
return() #Config files will remain unchanged on uninstall
418+
'Windows' : {
419+
class { 'datadog_agent::windows' :
420+
agent_major_version => $_agent_major_version,
421+
agent_repo_uri => $agent_repo_uri,
422+
agent_version => $agent_version,
423+
msi_location => $win_msi_location,
424+
api_key => $api_key,
425+
hostname => $host,
426+
tags => $local_tags,
427+
ensure => $win_ensure
428+
}
429+
if ($win_ensure == absent) {
430+
return() #Config files will remain unchanged on uninstall
431+
}
435432
}
433+
default: { fail("Class[datadog_agent]: Unsupported operatingsystem: ${::operatingsystem}") }
436434
}
437-
default: { fail("Class[datadog_agent]: Unsupported operatingsystem: ${::operatingsystem}") }
435+
} else {
436+
package { $datadog_agent::params::package_name:
437+
ensure => present,
438+
source => 'Agent installation not managed by Puppet, make sure the Agent is installed beforehand.',
439+
}
440+
}
441+
442+
# Declare service
443+
class { 'datadog_agent::service' :
444+
service_ensure => $service_ensure,
445+
service_enable => $service_enable,
446+
service_provider => $service_provider,
438447
}
439448

440449
if ($::operatingsystem != 'Windows') {

manifests/redhat.pp

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@
88
Optional[String] $agent_repo_uri = undef,
99
Boolean $manage_repo = true,
1010
String $agent_version = $datadog_agent::params::agent_version,
11-
String $service_ensure = 'running',
12-
Boolean $service_enable = true,
13-
Optional[String] $service_provider = undef,
1411
) inherits datadog_agent::params {
1512

1613
if $manage_repo {
@@ -82,23 +79,4 @@
8279
ensure => $agent_version,
8380
}
8481

85-
if $service_provider {
86-
service { $datadog_agent::params::service_name:
87-
ensure => $service_ensure,
88-
enable => $service_enable,
89-
provider => $service_provider,
90-
hasstatus => false,
91-
pattern => 'dd-agent',
92-
require => Package[$datadog_agent::params::package_name],
93-
}
94-
} else {
95-
service { $datadog_agent::params::service_name:
96-
ensure => $service_ensure,
97-
enable => $service_enable,
98-
hasstatus => false,
99-
pattern => 'dd-agent',
100-
require => Package[$datadog_agent::params::package_name],
101-
}
102-
}
103-
10482
}

manifests/service.pp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Class: datadog_agent::service
2+
#
3+
# This class declares the datadog-agent service
4+
#
5+
6+
class datadog_agent::service(
7+
$service_ensure = 'running',
8+
Boolean $service_enable = true,
9+
Optional[String] $service_provider = undef,
10+
) inherits datadog_agent::params {
11+
12+
if ($::operatingsystem == 'Windows') {
13+
service { $datadog_agent::params::service_name:
14+
ensure => $service_ensure,
15+
enable => $service_enable,
16+
require => Package[$datadog_agent::params::package_name]
17+
}
18+
} else {
19+
if $service_provider {
20+
service { $datadog_agent::params::service_name:
21+
ensure => $service_ensure,
22+
enable => $service_enable,
23+
provider => $service_provider,
24+
hasstatus => false,
25+
pattern => 'dd-agent',
26+
require => Package[$datadog_agent::params::package_name],
27+
}
28+
} else {
29+
service { $datadog_agent::params::service_name:
30+
ensure => $service_ensure,
31+
enable => $service_enable,
32+
hasstatus => false,
33+
pattern => 'dd-agent',
34+
require => Package[$datadog_agent::params::package_name],
35+
}
36+
}
37+
}
38+
39+
40+
}

manifests/ubuntu.pp

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@
1010
Optional[String] $agent_repo_uri = undef,
1111
String $release = $datadog_agent::params::apt_default_release,
1212
Boolean $skip_apt_key_trusting = false,
13-
String $service_ensure = 'running',
14-
Boolean $service_enable = true,
15-
Optional[String] $service_provider = undef,
1613
Optional[String] $apt_keyserver = undef,
1714
) inherits datadog_agent::params {
1815

@@ -77,22 +74,4 @@
7774
Class['apt::update']],
7875
}
7976

80-
if $service_provider {
81-
service { $datadog_agent::params::service_name:
82-
ensure => $service_ensure,
83-
enable => $service_enable,
84-
provider => $service_provider,
85-
hasstatus => false,
86-
pattern => 'dd-agent',
87-
require => Package[$datadog_agent::params::package_name],
88-
}
89-
} else {
90-
service { $datadog_agent::params::service_name:
91-
ensure => $service_ensure,
92-
enable => $service_enable,
93-
hasstatus => false,
94-
pattern => 'dd-agent',
95-
require => Package[$datadog_agent::params::package_name],
96-
}
97-
}
9877
}

manifests/windows.pp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,11 @@
66
class datadog_agent::windows(
77
Integer $agent_major_version = $datadog_agent::params::default_agent_major_version,
88
String $agent_version = $datadog_agent::params::agent_version,
9-
String $service_ensure = 'running',
109
Optional[String] $agent_repo_uri = undef,
1110
String $msi_location = 'C:/Windows/temp',
1211
String $api_key = $datadog_agent::api_key,
1312
String $hostname = $datadog_agent::host,
14-
String $service_name = $datadog_agent::service_name_win,
1513
Array $tags = $datadog_agent::tags,
16-
Boolean $service_enable = true,
1714
Enum['present', 'absent'] $ensure = 'present',
1815
) inherits datadog_agent::params {
1916

@@ -63,11 +60,6 @@
6360
install_options => ['/norestart', {'APIKEY' => $api_key, 'HOSTNAME' => $hostname, 'TAGS' => $tags}]
6461
}
6562

66-
service { $service_name:
67-
ensure => $service_ensure,
68-
enable => $service_enable,
69-
require => Package[$datadog_agent::params::package_name]
70-
}
7163
} else {
7264
exec { 'datadog_6_14_fix':
7365
command => "((New-Object System.Net.WebClient).DownloadFile('https://s3.amazonaws.com/ddagent-windows-stable/scripts/fix_6_14.ps1', \$env:temp + '\\fix_6_14.ps1')); &\$env:temp\\fix_6_14.ps1",

spec/classes/datadog_agent_redhat_spec.rb

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -44,37 +44,11 @@
4444
is_expected.not_to contain_yumrepo('datadog6')
4545
end
4646
end
47-
context 'overriding provider' do
48-
let(:params) do
49-
{
50-
service_provider: 'upstart',
51-
agent_major_version: 5,
52-
}
53-
end
54-
55-
it do
56-
is_expected.to contain_service('datadog-agent')\
57-
.that_requires('package[datadog-agent]')
58-
end
59-
it do
60-
is_expected.to contain_service('datadog-agent').with(
61-
'provider' => 'upstart',
62-
'ensure' => 'running',
63-
)
64-
end
65-
end
66-
6747
# it should install the packages
6848
it do
6949
is_expected.to contain_package('datadog-agent')\
7050
.with_ensure('latest')
7151
end
72-
73-
# it should be able to start the service and enable the service by default
74-
it do
75-
is_expected.to contain_service('datadog-agent')\
76-
.that_requires('Package[datadog-agent]')
77-
end
7852
end
7953

8054
context 'agent 6' do
@@ -115,37 +89,12 @@
11589
is_expected.not_to contain_yumrepo('datadog6')
11690
end
11791
end
118-
context 'overriding provider' do
119-
let(:params) do
120-
{
121-
service_provider: 'upstart',
122-
agent_major_version: 6,
123-
}
124-
end
125-
126-
it do
127-
is_expected.to contain_service('datadog-agent')\
128-
.that_requires('package[datadog-agent]')
129-
end
130-
it do
131-
is_expected.to contain_service('datadog-agent').with(
132-
'provider' => 'upstart',
133-
'ensure' => 'running',
134-
)
135-
end
136-
end
13792

13893
# it should install the packages
13994
it do
14095
is_expected.to contain_package('datadog-agent')\
14196
.with_ensure('latest')
14297
end
143-
144-
# it should be able to start the service and enable the service by default
145-
it do
146-
is_expected.to contain_service('datadog-agent')\
147-
.that_requires('Package[datadog-agent]')
148-
end
14998
end
15099

151100
context 'agent 7' do
@@ -187,36 +136,11 @@
187136
is_expected.not_to contain_yumrepo('datadog6')
188137
end
189138
end
190-
context 'overriding provider' do
191-
let(:params) do
192-
{
193-
service_provider: 'upstart',
194-
agent_major_version: 7,
195-
}
196-
end
197-
198-
it do
199-
is_expected.to contain_service('datadog-agent')\
200-
.that_requires('package[datadog-agent]')
201-
end
202-
it do
203-
is_expected.to contain_service('datadog-agent').with(
204-
'provider' => 'upstart',
205-
'ensure' => 'running',
206-
)
207-
end
208-
end
209139

210140
# it should install the packages
211141
it do
212142
is_expected.to contain_package('datadog-agent')\
213143
.with_ensure('latest')
214144
end
215-
216-
# it should be able to start the service and enable the service by default
217-
it do
218-
is_expected.to contain_service('datadog-agent')\
219-
.that_requires('Package[datadog-agent]')
220-
end
221145
end
222146
end

0 commit comments

Comments
 (0)