--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,16 @@
+SCRIPTS = ha-config ha-hostname ha-sync
+
+all:
+ chmod a+rx $(SCRIPTS)
+
+install:
+ install -d $(DESTDIR)/boot/ha-config
+ install -m755 ha-sync $(DESTDIR)/sbin/ha-sync
+ install -m644 exclude.ex $(DESTDIR)/etc/ha-sync/exclude
+ install -m644 ha-sync.conf.ex $(DESTDIR)/etc/ha-sync/ha-sync.conf
+
+ install -m755 ha-config $(DESTDIR)/etc/init.d/ha-config
+ install -m755 ha-hostname $(DESTDIR)/etc/init.d/ha-hostname
+
+clean:
+ chmod a-x $(SCRIPTS)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/README.Debian Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,6 @@
+ha-config for Debian
+--------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- root <root@unknown> Thu, 16 Nov 2006 23:04:43 +0000
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/changelog Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,6 @@
+ha-config (0.1-1) testing; urgency=low
+
+ * Initial release
+
+ -- Heiko Schlittermann <hs@schlittermann.de> Thu, 16 Nov 2006 23:05:28 +0000
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/compat Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,1 @@
+5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/control Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,12 @@
+Source: ha-config
+Section: unknown
+Priority: extra
+Maintainer: Heiko Schlittermann <hs@schlittermann.de>
+Build-Depends: debhelper (>= 5)
+Standards-Version: 3.7.2
+
+Package: ha-config
+Architecture: all
+Depends: ${shlibs:Depends}, ${misc:Depends}, ssh, rsync
+Description: sync script for ha cluster
+ script helping to keep clusters in sync
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/copyright Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,22 @@
+This package was debianized by root <root@unknown> on
+Thu, 16 Nov 2006 23:04:43 +0000.
+
+It was downloaded from <fill in http/ftp site>
+
+Upstream Author: <put author(s) name and email here>
+
+Copyright: <put the year(s) of the copyright, and the names of the
+ copyright holder(s) here>
+
+License:
+
+<Put the license of the package here>
+
+
+The Debian packaging is (C) 2006, root <root@unknown> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/cron.d.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the ha-config package
+#
+0 4 * * * root ha-config_maintenance
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/dirs Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,4 @@
+sbin
+etc/ha-sync
+boot/ha-config
+etc/init.d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/emacsen-install.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/ha-config
+
+# Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=ha-config
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+# SITEFLAG="-no-site-file"
+#else
+# SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist.
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+ echo install/${PACKAGE}: install Info links for ${FLAVOR}
+ install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/emacsen-remove.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/ha-config
+
+FLAVOR=$1
+PACKAGE=ha-config
+
+if [ ${FLAVOR} != emacs ]; then
+ if test -x /usr/sbin/install-info-altdir; then
+ echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+ install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/ha-config.info.gz
+ fi
+
+ echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+ rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/emacsen-startup.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,25 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file, e.g. /etc/emacs/site-start.d/50ha-config.el
+;; for the Debian ha-config package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org>
+
+;; The ha-config package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...). The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+ (symbol-name flavor)
+ "/site-lisp/ha-config")))
+;; If package-dir does not exist, the ha-config package must have
+;; removed but not purged, and we should skip the setup.
+ (when (file-directory-p package-dir)
+ (setq load-path (cons package-dir load-path))
+ (autoload 'ha-config-mode "ha-config-mode"
+ "Major mode for editing ha-config files." t)
+ (add-to-list 'auto-mode-alist '("\\.ha-config$" . ha-config-mode))))
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/ha-config-default.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,10 @@
+# Defaults for ha-config initscript
+# sourced by /etc/init.d/ha-config
+# installed at /etc/default/ha-config by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/ha-config.config Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,12 @@
+#! /bin/sh
+
+echo "*HALLO* $0 :: $@"
+
+set -e
+. /usr/share/debconf/confmodule
+
+HOSTNAME=${HOSTNAME%-*}
+NODES="$HOSTNAME-a $HOSTNAME-b"
+
+db_set ha-config/nodes "$NODES"
+db_input ha-config/nodes
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/ha-config.doc-base.EX Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,22 @@
+Document: ha-config
+Title: Debian ha-config Manual
+Author: <insert document author here>
+Abstract: This manual describes what ha-config is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/ha-config/ha-config.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/ha-config/ha-config.ps.gz
+
+Format: text
+Files: /usr/share/doc/ha-config/ha-config.text.gz
+
+Format: HTML
+Index: /usr/share/doc/ha-config/html/index.html
+Files: /usr/share/doc/ha-config/html/*.html
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/ha-config.templates Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,3 @@
+Template: ha-config/nodes
+Type: string
+Description: Names of your two nodes
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/init.d.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,81 @@
+#! /bin/sh
+#
+# skeleton example file to build /etc/init.d/ scripts.
+# This file should be used to construct scripts for /etc/init.d.
+#
+# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+# Modified for Debian
+# by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+#
+# Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/ha-config
+NAME=ha-config
+DESC=ha-config
+
+test -x $DAEMON || exit 0
+
+# Include ha-config defaults if available
+if [ -f /etc/default/ha-config ] ; then
+ . /etc/default/ha-config
+fi
+
+set -e
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: "
+ start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
+ --exec $DAEMON -- $DAEMON_OPTS
+ echo "$NAME."
+ ;;
+ stop)
+ echo -n "Stopping $DESC: "
+ start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
+ --exec $DAEMON
+ echo "$NAME."
+ ;;
+ #reload)
+ #
+ # If the daemon can reload its config files on the fly
+ # for example by sending it SIGHUP, do it here.
+ #
+ # If the daemon responds to changes in its config file
+ # directly anyway, make this a do-nothing entry.
+ #
+ # echo "Reloading $DESC configuration files."
+ # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+ # /var/run/$NAME.pid --exec $DAEMON
+ #;;
+ force-reload)
+ #
+ # If the "reload" option is implemented, move the "force-reload"
+ # option to the "reload" entry above. If not, "force-reload" is
+ # just the same as "restart" except that it does nothing if the
+ # daemon isn't already running.
+ # check wether $DAEMON is running. If so, restart
+ start-stop-daemon --stop --test --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON \
+ && $0 restart \
+ || exit 0
+ ;;
+ restart)
+ echo -n "Restarting $DESC: "
+ start-stop-daemon --stop --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON
+ sleep 1
+ start-stop-daemon --start --quiet --pidfile \
+ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+ echo "$NAME."
+ ;;
+ *)
+ N=/etc/init.d/$NAME
+ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+ echo "Usage: $N {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/manpage.1.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,59 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH HA-CONFIG SECTION "November 16, 2006"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+ha-config \- program to do something
+.SH SYNOPSIS
+.B ha-config
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B ha-config
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBha-config\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+ha-config was written by <upstream author>.
+.PP
+This manual page was written by root <root@unknown>,
+for the Debian project (but may be used by others).
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/manpage.sgml.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+
+
+ The docbook-to-man binary is found in the docbook-to-man package.
+ Please remember that if you create the nroff version in one of the
+ debian/rules file targets (such as build), you will need to include
+ docbook-to-man in your Build-Depends control field.
+
+ -->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+ <!ENTITY dhsurname "<surname>SURNAME</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>November 16, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
+ <!ENTITY dhemail "<email>root@unknown</email>">
+ <!ENTITY dhusername "root">
+ <!ENTITY dhucpackage "<refentrytitle>HA-CONFIG</refentrytitle>">
+ <!ENTITY dhpackage "ha-config">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+ <arg><option>--example <replaceable>that</replaceable></option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <application>Info</application> files.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-h</option>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option>
+ <option>--version</option>
+ </term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>bar (1), baz (1).</para>
+
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the
+ <application>Info</application> system.</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/manpage.xml.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,148 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl manpage.dbk'. A manual page
+<package>.<section> will be generated. You may view the
+manual page with: nroff -man <package>.<section> | less'. A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+ $(XP) $(DB2MAN) $<
+
+The xsltproc binary is found in the xsltproc package. The
+XSL files are in docbook-xsl. Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+ <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+ <!ENTITY dhsurname "<surname>SURNAME</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>November 16, 2006</date>">
+ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+ allowed: see man(7), man(1). -->
+ <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
+ <!ENTITY dhemail "<email>root@unknown</email>">
+ <!ENTITY dhusername "root">
+ <!ENTITY dhucpackage "<refentrytitle>HA-CONFIG</refentrytitle>">
+ <!ENTITY dhpackage "ha-config">
+
+ <!ENTITY debian "<productname>Debian</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2003</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+ <refmeta>
+ &dhucpackage;
+
+ &dhsection;
+ </refmeta>
+ <refnamediv>
+ <refname>&dhpackage;</refname>
+
+ <refpurpose>program to do something</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>&dhpackage;</command>
+
+ <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+ <arg><option>--example <replaceable>that</replaceable></option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>This manual page documents briefly the
+ <command>&dhpackage;</command> and <command>bar</command>
+ commands.</para>
+
+ <para>This manual page was written for the &debian; distribution
+ because the original program does not have a manual page.
+ Instead, it has documentation in the &gnu;
+ <application>Info</application> format; see below.</para>
+
+ <para><command>&dhpackage;</command> is a program that...</para>
+
+ </refsect1>
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <para>These programs follow the usual &gnu; command line syntax,
+ with long options starting with two dashes (`-'). A summary of
+ options is included below. For a complete description, see the
+ <application>Info</application> files.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><option>-h</option>
+ <option>--help</option>
+ </term>
+ <listitem>
+ <para>Show summary of options.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>-v</option>
+ <option>--version</option>
+ </term>
+ <listitem>
+ <para>Show version of program.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>bar (1), baz (1).</para>
+
+ <para>The programs are documented fully by <citetitle>The Rise and
+ Fall of a Fooish Bar</citetitle> available via the
+ <application>Info</application> system.</para>
+ </refsect1>
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was written by &dhusername; &dhemail; for
+ the &debian; system (but may be used by others). Permission is
+ granted to copy, distribute and/or modify this document under
+ the terms of the &gnu; General Public License, Version 2 any
+ later version published by the Free Software Foundation.
+ </para>
+ <para>
+ On Debian systems, the complete text of the GNU General Public
+ License can be found in /usr/share/common-licenses/GPL.
+ </para>
+
+ </refsect1>
+</refentry>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/menu.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,2 @@
+?package(ha-config):needs="X11|text|vc|wm" section="Apps/see-menu-manual"\
+ title="ha-config" command="/usr/bin/ha-config"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/postinst Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,49 @@
+#!/bin/sh
+# postinst script for ha-config
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postinst> `configure' <most-recently-configured-version>
+# * <old-postinst> `abort-upgrade' <new version>
+# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+# <new-version>
+# * <postinst> `abort-remove'
+# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+# <failed-install-package> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ configure)
+
+ update-rc.d ha-hostname start 3 S .
+ update-rc.d ha-config start 30 S .
+
+ test -f /etc/ha-sync/id_rsa || {
+ ssh-keygen -N "" -C "ha-sync@`hostname`" -f /etc/ha-sync/id_rsa
+ chmod u=r,go= /etc/ha-sync/id_rsa
+ }
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/postrm Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,46 @@
+#!/bin/sh
+# postrm script for ha-config
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <postrm> `remove'
+# * <postrm> `purge'
+# * <old-postrm> `upgrade' <new-version>
+# * <new-postrm> `failed-upgrade' <old-version>
+# * <new-postrm> `abort-install'
+# * <new-postrm> `abort-install' <old-version>
+# * <new-postrm> `abort-upgrade' <old-version>
+# * <disappearer's-postrm> `disappear' <overwriter>
+# <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+
+ purge)
+ rm -f /etc/ha-sync/id_rsa{,.pub}
+ update-rc.d ha-hostname remove || true
+ update-rc.d ha-config remove || true
+ ;;
+
+ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+ ;;
+
+ *)
+ echo "postrm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/preinst Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,38 @@
+#!/bin/sh
+# preinst script for ha-config
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <new-preinst> `install'
+# * <new-preinst> `install' <old-version>
+# * <new-preinst> `upgrade' <old-version>
+# * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ install|upgrade)
+
+ ;;
+
+ abort-upgrade)
+ ;;
+
+ *)
+ echo "preinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/prerm.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,40 @@
+#!/bin/sh
+# prerm script for ha-config
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+# * <prerm> `remove'
+# * <old-prerm> `upgrade' <new-version>
+# * <new-prerm> `failed-upgrade' <old-version>
+# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+# * <deconfigured's-prerm> `deconfigure' `in-favour'
+# <package-being-installed> <version> `removing'
+# <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+ remove|upgrade|deconfigure)
+ ;;
+
+ failed-upgrade)
+ ;;
+
+ *)
+ echo "prerm called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/rules Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,98 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+CFLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ $(MAKE)
+ #docbook-to-man debian/ha-config.sgml > ha-config.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ -$(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/ha-config.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/ha-config install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+ dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debian/watch.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,22 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# See uscan(1) for format
+
+# Compulsory line, this is a version 3 file
+version=3
+
+# Uncomment to examine a Webpage
+# <Webpage URL> <string match>
+#http://www.example.com/downloads.php ha-config-(.*)\.tar\.gz
+
+# Uncomment to examine a Webserver directory
+#http://www.example.com/pub/ha-config-(.*)\.tar\.gz
+
+# Uncommment to examine a FTP server
+#ftp://ftp.example.com/pub/ha-config-(.*)\.tar\.gz debian uupdate
+
+# Uncomment to find new files on sourceforge, for debscripts >= 2.9
+# http://sf.net/ha-config/ha-config-(.*)\.tar\.gz
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exclude.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,32 @@
+/boot/ha-config/current.etc
+/boot/ha-config/current.boot
+/boot/ha-config/links
+
+/shared
+/proc
+/sys
+/dev
+
+/boot/map
+
+/tmp
+/etc/blkid.tab
+/etc/mtab
+/var/lib/amavis
+/var/lib/dhcpd3
+
+
+/var/run/**.pid
+/var/lock/
+/var/lib/heartbeat/hb_*
+/var/lib/heartbeat/rsctmp
+/var/log/*
+
+/etc/udev/rules.d/z25_persistent-net.rules
+/etc/lvm/.cache
+/etc/network/run
+/etc/lvm/archive
+/etc/lvm/backup
+/etc/adjtime
+
+/root/.ssh/known_hosts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ha-config Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,74 @@
+#! /bin/bash -e
+# © 2006 Heiko Schlittermann <hs@schlittermann.de>
+#
+# Es wird davon ausgegangen, daß in /ha-config alles liegt, was
+# auf beiden System *unterschiedlich* sein muß. Oder: beide
+# Systeme sind an allen anderen Stellen *identisch*.
+ME=`basename $0`
+
+source /etc/ha-sync/ha-sync.conf
+
+test "$DIR" || {
+ echo "Need directory" >&2
+ exit 2
+}
+
+# Erst mal sicherstellen, daß das Verzeichnis auch da ist
+
+if ! test -e /etc/fstab; then
+ echo "$ME: /etc/fstab doesn't exist!" >&2
+ exit
+fi
+
+D=; for d in ${DIR//\// }; do
+ test -d $DIR && break
+
+ D=$D/$d
+ egrep -q "^[^#][[:print:]]+[[:space:]]+$D[[:space:]]" /etc/fstab \
+ && mount $D
+
+done
+
+cd $DIR
+
+# Den aktuellen Hostnamen ermitteln wir von der Kernel-Kommando-Zeile
+# (den letzten dort auftauchenden hostname=XXX Parameter)
+# oder wenn das nicht hilft über das 'hostname'-Kommando
+
+eval `grep -o 'hostname=[-[:alnum:]]\+' /proc/cmdline | tail -1`
+hostname=${hostname-`hostname`}
+
+# Nun laufen wir über alle Verzeichnisse, die unseren Hostnamen
+# haben und gehen davon aus, daß der Rest des Verzeichnisnamens
+# das Zielverzeichnis darstellt.
+# Dann legen wir einen Link 'current.$target' auf dieses Verzeichnis.
+# Warum? Damit z.B. in /etc/exim4 dann immer *auf jedem Host* ein Link
+# nach /ha-config/current.etc/exim4/exim4.conf liegen kann. Sonst wären die
+# /etc-Verzeichnisse ja wieder unterschiedlich.
+# FIXME: Was, wenn es nicht ein Verzeichnis direkt unter / ist?
+for p in $hostname.*; do
+
+ # Ziel ist das, was dem Punkt folgt
+ target=${p#$hostname.}
+
+ echo "$ME: found target $target" >&2
+
+ echo "$ME: `rm -vf current.$target`" >&2
+ echo "$ME: `ln -vs $p current.$target`" >&2
+
+ # Wenn Konflikte auftreten, diese Konflikt-Files
+ # zur Seite legen
+ echo "$ME: resolving possible conflicts" >&2
+ stow --target /$target -ncR current.$target 2>&1 \
+ | sed 's/^.*[[:space:]]vs\.[[:space:]]\+//' \
+ | tee /tmp/$ME.tmp \
+ | xargs -n1 -i{} mv -v {} {}.stow.`date -I`.saved
+
+ echo "$ME: found `wc -l </tmp/$ME.tmp` conflicts" >&2
+ rm -f /tmp/$ME.tmp
+
+ echo "$ME: stowing" >&2
+ stow --target /$target -R current.$target
+done
+
+# vim:ai aw sm:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ha-hostname Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,60 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides: hostname
+# Required-Start:
+# Required-Stop:
+# Default-Start: S
+# Default-Stop:
+# Short-Description: Set hostname based on /etc/hostname
+# Description: Read the machines hostname from /etc/hostname, and
+# update the kernel value with this value. If
+# /etc/hostname is empty, the current kernel value
+# for hostname is used. If the kernel value is
+# empty, the value 'localhost' is used.
+### END INIT INFO
+
+PATH=/sbin:/bin
+
+. /lib/init/vars.sh
+. /lib/lsb/init-functions
+
+do_start () {
+
+ # .hs
+ eval `grep -o '[[:blank:]]hostname=[[:graph:]]\+' /proc/cmdline | tail -1`
+
+ if test "$hostname"; then
+ HOSTNAME="$hostname"
+ else
+ [ -f /etc/hostname ] && HOSTNAME="$(cat /etc/hostname)"
+ fi
+
+ # Keep current name if /etc/hostname is missing.
+ [ -z "$HOSTNAME" ] && HOSTNAME="$(hostname)"
+
+ # And set it to 'localhost' if no setting was found
+ [ -z "$HOSTNAME" ] && HOSTNAME=localhost
+
+ [ "$VERBOSE" != no ] && log_action_begin_msg "Setting hostname to '$HOSTNAME'"
+ hostname "$HOSTNAME"
+ ES=$?
+ [ "$VERBOSE" != no ] && log_action_end_msg $ES
+ exit $ES
+}
+
+case "$1" in
+ start|"")
+ do_start
+ ;;
+ restart|reload|force-reload)
+ echo "Error: argument '$1' not supported" >&2
+ exit 3
+ ;;
+ stop)
+ # No-op
+ ;;
+ *)
+ echo "Usage: hostname.sh [start|stop]" >&2
+ exit 3
+ ;;
+esac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ha-sync Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,33 @@
+#! /bin/bash
+
+source /etc/ha-sync/ha-sync.conf
+NODES="$NODE_A $NODE_B"
+
+
+# No user serviceable parts inside :-)
+SSHID=/etc/ha-sync/id_rsa"
+export RSYNC_RSH="ssh -i $SSHID"
+
+TMP=`getopt -n $0 -o nd -l dry,debug -- "$@"` || exit
+eval set -- $TMP
+
+while true; do
+ case "$1" in
+ -n|--dry) opt_dry=1; shift;;
+ -d|--debug) opt_debug=1; shift;;
+ --) break; shift;;
+ esac
+done
+
+
+other() {
+ # we assume that there only two!
+ echo $NODES | tr ' ' '\n' | grep -v `hostname`;
+}
+
+cd / || exit 1
+for FS in ${FILESYSTEMS%/}/; do
+ ${opt_debug+echo} rsync ${opt_dry+-n} --exclude-from /etc/ha-sync/exclude --delete -Ravx .$FS `other`:/
+done
+
+test "$opt_dry" || ${opt_debug+echo} ssh -i $SSHID `other` update-grub
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ha-sync.conf.ex Fri Nov 17 10:15:27 2006 +0000
@@ -0,0 +1,10 @@
+# shell snipped
+
+echo "*** Needs to be configured in /etc/ha-sync/ha-sync.conf" >&2
+exit 1
+
+NODE_A=
+NODE_B=
+
+FILESYSTEMS="/ /boot"
+DIR=/boot/ha-config