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", }, }