]> git.netwichtig.de Git - user/henk/code/puppet/modules/s6.git/commitdiff
implement user scandirs
authorHendrik Jäger <gitcommit@henk.geekmail.org>
Mon, 9 May 2022 20:17:10 +0000 (22:17 +0200)
committerHendrik Jäger <gitcommit@henk.geekmail.org>
Mon, 25 Jul 2022 21:53:04 +0000 (23:53 +0200)
manifests/config.pp
manifests/init.pp
manifests/user_scandir.pp [new file with mode: 0644]
templates/user_scandir/log/run.epp [new file with mode: 0644]
templates/user_scandir/run.epp [new file with mode: 0644]

index 85a083126a08591fd5299f01906fbbe17d5eae78..3431ef879af000232c78d9a5485ace2cd56fb502 100644 (file)
@@ -13,4 +13,10 @@ class s6::config {
       mode    => '0700',
     ;
   }
+
+  $s6::scandir_users.each | $entry | {
+    s6::user_scandir {
+      $entry: ;
+    }
+  }
 }
index 314117452cb4be89960d64dd929b8dab4126089e..833fd8c669be4de4dd1d49b18d63aa4c2cfd55b0 100644 (file)
@@ -1,4 +1,6 @@
-class s6 {
+class s6 (
+  Optional[Array[String]] $scandir_users = [],
+) {
   require 'execline'
 
   class {
diff --git a/manifests/user_scandir.pp b/manifests/user_scandir.pp
new file mode 100644 (file)
index 0000000..db62fc3
--- /dev/null
@@ -0,0 +1,32 @@
+define s6::user_scandir(
+  Optional[String] $homedir = undef,
+) {
+  $scandir = '/etc/s6-scandir'
+
+  file {
+    "${scandir}/user_scandir_${title}":
+      ensure => directory,
+      ;
+    "${scandir}/user_scandir_${title}/run":
+      ensure  => present,
+      content => epp('s6/user_scandir/run.epp', { 'username' => $title } ),
+      mode    => '0744',
+      ;
+    "${scandir}/user_scandir_${title}/log":
+      ensure => directory,
+      ;
+    "${scandir}/user_scandir_${title}/log/run":
+      ensure  => present,
+      content => epp('s6/user_scandir/log/run.epp', { 'username' => $title } ),
+      mode    => '0744',
+      ;
+    [
+      '/var/log/s6/',
+      "/var/log/s6/user_scandir_${title}/",
+      "/var/log/s6/user_scandir_${title}/logs/",
+    ]:
+      ensure => directory,
+    ;
+  }
+}
+
diff --git a/templates/user_scandir/log/run.epp b/templates/user_scandir/log/run.epp
new file mode 100644 (file)
index 0000000..797688c
--- /dev/null
@@ -0,0 +1,19 @@
+<%- |
+       String $username,
+| -%>
+<% if versioncmp( $facts['os']['release']['major'], '10' ) >= 1 { -%>
+#!/usr/bin/execlineb -P
+<% } else { -%>
+#!/usr/local/bin/execlineb -P
+<% } -%>
+
+define SVUSER <%= $username %>
+define SVLOGDIR /var/log/s6/user_scandir_${SVUSER}/logs/
+
+fdmove -c 2 1
+s6-log
+       t
+       s1048576
+       S2147483648
+       !"mail -s \"user_sv log: ${SVUSER}\" -- root"
+       ${SVLOGDIR}
diff --git a/templates/user_scandir/run.epp b/templates/user_scandir/run.epp
new file mode 100644 (file)
index 0000000..8ef9d47
--- /dev/null
@@ -0,0 +1,18 @@
+<% |
+  String $username,
+| -%>
+<% if versioncmp( $facts['os']['release']['major'], '10' ) >= 1 { -%>
+#!/usr/bin/execlineb -P
+<% } else { -%>
+#!/usr/local/bin/execlineb -P
+<% } -%>
+
+define USER <%= $username %>
+backtick HOME { homeof ${USER} }
+importas -n -u HOME HOME
+define SVDIR ${HOME}/.s6-scandir
+
+fdmove -c 2 1
+
+s6-setuidgid ${USER}
+s6-svscan -c 20 ${SVDIR}