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 = {
"/opt/svtree": {},
"/etc/s6-rc/src": { 'purge': True },
"/etc/s6-rc/templates": { 'purge': True },
'/etc/s6-rc/generate': { 'purge': True },
"/etc/s6-rc/src/default/contents.d": { 'purge': True },
"/etc/s6-rc/src/services/contents.d": { 'purge': True },
"/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",
}
|