diff --git a/.gitignore b/.gitignore
index 57950f3b..10d98990 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,7 +6,9 @@ doc/man/.marker
doc/man/man1/*.1
doc/man/man7/*.7
doc/man/man*/*.html
+doc/man/man*/*.xml
doc/man/man7/cdist-type__*.text
+doc/man/man7/cdist-reference.text
doc/man/man*/docbook-xsl.css
# Ignore cache for version control
diff --git a/README b/README
index 52471068..54f792a7 100644
--- a/README
+++ b/README
@@ -15,17 +15,16 @@
"P' "" ""
-[[!toc levels=2]]
+[[!toc levels=2]]
## Introduction
-cdist configures your system and is similar to
-other configuration management systems like
+cdist is an alternative to other configuration management systems like
[cfengine](http://www.cfengine.org/),
[bcfg2](http://trac.mcs.anl.gov/projects/bcfg2),
[chef](http://wiki.opscode.com/display/chef/)
-and [puppet](http://www.puppetlabs.com/), but it ticks differently.
-Here are some features that makes it unique:
+and [puppet](http://www.puppetlabs.com/).
+But cdist ticks differently, here is the feature set that makes it unique:
[[!table data="""
Keywords | Description
diff --git a/bin/cdist-config b/bin/cdist-config
index 2e5c63b1..96de4664 100755
--- a/bin/cdist-config
+++ b/bin/cdist-config
@@ -19,7 +19,7 @@
#
#
-__cdist_version="1.6.0pre"
+__cdist_version="1.6.0"
# Fail if something bogus is going on
set -u
@@ -55,7 +55,7 @@ __cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname"
: ${__cdist_name_manifest:=manifest}
: ${__cdist_name_object:=object}
: ${__cdist_name_object_finished:=done}
-: ${__cdist_name_object_processed:=processed}
+: ${__cdist_name_object_prepared:=prepared}
: ${__cdist_name_object_id:=object_id}
: ${__cdist_name_object_source:=source}
: ${__cdist_name_objects_created:=.objects_created}
@@ -210,9 +210,9 @@ __cdist_object_code()
echo "$(__cdist_object_dir "$1")/${__cdist_name_code}"
}
-__cdist_object_processed()
+__cdist_object_prepared()
{
- echo "$(__cdist_object_dir "$1")/${__cdist_name_object_processed}"
+ echo "$(__cdist_object_dir "$1")/${__cdist_name_object_prepared}"
}
__cdist_object_finished()
diff --git a/bin/cdist-deploy-to b/bin/cdist-deploy-to
index 02fd34fa..dab5d9a5 100755
--- a/bin/cdist-deploy-to
+++ b/bin/cdist-deploy-to
@@ -49,7 +49,7 @@ cdist-dir push "$__cdist_target_host" \
"${__cdist_abs_mydir}" "${__cdist_remote_bin_dir}"
cdist-explorer-run-global "$__cdist_target_host"
cdist-manifest-run-init "$__cdist_target_host"
-cdist-object-all "$__cdist_target_host" cdist-object-process
+cdist-object-all "$__cdist_target_host" cdist-object-prepare
cdist-object-all "$__cdist_target_host" cdist-object-run
cdist-cache "$__cdist_target_host"
diff --git a/bin/cdist-mass-deploy b/bin/cdist-mass-deploy
new file mode 100755
index 00000000..2753bcab
--- /dev/null
+++ b/bin/cdist-mass-deploy
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# 2011 Nico Schottelius (nico-cdist at schottelius.org)
+#
+# This file is part of cdist.
+#
+# cdist is free software: 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.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+#
+# Deploy configuration to many hosts
+#
+
+. cdist-config
+[ $# -ge 1 ] || __cdist_usage "[-p] [target host ...]"
+set -eu
+
+parallel=""
+if [ "$1" = "-p" ]; then
+ parallel=yes
+ shift
+fi
+
+while [ $# -ge 1 ]; do
+ # always assume we run parallel
+ cdist-deploy-to "$1" | awk -v host=$1 '{ print "[" host "] " $0 }' &
+ shift
+
+ # if not, wait for it _now_
+ [ "$parallel" ] || wait
+done
+
+# else wait after all are started
+if [ "$parallel" ]; then
+ echo "Waiting for cdist-deploy-to jobs to finish..."
+ wait
+fi
diff --git a/bin/cdist-object-process b/bin/cdist-object-prepare
similarity index 85%
rename from bin/cdist-object-process
rename to bin/cdist-object-prepare
index 777d2c88..8c92ff73 100755
--- a/bin/cdist-object-process
+++ b/bin/cdist-object-prepare
@@ -36,13 +36,13 @@ __cdist_object_dir="$(__cdist_object_dir "$__cdist_object")"
# Export to non-core for use in manifest and gencode scripts
export $__cdist_name_var_self=$__cdist_object
-__cdist_object_processed="$(__cdist_object_processed "$__cdist_object")"
-if [ ! -f "$__cdist_object_processed" ]; then
+__cdist_object_prepared="$(__cdist_object_prepared "$__cdist_object")"
+if [ ! -f "$__cdist_object_prepared" ]; then
echo
- echo "Processing object $__cdist_object"
+ echo "Preparing object $__cdist_object"
cdist-object-explorer-run "$__cdist_target_host" "$__cdist_object"
cdist-object-manifest-run "$__cdist_target_host" "$__cdist_object"
- # Mark this object as processed
- touch "$__cdist_object_processed"
+ # Mark this object as prepared
+ touch "$__cdist_object_prepared"
fi
diff --git a/build.sh b/build.sh
index ab62287e..e033c007 100755
--- a/build.sh
+++ b/build.sh
@@ -57,12 +57,12 @@ case "$1" in
for src in ${MANDIR}/man${section}/*.text; do
manpage="${src%.text}.$section"
if [ ! -f "$manpage" -o "$manpage" -ot "$src" ]; then
- echo "Compiling manpage for $src"
+ echo "Compiling man page for $src"
$A2XM "$src"
fi
htmlpage="${src%.text}.html"
if [ ! -f "$htmlpage" -o "$htmlpage" -ot "$src" ]; then
- echo "Compiling html for $src"
+ echo "Compiling html page for $src"
$A2XH "$src"
fi
done
@@ -99,7 +99,7 @@ case "$1" in
;;
clean)
- rm -f ${MANDIR}/cdist-reference.text
+ rm -f ${MAN7DSTDIR}/cdist-reference.text
find "${MANDIR}" -mindepth 2 -type l \
-o -name "*.1" \
-o -name "*.7" \
diff --git a/doc/changelog b/doc/changelog
index 9672814f..9dda1806 100644
--- a/doc/changelog
+++ b/doc/changelog
@@ -1,4 +1,4 @@
-1.6.0:
+1.6.0: 2011-04-06
* New Type __package_yum
* New type __debconf_set_selections
* New explorer os_version
@@ -9,6 +9,7 @@
* Removed --preseed support from __package_apt
* explorer/os: gained Fedora support
* Simplified types __user and __group
+ * New helper binary: cdist-mass-deploy
1.5.0: 2011-04-01
* Add basic cache functionality
diff --git a/doc/dev/todo/1.6 b/doc/dev/todo/1.6
deleted file mode 100644
index 12a83e93..00000000
--- a/doc/dev/todo/1.6
+++ /dev/null
@@ -1,3 +0,0 @@
-Documentation:
- - update stages
- - go through all manpages and ensure __ and co are correct
diff --git a/doc/dev/todo/TAKEME b/doc/dev/todo/TAKEME
index 7e9d2d5d..0fcced96 100644
--- a/doc/dev/todo/TAKEME
+++ b/doc/dev/todo/TAKEME
@@ -16,7 +16,6 @@ CORE
- cdist-object-gencode: remove code if output empty?
- also take care of that in cdist-code-run!
-- cdist-object-process -> cdist-object-prepare
- Remove cdist-object-push, covers only one line and is used only once:
[20:22] kr:bin% grep cdist-object-push *
cdist-object-run: cdist-object-push "$__cdist_target_host" "$__cdist_object"
diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext
index e7f2c72f..1f01ff44 100644
--- a/doc/dev/todo/niconext
+++ b/doc/dev/todo/niconext
@@ -1,2 +1,3 @@
-remove --preseed from package_apt and add debconf_set_selection or similar
- -> much cleaner!
+Cleanup documentation:
+ type reference -> add types + manpages
+ add explorer reference
diff --git a/doc/man/.gitignore b/doc/man/.gitignore
deleted file mode 100644
index 8ed9d1e1..00000000
--- a/doc/man/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-cdist.7
-*.html
-cdist-design.7
-cdist-reference.text
diff --git a/doc/man/cdist-reference.text.sh b/doc/man/cdist-reference.text.sh
index a5d1698a..51ae2a55 100755
--- a/doc/man/cdist-reference.text.sh
+++ b/doc/man/cdist-reference.text.sh
@@ -132,8 +132,20 @@ tmp_dir::
TYPES
-----
-The available types are listed in the SEE ALSO section
-and are referenced as cdist-type__TYPENAME.
+The following types are available:
+
+eof
+
+for type in man7/cdist-type__*.text; do
+ no_dir="${type#man7/}";
+ no_type="${no_dir#cdist-type}";
+ name="${no_type%.text}";
+ man="${no_dir%.text}(7)"
+
+ echo "- $name" "($man)"
+done
+
+cat << eof
ENVIRONMENT VARIABLES
---------------------
@@ -172,16 +184,7 @@ __type_explorers::
SEE ALSO
--------
- cdist(7)
-eof
-for type in man7/cdist-type__*.7; do
- name_1="${type#man7/}"
- name_2="${name_1%.7}"
- name="$name_2"
- echo "- ${name}(7)"
-done
-
-cat </conf. The local output directory can
be changed by the variable **__cdist_local_base_dir**. All environment
variables are handled by cdist-config.
diff --git a/doc/man/man1/cdist-mass-deploy.text b/doc/man/man1/cdist-mass-deploy.text
new file mode 100644
index 00000000..ac495b21
--- /dev/null
+++ b/doc/man/man1/cdist-mass-deploy.text
@@ -0,0 +1,41 @@
+cdist-mass-deploy(1)
+====================
+Nico Schottelius
+
+
+NAME
+----
+cdist-mass-deploy - Deploy configuration to many hosts
+
+
+SYNOPSIS
+--------
+cdist-mass-deploy [-p] HOSTNAME [HOSTNAME ...]
+
+
+DESCRIPTION
+-----------
+cdist-mass-deploy is essentially a wrapper around cdist-deploy-to to
+be able to deploy to many hosts on one command line.
+
+
+EXAMPLES
+--------
+Deploy in parallel to all hosts specfied in the dsh group configuration ikr,
+which is prefixed by "root@":
+
+--------------------------------------------------------------------------------
+cdist-mass-deploy -p $(cat ~/.dsh/group/ikr | sed 's/^root@//')
+--------------------------------------------------------------------------------
+
+
+SEE ALSO
+--------
+- cdist(7)
+- cdist-deploy-to(1)
+
+
+COPYING
+-------
+Copyright \(C) 2010-2011 Nico Schottelius. Free use of this software is
+granted under the terms of the GNU General Public License version 3 (GPLv3).
diff --git a/doc/man/man1/cdist-object-all.text b/doc/man/man1/cdist-object-all.text
new file mode 100644
index 00000000..06d45268
--- /dev/null
+++ b/doc/man/man1/cdist-object-all.text
@@ -0,0 +1,31 @@
+cdist-object-all(1)
+===================
+Steven Armstrong
+
+
+NAME
+----
+cdist-object-all - Run the given command on all objects
+
+
+SYNOPSIS
+--------
+cdist-object-all HOSTNAME COMMAND
+
+
+DESCRIPTION
+-----------
+Iterates over all defined objects and executes the given command on each
+of them.
+
+
+SEE ALSO
+--------
+- cdist(7)
+- cdist-type(1)
+
+
+COPYING
+-------
+Copyright \(C) 2011 Steven Armstrong. Free use of this software is
+granted under the terms of the GNU General Public License version 3 (GPLv3).
diff --git a/doc/man/man1/cdist-object-code-run.text b/doc/man/man1/cdist-object-code-run.text
index a055fc97..f8bae6a4 100644
--- a/doc/man/man1/cdist-object-code-run.text
+++ b/doc/man/man1/cdist-object-code-run.text
@@ -21,7 +21,7 @@ Execute the local and remote code for the given object.
SEE ALSO
--------
- cdist(7)
-- cdist-object-run-all(1)
+- cdist-object-run(1)
- cdist-code-run(1)
- cdist-run-remote(1)
diff --git a/doc/man/man1/cdist-object-gencode-run.text b/doc/man/man1/cdist-object-gencode-run.text
index be2d3448..7705815c 100644
--- a/doc/man/man1/cdist-object-gencode-run.text
+++ b/doc/man/man1/cdist-object-gencode-run.text
@@ -22,7 +22,7 @@ SEE ALSO
--------
- cdist(7)
- cdist-code-run(1)
-- cdist-object-run-all(1)
+- cdist-object-run(1)
- cdist-object-gencode(1)
diff --git a/doc/man/man1/cdist-object-prepare.text b/doc/man/man1/cdist-object-prepare.text
new file mode 100644
index 00000000..c91a7b2e
--- /dev/null
+++ b/doc/man/man1/cdist-object-prepare.text
@@ -0,0 +1,35 @@
+cdist-object-prepare(1)
+=======================
+Steven Armstrong
+
+
+NAME
+----
+cdist-object-prepare - Prepare an object
+
+
+SYNOPSIS
+--------
+cdist-object-prepare HOSTNAME OBJECT
+
+
+DESCRIPTION
+-----------
+Prepare the given object by running it through stage 3 (object information
+retrieval) and stage 4 (run the object manifest).
+See related man pages for details.
+
+
+SEE ALSO
+--------
+- cdist(7)
+- cdist-stages(7)
+- cdist-object-explorer-run(1)
+- cdist-object-manifest-run(1)
+- cdist-type(1)
+
+
+COPYING
+-------
+Copyright \(C) 2011 Steven Armstrong. Free use of this software is granted
+under the terms of the GNU General Public License version 3 (GPLv3).
diff --git a/doc/man/man1/cdist-object-push.text b/doc/man/man1/cdist-object-push.text
index 5bff71cf..4c960eaa 100644
--- a/doc/man/man1/cdist-object-push.text
+++ b/doc/man/man1/cdist-object-push.text
@@ -21,7 +21,7 @@ Transfers the given object to the target host.
SEE ALSO
--------
- cdist(7)
-- cdist-object-run-all(1)
+- cdist-object-run(1)
- cdist-type(1)
diff --git a/doc/man/man1/cdist-object-run-all.text b/doc/man/man1/cdist-object-run-all.text
deleted file mode 100644
index 9e36b3d4..00000000
--- a/doc/man/man1/cdist-object-run-all.text
+++ /dev/null
@@ -1,33 +0,0 @@
-cdist-object-run-all(1)
-=======================
-Nico Schottelius
-
-
-NAME
-----
-cdist-object-run-all - Run all created objects on the target host
-
-
-SYNOPSIS
---------
-cdist-object-run-all HOSTNAME
-
-
-DESCRIPTION
------------
-Transfers type explorers to the target then runs cdist-object-run(1)
-for each created object.
-
-
-SEE ALSO
---------
-- cdist(7)
-- cdist-type-explorer-push(1)
-- cdist-object-run(1)
-- cdist-type(1)
-
-
-COPYING
--------
-Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is
-granted under the terms of the GNU General Public License version 3 (GPLv3).
diff --git a/doc/man/man1/cdist-object-run.text b/doc/man/man1/cdist-object-run.text
index fca6db91..fc85a05f 100644
--- a/doc/man/man1/cdist-object-run.text
+++ b/doc/man/man1/cdist-object-run.text
@@ -1,6 +1,6 @@
cdist-object-run(1)
===================
-Nico Schottelius
+Steven Armstrong
NAME
@@ -15,15 +15,15 @@ cdist-object-run HOSTNAME OBJECT
DESCRIPTION
-----------
-Runs the given object on the given target host.
-The different subtasks are dispatched to specialized exectuables.
+Applies the given object on the target host by running it through stage 5
+(code generation) and stage 6 (code execution).
See related man pages for details.
SEE ALSO
--------
- cdist(7)
-- cdist-object-explorer-run(1)
+- cdist-stages(7)
- cdist-object-gencode-run(1)
- cdist-object-push(1)
- cdist-object-code-run(1)
@@ -32,5 +32,5 @@ SEE ALSO
COPYING
-------
-Copyright \(C) 2011 Nico Schottelius, Steven Armstrong. Free use of this software is
+Copyright \(C) 2011 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).
diff --git a/doc/man/man7/cdist-stages.text b/doc/man/man7/cdist-stages.text
index e2eef3da..294dffc7 100644
--- a/doc/man/man7/cdist-stages.text
+++ b/doc/man/man7/cdist-stages.text
@@ -11,8 +11,8 @@ DESCRIPTION
-----------
Starting the execution of deployment with cdist-deploy-to(1), cdist passes
through different stages, each can be triggered and debugged on its own.
-Reading the source of the cdist-deploy-to and cdist-object-run-all executables
-shows the scripts responsible for each stage.
+Reading the source of the cdist-deploy-to executable shows the scripts
+responsible for each stage.
STAGE 0: INTERNAL PREPERATION
@@ -56,7 +56,7 @@ STAGE 3: OBJECT INFORMATION RETRIEVAL
-------------------------------------
Every object is checked whether its type has explorers and if so, these are
transfered to the target host and executed. The results are transfered back
-and can be used in the following stages to decide what changes need to made
+and can be used in the following stages to decide what changes need to be made
on the target to implement the desired state.
Related documentation:
@@ -68,10 +68,9 @@ Related documentation:
STAGE 4: RUN THE OBJECT MANIFEST
--------------------------------
-Every object is checked whether its type has a manifest file. If the type has
-a manifest file and it is executable, it will be executed. The manifest script
-may generate and change the created objects. In other words, one type can reuse
-other types.
+Every object is checked whether its type has a executable manifest. The
+manifest script may generate and change the created objects. In other words,
+one type can reuse other types.
For instance the object __apache/www.test.ch is of type __apache, which may
contain a manifest script, which creates new objects of type __file.
@@ -88,11 +87,10 @@ Related documentation:
STAGE 5: CODE GENERATION
------------------------
-In this stage for every created objects its type is checked whether it has a
-gencode script. If the type has a gencode script and it is executable it will
-be executed. This executable should create code to be executed on the target
-on stdout. If the gencode executable fails, it must print diagnostic messages
-on stderr and exit non-zero.
+In this stage for every created object its type is checked for executable
+gencode scripts. The gencode scripts generate the code to be executed on the
+target on stdout. If the gencode executables fail, they must print diagnostic
+messages on stderr and exit non-zero.
Related documentation:
- cdist-object-gencode-run(1)