1
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
|
if node.os != "alpine":
raise BundleError(f"{node.name}: OS {node.os} is not supported.")
git_deploy = {
"/opt/svtree": {
"repo": "https://git.sr.ht/~robertgzr/svtree",
"rev": "master",
},
}
symlinks = {
"/etc/init.d/svtree": {
"target": "/opt/svtree/openrc.service",
"needs": {"git_deploy:/opt/svtree"},
},
"/etc/s6-rc/templates/service": {
"target": "/opt/svtree/templates/service",
"needs": {"git_deploy:/opt/svtree"},
},
"/usr/bin/sv": {
"target": "/opt/svtree/bin/sv",
"needs": {"git_deploy:/opt/svtree"},
},
}
directories = {
# svtree dist
"/opt/svtree": {},
# svtree-related directories
"/etc/s6-rc/src": {"purge": True},
"/etc/s6-rc/templates": {"purge": True},
"/etc/s6-rc/generate": {},
# directory for bundles started by default
"/etc/s6-rc/src/default/contents.d": {"purge": True},
# service templates
"/etc/s6-rc/src/services/contents.d": {},
"/etc/s6-rc/services": {"purge": True},
}
files = {
"/etc/s6-rc/src/default/type": {
"content_type": "text",
"content": "bundle",
"triggers": {
"svc_openrc:svtree:reload",
},
},
"/etc/s6-rc/src/services/type": {
"content_type": "text",
"content": "bundle",
"triggers": {
"svc_openrc:svtree:reload",
},
},
"/etc/s6-rc/src/default/contents.d/services": {
"content_type": "text",
"content": "",
"triggers": {
"svc_openrc:svtree:reload",
},
},
}
svc_openrc = {
"svtree": {
"enabled": True,
"running": True,
"needs": {"symlink:/etc/init.d/svtree"},
},
}
for service, _ in node.metadata.get("services", {}).items():
svc_s6rc[service] = {
"runlevel": "default",
"bundle": "services",
"generate": "service",
}
|