SVN: rc-scripts/branches/upstart_native/doc: . make-html upstart.txt

jajcus jajcus at pld-linux.org
Fri May 7 08:39:05 CEST 2010


Author: jajcus
Date: Fri May  7 08:39:04 2010
New Revision: 11393

Added:
   rc-scripts/branches/upstart_native/doc/upstart.txt   (contents, props changed)
Modified:
   rc-scripts/branches/upstart_native/doc/   (props changed)
   rc-scripts/branches/upstart_native/doc/make-html
Log:
- some documentation for using rc-scripts with upstart

Modified: rc-scripts/branches/upstart_native/doc/make-html
==============================================================================
--- rc-scripts/branches/upstart_native/doc/make-html	(original)
+++ rc-scripts/branches/upstart_native/doc/make-html	Fri May  7 08:39:04 2010
@@ -2,3 +2,4 @@
 
 jade -t sgml -d polski.dsl rc-scripts.docb
 #jade -t sgml -d polski.dsl test-ogonki.docb
+rst2html upstart.txt upstart.html

Added: rc-scripts/branches/upstart_native/doc/upstart.txt
==============================================================================
--- (empty file)
+++ rc-scripts/branches/upstart_native/doc/upstart.txt	Fri May  7 08:39:04 2010
@@ -0,0 +1,183 @@
+===================================
+Upstart event-based service startup
+===================================
+
+This version of rc-scripts support Upstart event-based service startup. This
+can co-exist with old-style startup scripts.
+
+Enabling/disabling event-base service startup
+---------------------------------------------
+
+Upstart event-based service startup may be disabled on boot time
+by using a ``pld.no-upstart`` kernel command-line option.
+
+An init script may be called with ``USE_UPSTART=no`` environment variable
+to disable special upstart-related processing – this way one may use
+``/etc/rc.d/init.d/$service start`` to start a service even if upstart job 
+for that service is present.
+
+``USE_UPSTART=no`` can also be places in ``/etc/sysconfig/system``
+configuration file.
+
+Available events
+----------------
+
+Ubuntu-compatible system events
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+all-swaps
+        when swaps from ``/etc/fstab`` are activated
+
+filesystem
+        when basic filesystem hierarchy (FHS) is mounted
+        NOTE: currently it doesn't wait for network filesystems!
+
+local-filesystems
+        when all local filesystems are mounted and initialized
+
+root-filesystem
+        when root filesystem is mounted r/w and initialized
+
+virtual-filesystems
+        when virtual filesystems (/proc, /sys, etc.) are mounted
+
+PLD-specifi system events:
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+pld.sysinit-done
+        when rc.sysinit finished its job
+
+pld.shutdown-started
+        when rc.shutdown starts
+
+pld.network-starting
+        just before network initialization is started
+
+pld.network-started
+        when network is initialized
+
+pld.network-stopping
+        just before network shutdown is started
+
+pld.network-stopped
+        when network configuration is shut down
+
+Jobs
+~~~~
+
+The standard Upstart events are available for job control:
+starting(7) started(7) stopping(7) stopped(7)  (see man pages)
+
+As relying on job name is not good enough when several alternative
+implementations of a service are available, the start*/stop* jobs
+may have extra 'SERVICE' variable attached. SERVICE variable contains
+the generic service name, which can be used like this::
+
+  start on started SERVICE=syslog
+
+Job events and enabling/disabling event-base service startup
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Please note that relying on events not raised by PLD service jobs
+or scripts (like 'startup') will make job ignore the 'pld.no-upstart'
+setting.
+
+
+Writing Upstart job descriptions
+--------------------------------
+
+Job description files in ``/etc/init`` are not only the recipes to start 
+a service, but also configuration files for that service. Keep that in mind
+when writing the ``*.conf`` files. No complicated logic, that can change from 
+a release to a release, should be implemented there, the script should be
+readable, basic configuration settings easy to find and no upstart-controlled
+settings (like resource limit)  reimplemented in the script or started daemon 
+arguments.
+
+The syntax of the ``/etc/init/*.conf`` files is described in the init(5) man
+page.
+
+Instead of using ``/etc/sysconfig/$service`` files put the service
+configuration directly into the ``*.conf`` file. When 'env' stanza is used for
+that, the value may be overridden when starting the job with initctl.
+
+Simple example, the job description for syslog-ng::
+
+  start on pld.network-started
+  stop on pld.shutdown-started
+  
+  env SERVICE=syslog
+  export SERVICE
+  
+  respawn
+  
+  console output
+  
+  exec /usr/sbin/syslog-ng -F -f /etc/syslog-ng/syslog-ng.conf
+
+
+Updating init scripts
+---------------------
+
+Parts of the system will still expect ``service $name`` or even, directly,
+``/etc/rc.d/init.d/$name`` scripts working. Also, LSB expects compatible
+init scripts in /etc/init.d. For this still to work, an upstart-controlled
+service is expected to have its ``/etc/rc.d/init.d/$name`` script also present. 
+It must also be named exactly as the main upstart job for the service.
+
+The script must be a bit modified (in comparison to the traditional init
+scripts) to make use of the upstart features.
+
+For the start/stop/status/reload commands to work the script should include a
+``upstart_controlled`` command placed before commands are handled (and after
+``/etc/rc.d/init.d/function`` was included). This command (shell alias actually) 
+will be ignored when upstart boot control is disabled or no upstart job is
+available for the service. Otherwise it will implement the basic LSB commands
+and exit.
+
+Sometimes some commands must be implemented in a special way (not all services
+may understand SIGHUP as a signal to reload their configuration) or extra
+commands are provided (like 'configtest'). In such case 'upstart_controlled'
+should be given a list of commands to implement. If the first argument of the
+script was not one of the listed commands, processing will continue past
+'upstart_controlled' call and the commands may be handled by the init script.
+
+The minimal init script, for a service which will be controlled by upstart
+only would be::
+
+  #!/bin/sh
+  
+  . /etc/rc.d/init.d/functions
+  
+  upstart_controlled
+  
+  echo "Service available only via upstart boot"
+  exit 3
+
+Minimal change to an existing PLD script to handle upstart control is to add::
+  
+  upstart_controlled
+
+before the usual::
+
+  RETVAL=0
+  # See how we were called.
+  case "$1" in
+    start)
+
+Sometimes other upstart jobs will rely on a service started by the traditional
+init script. In such case, the script should emit appropriate events.
+
+e.g.::
+
+	msg_starting "syslog-ng"
+	emit starting JOB=_ SERVICE=syslog
+	daemon /usr/sbin/syslog-ng -f /etc/syslog-ng/syslog-ng.conf $OPTIONS
+	emit started JOB=_ SERVICE=syslog
+	RETVAL=$?
+
+The ``emit`` function does nothing when upstart-controlled boot is disabled (not
+to trigger any upstart jobs), otherwise it calls ``/sbin/initctl emit`` ...
+
+--
+ vi: tw=78 ft=rst spell spl=en


More information about the pld-cvs-commit mailing list