about summary refs log tree commit diff
path: root/bundles/svtree-containers/items.py
blob: 320ab758a500c81ce1e1a909128c7cc7d6695cc9 (plain) (blame)
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
78
79
80
81
82
83
84
85
86
if node.os != "alpine":
    raise BundleError(f"{node.name}: OS {node.os} is not supported.")

from os.path import join

# TODO: healthcheck metrics?
svc_openrc = {
    "podman-healthcheck": {
        "runlevel": "default",
        "enabled": True,
        "needs": {
            "file:/etc/init.d/podman-healthcheck",
        },
    },
}

svc_s6rc = {
    "podman-exporter": {
        "bundle": "services",
        "generate": "service",
        "needs": {
            "file:/etc/s6-rc/services/podman-exporter.run",
        },
    }
}

files = {
    "/etc/containers/containers.conf.d/10-firewall-driver.conf": {
        "needs": {
            "bundle:firewall",
        },
    },
    "/etc/s6-rc/templates/container/+service-srv/run": {"mode": "0755"},
    "/etc/s6-rc/templates/container/+service-log/run": {"mode": "0755"},
    "/etc/s6-rc/src/default/contents.d/containers": {
        "content_type": "text",
        "content": "",
        "triggers": {
            "svc_openrc:svtree:reload",
        },
    },
    "/etc/s6-rc/src/containers/type": {
        "content_type": "text",
        "content": "bundle",
        "triggers": {
            "svc_openrc:svtree:reload",
        },
    },
    # healthchecks
    "/bin/podman-healthcheck": {"mode": "0755"},
    "/etc/periodic/15min/podman-healthcheck": {"mode": "0755"},
    "/etc/periodic/weekly/podman-prune": {"mode": "0755"},
    "/bin/podman-healthcheckd": {"mode": "0755"},
    "/etc/init.d/podman-healthcheck": {"mode": "0755"},
    # monitoring
    "/etc/s6-rc/services/podman-exporter.run": {
        "mode": "0755",
        "triggers": {
            "svc_s6rc:podman-exporter:restart",
        },
    },
    "/etc/traefik/podman-exporter.yaml": {
        "content_type": "mako",
    },
}

repo.libs.gen.add_files_recursive(
    files,
    join(repo.bundles_dir, "svtree-containers", "files"),
)

# TODO: can we use purge = True here?

directories = {
    "/etc/s6-rc/src/containers/contents.d": {},
}

for container, _ in node.metadata.get("containers", {}).items():
    svc_s6rc[container] = {
        "bundle": "containers",
        "generate": "container",
        "triggers": {
            "svc_openrc:svtree:reload",
        },
    }