about summary refs log tree commit diff
path: root/bundles/svtree-containers/items.py
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2026-02-23 14:12:22 +0100
committerRobert Günzler <r@gnzler.io>2026-02-23 14:12:36 +0100
commit4fa05f4c140205450f63337626680c65f2879896 (patch)
tree889c0b239eea1e98aa7b2290b1db2028a4cb34aa /bundles/svtree-containers/items.py
parent090a357ef46473e76b0cd0e0e1b013e6080a7360 (diff)
replace containers,www with svtree modules equivalents
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to 'bundles/svtree-containers/items.py')
-rw-r--r--bundles/svtree-containers/items.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/bundles/svtree-containers/items.py b/bundles/svtree-containers/items.py
new file mode 100644
index 0000000..320ab75
--- /dev/null
+++ b/bundles/svtree-containers/items.py
@@ -0,0 +1,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",
+        },
+    }
+