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…
	
	Add table
		Add a link
		
	
		Reference in a new issue