diff --git a/host/nut0.pyrocufflink.blue.k b/host/nut0.pyrocufflink.blue.k index 6ca473c..d7a1e74 100644 --- a/host/nut0.pyrocufflink.blue.k +++ b/host/nut0.pyrocufflink.blue.k @@ -1,4 +1,5 @@ import pkg import pkg.nut +import pkg.common -render: [pkg.RenderInstruction] = nut.templates +render: [pkg.RenderInstruction] = common.templates + nut.templates diff --git a/pkg/common/templates.k b/pkg/common/templates.k new file mode 100644 index 0000000..7f29f3d --- /dev/null +++ b/pkg/common/templates.k @@ -0,0 +1,21 @@ +templates = [ + { + template = "common/reload-udev-rules.path" + dest = "/etc/systemd/system/reload-udev-rules.path" + hooks = { + changed = [ + {run = "systemctl daemon-reload"} + {run = "systemctl try-restart reload-udev-rules.path"} + ] + } + } + { + template = "common/reload-udev-rules.service" + dest = "/etc/systemd/system/reload-udev-rules.service" + hooks = { + changed = [ + {run = "systemctl daemon-reload"} + ] + } + } +] diff --git a/pkg/nut/templates.k b/pkg/nut/templates.k index bef7a25..0c894f9 100644 --- a/pkg/nut/templates.k +++ b/pkg/nut/templates.k @@ -41,7 +41,7 @@ templates = [ dest = "/etc/containers/systemd/nut-server.container" hooks = { changed = [ - {run = "systemctl daemon-reload", immediate = True} + {run = "systemctl daemon-reload"} {run = "systemctl restart nut-server"} ] } diff --git a/templates/common/reload-udev-rules.path b/templates/common/reload-udev-rules.path new file mode 100644 index 0000000..1245417 --- /dev/null +++ b/templates/common/reload-udev-rules.path @@ -0,0 +1,3 @@ +[Path] +PathChanged=/run/containers/udev-rules +MakeDirectory=yes diff --git a/templates/common/reload-udev-rules.service b/templates/common/reload-udev-rules.service new file mode 100644 index 0000000..32f28b3 --- /dev/null +++ b/templates/common/reload-udev-rules.service @@ -0,0 +1,8 @@ +[Unit] +ConditionDirectoryNotEmpty=/run/containers/udev-rules + +[Service] +Type=oneshot +ExecStart=/bin/sh -c 'cp /run/containers/udev-rules/*.rules /run/udev/rules.d/' +ExecStart=/usr/bin/udevadm control --reload +ExecStart=/usr/bin/udevadm trigger diff --git a/templates/nut/nut-server.container b/templates/nut/nut-server.container index 949a81f..c872552 100644 --- a/templates/nut/nut-server.container +++ b/templates/nut/nut-server.container @@ -4,11 +4,14 @@ Description=Network UPS Tools - power devices information server Wants=network-online.target After=network-online.target Before=nut-monitor.service +Wants=reload-udev-rules.path +After=reload-udev-rules.path [Container] Image=git.pyrocufflink.net/containerimages/nut:latest Pull=newer RunInit=true +Volume=%t/containers/udev-rules:/etc/udev/rules.d:rw,z Volume=/etc/ups:/etc/ups:ro Volume=/dev:/dev:rw ReadOnly=true