Merge branch 'master' of git://git.schottelius.org/cdist
This commit is contained in:
commit
5d6c483e39
23 changed files with 211 additions and 94 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -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
|
||||
|
|
7
README
7
README
|
@ -19,13 +19,12 @@
|
|||
|
||||
## 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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
47
bin/cdist-mass-deploy
Executable file
47
bin/cdist-mass-deploy
Executable file
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#
|
||||
# Deploy configuration to many hosts
|
||||
#
|
||||
|
||||
. cdist-config
|
||||
[ $# -ge 1 ] || __cdist_usage "[-p] <target host> [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
|
|
@ -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
|
6
build.sh
6
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" \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
Documentation:
|
||||
- update stages
|
||||
- go through all manpages and ensure __ and co are correct
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
4
doc/man/.gitignore
vendored
4
doc/man/.gitignore
vendored
|
@ -1,4 +0,0 @@
|
|||
cdist.7
|
||||
*.html
|
||||
cdist-design.7
|
||||
cdist-reference.text
|
|
@ -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 <<eof
|
||||
|
||||
COPYING
|
||||
-------
|
||||
|
|
|
@ -23,7 +23,7 @@ called stages. It is intented to run either from the command line or from cron.
|
|||
ENVIRONMENT
|
||||
-----------
|
||||
If the environment variable **__cdist_conf_dir** is not set, the
|
||||
configuration is read from /etc/cdist. The local output directory can
|
||||
configuration is read from <git-checkout>/conf. The local output directory can
|
||||
be changed by the variable **__cdist_local_base_dir**. All environment
|
||||
variables are handled by cdist-config.
|
||||
|
||||
|
|
41
doc/man/man1/cdist-mass-deploy.text
Normal file
41
doc/man/man1/cdist-mass-deploy.text
Normal file
|
@ -0,0 +1,41 @@
|
|||
cdist-mass-deploy(1)
|
||||
====================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
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).
|
31
doc/man/man1/cdist-object-all.text
Normal file
31
doc/man/man1/cdist-object-all.text
Normal file
|
@ -0,0 +1,31 @@
|
|||
cdist-object-all(1)
|
||||
===================
|
||||
Steven Armstrong <steven-cdist--@--armstrong.cc>
|
||||
|
||||
|
||||
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).
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
35
doc/man/man1/cdist-object-prepare.text
Normal file
35
doc/man/man1/cdist-object-prepare.text
Normal file
|
@ -0,0 +1,35 @@
|
|||
cdist-object-prepare(1)
|
||||
=======================
|
||||
Steven Armstrong <steven-cdist--@--armstrong.cc>
|
||||
|
||||
|
||||
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).
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
cdist-object-run-all(1)
|
||||
=======================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
|
||||
|
||||
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).
|
|
@ -1,6 +1,6 @@
|
|||
cdist-object-run(1)
|
||||
===================
|
||||
Nico Schottelius <nico-cdist--@--schottelius.org>
|
||||
Steven Armstrong <steven-cdist--@--armstrong.cc>
|
||||
|
||||
|
||||
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).
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue