From 7db16cc716b6976df6cc5c21b52280adf7b7c810 Mon Sep 17 00:00:00 2001 From: j4n Date: Tue, 11 Aug 2026 11:05:42 +0200 Subject: [PATCH] feat(mtail): validate programs during deploy Compile /etc/mtail before activate() restarts the service, to catch errors early. --- cmdeploy/src/cmdeploy/mtail/deployer.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cmdeploy/src/cmdeploy/mtail/deployer.py b/cmdeploy/src/cmdeploy/mtail/deployer.py index e00b0fb1..bdbe0296 100644 --- a/cmdeploy/src/cmdeploy/mtail/deployer.py +++ b/cmdeploy/src/cmdeploy/mtail/deployer.py @@ -1,5 +1,5 @@ from pyinfra import facts, host -from pyinfra.operations import apt +from pyinfra.operations import apt, server from cmdeploy.basedeploy import Deployer from cmdeploy.filtermail.deployer import ( @@ -56,6 +56,17 @@ class MtailDeployer(Deployer): FILTERMAIL_MTAIL_SHA256, mode="644", ) + if self.need_restart: + # Check if all installed mtail rules compile or fail early + # --one_shot to exit, --port 0 to not clash with running mtail. + server.shell( + name="Validate mtail programs", + commands=[ + f"timeout 30 {self.bin_path} --compile_only --one_shot" + f" --progs {self.progs_dir} --logs /dev/null" + " --address 127.0.0.1 --port 0" + ], + ) def activate(self): active = bool(self.mtail_address)