forked from ungleich-public/cdist
Merge pull request #525 from ungleich/daemontools
new type: __daemontools_service
This commit is contained in:
commit
3a25fc74b9
16 changed files with 252 additions and 0 deletions
63
cdist/conf/type/__daemontools/files/init.d-svscan
Normal file
63
cdist/conf/type/__daemontools/files/init.d-svscan
Normal file
|
@ -0,0 +1,63 @@
|
|||
#!/bin/bash
|
||||
### BEGIN INIT INFO
|
||||
# Provides: svscan
|
||||
# Required-Start:
|
||||
# Required-Stop:
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: svscan
|
||||
# Description: djb svscan
|
||||
### END INIT INFO
|
||||
# from https://gist.githubusercontent.com/pacojp/5766990/raw/2ed009ab19515afc9e58291b636d673c5ca864b3/init.d.svscan
|
||||
# written by Adam McKenna <adam@debian.org>
|
||||
# edited by Kamila Součková <kamila@ksp.sk>
|
||||
|
||||
export PATH=$PATH:/usr/local/bin
|
||||
|
||||
l=/var/log/svscan
|
||||
|
||||
if [ ! -d $l ]; then
|
||||
mkdir $l
|
||||
chown daemon $l
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
echo -n "Starting daemontools: "
|
||||
if [ ! `pidof svscan` ]; then
|
||||
echo -n "svscan "
|
||||
env - PATH="$PATH" svscan /service 2>&1 | setuidgid daemon multilog t /var/log/svscan &
|
||||
echo "."
|
||||
else
|
||||
echo "already running."
|
||||
fi
|
||||
;;
|
||||
stop)
|
||||
echo -n "Stopping daemontools: "
|
||||
if [ `pidof svscan` ]; then
|
||||
echo -n "svscan"
|
||||
while [ `pidof svscan` ]; do
|
||||
kill `pidof svscan`
|
||||
echo -n "."
|
||||
done
|
||||
fi
|
||||
echo -n " services"
|
||||
for i in `ls -d /service/*`; do
|
||||
svc -dx $i
|
||||
echo -n "."
|
||||
done
|
||||
echo -n " logging "
|
||||
for i in `ls -d /service/*/log`; do
|
||||
svc -dx $i
|
||||
echo -n "."
|
||||
done
|
||||
echo ""
|
||||
;;
|
||||
restart|force-reload)
|
||||
$0 stop
|
||||
$0 start
|
||||
;;
|
||||
*)
|
||||
echo 'Usage: /etc/init.d/svscan {start|stop|restart|force-reload}'
|
||||
exit 1
|
||||
esac
|
49
cdist/conf/type/__daemontools/man.rst
Normal file
49
cdist/conf/type/__daemontools/man.rst
Normal file
|
@ -0,0 +1,49 @@
|
|||
cdist-type__daemontools(7)
|
||||
==========================
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-type__daemontools - Install daemontools
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Install djb daemontools and (optionally) an init script.
|
||||
|
||||
|
||||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
None.
|
||||
|
||||
|
||||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
from-package
|
||||
Package to install. Must be compatible with the original daemontools. Example: daemontools-encore. Default: daemontools.
|
||||
|
||||
BOOLEAN PARAMETERS
|
||||
------------------
|
||||
install-init-script
|
||||
Add an init script and set it to start on boot. Default yes.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
__daemontools --from-package daemontools-encore # if you prefer
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
:strong:`cdist-type__daemontools_service`\ (7)
|
||||
|
||||
AUTHORS
|
||||
-------
|
||||
Kamila Součková <kamila--@--ksp.sk>
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2017 Kamila Součková. You can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
20
cdist/conf/type/__daemontools/manifest
Normal file
20
cdist/conf/type/__daemontools/manifest
Normal file
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
pkg=$(cat "$__object/parameter/from-package")
|
||||
|
||||
__package $pkg
|
||||
|
||||
if [ -f "$__object/parameter/install-init-script" ]; then
|
||||
init=$(cat "$__global/explorer/init")
|
||||
case $init in
|
||||
init)
|
||||
__config_file /etc/init.d/svscan --mode 755 --source "$__type/files/init.d-svscan"
|
||||
require="$require __config_file/etc/init.d/svscan" __start_on_boot svscan
|
||||
require="$require __start_on_boot/svscan" __process svscan --start 'service svscan start'
|
||||
;;
|
||||
*)
|
||||
echo "Your init system ($init) is not supported by this type. Submit a patch at github.com/ungleich/cdist!"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
1
cdist/conf/type/__daemontools/parameter/boolean
Normal file
1
cdist/conf/type/__daemontools/parameter/boolean
Normal file
|
@ -0,0 +1 @@
|
|||
install-init-script
|
|
@ -0,0 +1 @@
|
|||
daemontools
|
1
cdist/conf/type/__daemontools/parameter/optional
Normal file
1
cdist/conf/type/__daemontools/parameter/optional
Normal file
|
@ -0,0 +1 @@
|
|||
from-package
|
0
cdist/conf/type/__daemontools/singleton
Normal file
0
cdist/conf/type/__daemontools/singleton
Normal file
1
cdist/conf/type/__daemontools_service/explorer/svc
Normal file
1
cdist/conf/type/__daemontools_service/explorer/svc
Normal file
|
@ -0,0 +1 @@
|
|||
command -v svc
|
72
cdist/conf/type/__daemontools_service/man.rst
Normal file
72
cdist/conf/type/__daemontools_service/man.rst
Normal file
|
@ -0,0 +1,72 @@
|
|||
cdist-type__daemontools_service(7)
|
||||
==================================
|
||||
|
||||
NAME
|
||||
----
|
||||
cdist-type__daemontools_service - Create a daemontools-compatible service dir.
|
||||
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Create a directory structure compatible with daemontools-like service management.
|
||||
|
||||
Note that svc must be present on the target system.
|
||||
|
||||
The object ID will be used as the service name.
|
||||
|
||||
REQUIRED PARAMETERS
|
||||
-------------------
|
||||
None.
|
||||
|
||||
OPTIONAL PARAMETERS
|
||||
-------------------
|
||||
run
|
||||
Command to run. exec-ing and stderr redirection will be added. One of run, run-file must be specified.
|
||||
|
||||
Example: `my-program`
|
||||
|
||||
run-file
|
||||
File to save as <servicedir>/run. One of run, run-file must be specified.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
#!/bin/sh
|
||||
exec 2>&1
|
||||
exec my_program
|
||||
|
||||
|
||||
log-run
|
||||
Command to run for log consumption. Default: `multilog t ./main`
|
||||
|
||||
servicedir
|
||||
Directory to install into. Default: `/service`
|
||||
|
||||
BOOLEAN PARAMETERS
|
||||
------------------
|
||||
None.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
require="__daemontools" __daemontools_service prometheus --run "setuidgid prometheus $GOBIN/prometheus $FLAGS"
|
||||
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
:strong:`cdist-type__daemontools`\ (7)
|
||||
|
||||
|
||||
AUTHORS
|
||||
-------
|
||||
Kamila Součková <kamila--@--ksp.sk>
|
||||
|
||||
COPYING
|
||||
-------
|
||||
Copyright \(C) 2017 Kamila Součková. You can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
38
cdist/conf/type/__daemontools_service/manifest
Normal file
38
cdist/conf/type/__daemontools_service/manifest
Normal file
|
@ -0,0 +1,38 @@
|
|||
#!/bin/sh
|
||||
|
||||
RUN_PREFIX="#!/bin/sh
|
||||
exec 2>&1
|
||||
exec " # mind the space :D
|
||||
|
||||
name=$__object_id
|
||||
servicedir=$(cat "$__object/parameter/servicedir")
|
||||
run=$(cat "$__object/parameter/run")
|
||||
runfile=$(cat "$__object/parameter/run-file")
|
||||
logrun=$(cat "$__object/parameter/log-run")
|
||||
|
||||
svc=$(cat "$__type/explorer/svc")
|
||||
|
||||
if [ -z "$svc" ]; then
|
||||
echo "svc not found! Install daemontools first: see __daemontools"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
badusage() {
|
||||
echo "__daemontools_service/$__object_id: exactly one of --run, --run-file must be set" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
[ -z "$run$runfile" ] && badusage
|
||||
[ -n "$run" ] && [ -n "$runfile" ] && badusage
|
||||
|
||||
__directory $servicedir/$name/log/main --parents
|
||||
|
||||
echo "$RUN_PREFIX$run" | require="__directory/$servicedir/$name/log/main" __config_file "$servicedir/$name/run" \
|
||||
--onchange "svc -t '$servicedir/$name' 2>/dev/null" \
|
||||
--mode 755 \
|
||||
--source "${runfile:--}"
|
||||
|
||||
echo "$RUN_PREFIX$logrun" | require="__directory/$servicedir/$name/log/main" __config_file $servicedir/$name/log/run \
|
||||
--onchange "svc -t '$servicedir/$name/log' 2>/dev/null" \
|
||||
--mode 755 \
|
||||
--source "-"
|
|
@ -0,0 +1 @@
|
|||
multilog t ./main
|
|
@ -0,0 +1 @@
|
|||
/service
|
4
cdist/conf/type/__daemontools_service/parameter/optional
Normal file
4
cdist/conf/type/__daemontools_service/parameter/optional
Normal file
|
@ -0,0 +1,4 @@
|
|||
log-run
|
||||
run
|
||||
run-file
|
||||
servicedir
|
Loading…
Reference in a new issue