Skip to content

Commit 1f23e3d

Browse files
committed
Service works
1 parent 2dc798c commit 1f23e3d

File tree

3 files changed

+27
-7
lines changed

3 files changed

+27
-7
lines changed

.vscode/settings.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"cSpell.words": [
3+
"cidfile"
4+
]
5+
}

manifests/install/package.pp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,8 +332,16 @@
332332
require => $service_require,
333333
}
334334
$services.each |$kk,$vv| {
335-
service { $kk:
336-
* => $service_defaults + pick(getvar("settings.services.${kk}.params"), getvar('settings.service_params'), {}),
335+
if $vv['name'] != '' and $vv['manage'] != false {
336+
if $kk == 'main' {
337+
$service_title = $app
338+
} else {
339+
$service_title = $kk
340+
}
341+
$service_params = pick(getvar("settings.services.${kk}.params"), getvar('settings.service_params'), {})
342+
service { $service_title:
343+
* => $service_defaults + { name => pick($vv['name'],$service_title) } + $service_params,
344+
}
337345
}
338346
}
339347
}

manifests/service.pp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
undef: {
9393
$mount_mapping = getvar('settings.dirs') ? {
9494
undef => '',
95-
default => join(getvar('settings.dirs').map |$k,$v| { if getvar('v.path') { "-v ${v['path']}:${v['path']}" } }, ' '),
95+
default => join(getvar('settings.dirs').map |$k,$v| { if getvar('v.path') { if getvar('os.selinux.enabled') { "-v ${v['path']}:${v['path']}:Z" } else { "-v ${v['path']}:${v['path']}" } } }, ' '), # lint:ignore:140chars
9696
}
9797
}
9898
String[0]: {
@@ -102,17 +102,22 @@
102102
$mount_mapping = "-v ${settings['image']['mounts']}"
103103
}
104104
Array: {
105-
$mount_mapping = join(getvar('settings.image.mounts').map|$k| { "-v ${k}" }, ' ')
105+
$mount_mapping = join(getvar('settings.image.mounts').map|$k| { if getvar('os.selinux.enabled') { "-v ${k}:${k}:Z" } else { "-v ${k}:${k}" } }, ' ') # lint:ignore:140chars
106106
}
107107
Hash: {
108-
$mount_mapping = join(getvar('settings.image.mounts').map |$k,$v| { "-v ${k}:${v}" }, ' ')
108+
$mount_mapping = join(getvar('settings.image.mounts').map |$k,$v| { if getvar('v.path') { if getvar('os.selinux.enabled') { "-v ${v['path']}:${v['path']}:Z" } else { "-v ${v['path']}:${v['path']}" } } }, ' ') # lint:ignore:140chars
109109
}
110110
default: {
111111
tp::fail($on_missing_data, "tp::service ${app} - settings.image.mounts is not a valid type")
112112
}
113113
}
114114

115115
$docker_args = pick_default(getvar('settings.docker.args'),'')
116+
$cidfile = '%t/%n.ctr-id'
117+
$docker_command = $facts['os']['family'] ? {
118+
'RedHat' => '/usr/bin/podman',
119+
default => '/usr/bin/docker',
120+
}
116121
$docker_after = $facts['os']['family'] ? {
117122
'RedHat' => 'network-online.target',
118123
default => 'docker.service',
@@ -129,10 +134,12 @@
129134
'Requires' => $docker_requires,
130135
},
131136
'Service' => {
132-
# 'ExecStartPre' => "/usr/bin/docker stop ${app} ; /usr/bin/docker rm ${app} ; /usr/bin/docker pull ${settings['docker_image']}",
133-
'ExecStart' => "/usr/bin/docker run --rm --name ${app} ${docker_args} ${port_mapping} ${mount_mapping} ${docker_image}",
137+
'ExecStartPre' => "/bin/rm -f ${cidfile}",
138+
'ExecStart' => "${docker_command} run --rm --cidfile=${cidfile} --name ${app} ${docker_args} ${port_mapping} ${mount_mapping} ${docker_image}",
134139
'Restart' => 'always',
135140
'RestartSec' => '10s',
141+
'ExecStop' => "${docker_command} stop --ignore --cidfile=${cidfile}",
142+
'ExecStopPost' => "${docker_command} rm -f --ignore --cidfile=${cidfile}",
136143
},
137144
'Install' => {
138145
'WantedBy' => 'multi-user.target',

0 commit comments

Comments
 (0)