Puppet Class: signalfx_agent::service_owner
- Defined in:
- manifests/service_owner.pp
Overview
Sets the user/group for the signalfx-agent service. If the user or group does not exist, they will be created.
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 121 122 123 124 125 126 |
# File 'manifests/service_owner.pp', line 3
class signalfx_agent::service_owner ($service_name, $service_user, $service_group) {
if $service_group == 'signalfx-agent' or $service_group in split($::local_groups, ',') {
group { $service_group:
noop => true,
}
}
else {
group { $service_group:
ensure => present,
system => true,
}
}
if $service_user == 'signalfx-agent' or $service_user in split($::local_users, ',') {
user { $service_user:
noop => true,
}
}
else {
$shell = $::osfamily ? {
'debian' => '/usr/sbin/nologin',
default => '/sbin/nologin',
}
user { $service_user:
ensure => present,
system => true,
shell => $shell,
groups => $service_group,
}
}
case $::service_provider {
'systemd': {
$tmpfile_path = "/etc/tmpfiles.d/${service_name}.conf"
$tmpfile_dir = $tmpfile_path.split('/')[0, - 2].join('/')
$override_path = "/etc/systemd/system/${service_name}.service.d/service-owner.conf"
$override_dir = $override_path.split('/')[0, - 2].join('/')
Package[$service_name] ~> Group[$service_group] ~> User[$service_user]
~> exec { 'systemctl stop signalfx-agent':
path => '/bin:/sbin:/usr/bin:/usr/sbin',
refreshonly => true,
}
~> file { [$tmpfile_dir, $override_dir]:
ensure => directory,
}
~> file {
$tmpfile_path:
ensure => file,
content => "D /run/${service_name} 0755 ${service_user} ${service_group} - -",
;
$override_path:
ensure => file,
;
}
~> file_line {
$override_path:
path => $override_path,
line => '[Service]',
match => '^[Service]',
;
'set-service-user':
path => $override_path,
line => "User=${service_user}",
match => '^User=',
after => '^[Service]',
require => File_Line[$override_path],
;
'set-service-group':
path => $override_path,
line => "Group=${service_group}",
match => '^Group=',
after => '^User=',
require => File_Line['set-service-user'],
;
}
~> exec { ["systemd-tmpfiles --create --remove ${tmpfile_path}", 'systemctl daemon-reload']:
path => '/bin:/sbin:/usr/bin:/usr/sbin',
returns => [0],
refreshonly => true,
}
~> Service[$service_name]
}
default: {
$default_path = "/etc/default/${service_name}"
Package[$service_name] ~> Group[$service_group] ~> User[$service_user]
~> exec { 'service signalfx-agent stop':
path => '/bin:/sbin:/usr/bin:/usr/sbin',
refreshonly => true,
}
~> file {
$default_path:
ensure => file,
;
}
~> file_line {
'set-service-user':
path => $default_path,
line => "user=${service_user}",
match => '^user=',
;
'set-service-group':
path => $default_path,
line => "group=${service_group}",
match => '^group=',
;
}
~> Service[$service_name]
}
}
}
|