mrrl-containers

MRRL version of container scripts
git clone https://ccx.te2000.cz/git/mrrl-containers
Log | Files | Refs

commit f3e4b378a1aa36bb7d1463a137a97f56f873c92e
parent 0994eff55528ba130c047941674b19e82c002541
Author: Jan Pobříslo <ccx@te2000.cz>
Date:   Sat, 25 Jun 2022 12:42:27 +0200

Add logging to generic containers
Diffstat:
Mservice_scripts/generic/run | 2+-
Mzsh-functions/confz_containers_init | 29++++++++++++++++++++++++++++-
2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/service_scripts/generic/run b/service_scripts/generic/run @@ -1,4 +1,4 @@ -#!/command/execlineb +#!/command/execlineb -P #define CONTAINER_NAME alpine-games #define CONTAINER_USER ccx s6-envdir env diff --git a/zsh-functions/confz_containers_init b/zsh-functions/confz_containers_init @@ -93,6 +93,31 @@ confz_container_service_check() { require fs_o filename=$vars[svc_dir]/supervise/lock \ owner=$vars[control_user]:0 require fs_m filename=$vars[svc_dir]/supervise/lock mode=644 + + if (($+vars[log_dir])); then + require container_service_log :log_dir :log_uid :log_gid + else + [[ -e $vars[svc_dir]/log/supervise ]] && \ + die "Should not have a logger but one might be running: ${(qqq)vars[svc_dir]}" + require fs_r flags=r filename=$vars[svc_dir]/log + fi +} + +confz_container_service_log_check() { + checkvars svc_dir log_dir log_uid log_gid + + local -a runscript=( + '#!/command/execlineb -P' + "if { mkdir -p ${(qqq)vars[log_dir]} }" + "if { chown -R $vars[log_user]:$vars[log_group] ${(qqq)vars[log_dir]} }" + "s6-setuidgid :$vars[log_user]:$vars[log_group]" + "s6-log -b -- t ${(qqq)vars[log_dir]}" + ) + + require fs_d filename=$vars[svc_dir]/log + require fs_m filename=$vars[svc_dir]/log mode=755 + require fs_contentnl filename=$vars[svc_dir]/log/run \ + content="${(F)runscript}" } confz_container_service_preset_check() { @@ -234,7 +259,7 @@ confz_container_service_sysroot_check() { } confz_container_service_generic_check() { - local uid gid container_user_dir svc_dir container + local uid gid container_user_dir svc_dir log_dir container local -a fstab mnt_dirs checkvars containers_dir svscan_dir image_name user defvar fstab_extra '' @@ -283,9 +308,11 @@ confz_container_service_generic_check() { ) svc_dir=$vars[svscan_dir]/container.$container.$vars[user] + log_dir=/run/container-logs/container.$container.$vars[user] require container_service_preset preset=generic \ svc_dir=$svc_dir control_user=$uid control_group=$gid \ root_link=$container_user_dir/root \ + log_dir=$log_dir log_uid=0 log_gid=$gid \ fstab=${(F)fstab} \?down \?fstab_post require fs_d filename=$svc_dir/env require fs_contentnl filename=$svc_dir/env/CONTAINER_USER \