forked from ungleich-public/cdist
Merge branch 'master' into install
Conflicts: bin/cdist-config Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
commit
9a3d9334d5
57 changed files with 1612 additions and 693 deletions
|
|
@ -1,6 +1,9 @@
|
|||
2.0.0:
|
||||
2.0.1:
|
||||
* Bugfix cdist: Always print source of error in case of exec errors
|
||||
|
||||
2.0.0: 2011-09-16
|
||||
* New Type: __package_rubygem (Chase Allen James)
|
||||
* __self replaced by __object_fq (or so)
|
||||
* __self replaced by __object_fq
|
||||
* Rewrote cdist in Python
|
||||
|
||||
1.7.1: 2011-07-26
|
||||
|
|
|
|||
63
doc/dev/logs/2011-09-16.benchmark-r815-no-control-socket
Normal file
63
doc/dev/logs/2011-09-16.benchmark-r815-no-control-socket
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
48 core
|
||||
model name : AMD Opteron(tm) Processor 6174
|
||||
128 GB RAM
|
||||
Dell PowerEdge R815
|
||||
|
||||
root@sgs-r815-01:~/cdist-nutzung# grep "Total processing time for" deploy-all-benchmark-noikr13
|
||||
INFO: Total processing time for 1 host(s): 257.641541
|
||||
INFO: Total processing time for 2 host(s): 257.025783
|
||||
INFO: Total processing time for 3 host(s): 258.933088
|
||||
INFO: Total processing time for 4 host(s): 259.253074
|
||||
INFO: Total processing time for 5 host(s): 260.331896
|
||||
INFO: Total processing time for 6 host(s): 262.051349
|
||||
INFO: Total processing time for 7 host(s): 323.820878
|
||||
INFO: Total processing time for 8 host(s): 329.081856
|
||||
INFO: Total processing time for 9 host(s): 333.346278
|
||||
INFO: Total processing time for 10 host(s): 334.832419
|
||||
INFO: Total processing time for 11 host(s): 330.572375
|
||||
INFO: Total processing time for 12 host(s): 331.726628
|
||||
INFO: Total processing time for 13 host(s): 331.740591
|
||||
INFO: Total processing time for 14 host(s): 331.237139
|
||||
INFO: Total processing time for 15 host(s): 331.718861
|
||||
INFO: Total processing time for 16 host(s): 332.374645
|
||||
INFO: Total processing time for 17 host(s): 331.510445
|
||||
INFO: Total processing time for 18 host(s): 332.030743
|
||||
INFO: Total processing time for 19 host(s): 332.193198
|
||||
INFO: Total processing time for 20 host(s): 333.933765
|
||||
INFO: Total processing time for 21 host(s): 335.292953
|
||||
INFO: Total processing time for 22 host(s): 337.253608
|
||||
INFO: Total processing time for 23 host(s): 337.831493
|
||||
INFO: Total processing time for 24 host(s): 339.024737
|
||||
INFO: Total processing time for 25 host(s): 343.515044
|
||||
INFO: Total processing time for 26 host(s): 339.759678
|
||||
INFO: Total processing time for 27 host(s): 339.378998
|
||||
INFO: Total processing time for 28 host(s): 339.640378
|
||||
INFO: Total processing time for 29 host(s): 340.885614
|
||||
INFO: Total processing time for 30 host(s): 341.836923
|
||||
INFO: Total processing time for 31 host(s): 343.825758
|
||||
INFO: Total processing time for 32 host(s): 344.176089
|
||||
INFO: Total processing time for 33 host(s): 345.408518
|
||||
INFO: Total processing time for 34 host(s): 347.15322
|
||||
INFO: Total processing time for 35 host(s): 351.330649
|
||||
INFO: Total processing time for 36 host(s): 347.640758
|
||||
INFO: Total processing time for 37 host(s): 347.381126
|
||||
INFO: Total processing time for 38 host(s): 347.053406
|
||||
INFO: Total processing time for 39 host(s): 347.453166
|
||||
INFO: Total processing time for 40 host(s): 347.84804
|
||||
INFO: Total processing time for 41 host(s): 349.035272
|
||||
INFO: Total processing time for 42 host(s): 349.41507
|
||||
INFO: Total processing time for 43 host(s): 351.208072
|
||||
INFO: Total processing time for 44 host(s): 351.788401
|
||||
INFO: Total processing time for 45 host(s): 351.730259
|
||||
INFO: Total processing time for 46 host(s): 515.693497
|
||||
INFO: Total processing time for 47 host(s): 352.702677
|
||||
INFO: Total processing time for 48 host(s): 353.418003
|
||||
INFO: Total processing time for 49 host(s): 355.07111
|
||||
INFO: Total processing time for 50 host(s): 354.622388
|
||||
INFO: Total processing time for 51 host(s): 355.192521
|
||||
INFO: Total processing time for 52 host(s): 355.283238
|
||||
INFO: Total processing time for 53 host(s): 358.112329
|
||||
INFO: Total processing time for 54 host(s): 357.717426
|
||||
INFO: Total processing time for 55 host(s): 357.748707
|
||||
INFO: Total processing time for 56 host(s): 358.902118
|
||||
INFO: Total processing time for 57 host(s): 367.817594
|
||||
1373
doc/dev/logs/2011-09-16.benchmark-r815-no-control-socket.dmidecode
Normal file
1373
doc/dev/logs/2011-09-16.benchmark-r815-no-control-socket.dmidecode
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,6 +1,23 @@
|
|||
2.0.1:
|
||||
|
||||
- Rewrite cdist-type-emulator
|
||||
- Remove legacy code in cdist
|
||||
- Remove cdist-config
|
||||
- Remove man1/cdist-type-emulator.text
|
||||
- Remove the PATH=... part from the README
|
||||
|
||||
- how to access output dir?
|
||||
|
||||
Test:
|
||||
__cdist_type_base_dir=$(pwd -P)/conf/type __file
|
||||
|
||||
- Fix / rewrite cdist-quickstart
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- Initial install support
|
||||
- setup $__install = "" for
|
||||
manifest(s)
|
||||
- setup $__install = "yes" for
|
||||
manifest(s), gencode-*
|
||||
|
||||
- run standard manifest (?)
|
||||
- creates initial objects
|
||||
|
|
@ -11,17 +28,16 @@
|
|||
- run all other manifests
|
||||
- creates all objects
|
||||
- what about type explorer?
|
||||
- do not run, create empty output (types should be able
|
||||
to handle this!)
|
||||
via __global/
|
||||
|
||||
- Support parallel execution
|
||||
- and maximum number of parallel runs (-p X)
|
||||
- error handling / report failed hosts
|
||||
|
||||
- Rewrite cdist-type-emulator
|
||||
- Remove legacy code in cdist
|
||||
- Remove cdist-config
|
||||
- Remove man1/cdist-type-emulator.text
|
||||
- Remove the PATH=... part from the README
|
||||
|
||||
- Allow manifest to be read from stdin
|
||||
- Create new video for cdist 2.0.0
|
||||
http://www.youtube.com/watch?v=PRMjzy48eTI
|
||||
|
||||
- Setup __debug, if -d is given, so other tools can reuse it
|
||||
|
|
|
|||
|
|
@ -82,6 +82,14 @@ cdist --version
|
|||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
ENVIRONMENT
|
||||
-----------
|
||||
TMPDIR, TEMP, TMP::
|
||||
Setup the base directory for the temporary directory.
|
||||
See http://docs.python.org/py3k/library/tempfile.html for
|
||||
more information. This is rather useful, if the standard
|
||||
directory used does not allow executables.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
- cdist(7)
|
||||
|
|
|
|||
310
doc/man/man7/cdist-quickstart.text
Executable file
310
doc/man/man7/cdist-quickstart.text
Executable file
|
|
@ -0,0 +1,310 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 2010-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/>.
|
||||
#
|
||||
#
|
||||
# Give the user an introduction into cdist
|
||||
#
|
||||
|
||||
. cdist-config
|
||||
set -eu
|
||||
|
||||
banner="cdist-quickstart>"
|
||||
continue="Press enter to continue or ctrl-c to abort."
|
||||
create_continue="Press enter to create the described files/directories"
|
||||
|
||||
__prompt()
|
||||
{
|
||||
echo -n "$banner" "$@"
|
||||
read answer
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Intro of quickstart
|
||||
#
|
||||
cat << eof
|
||||
$banner cdist version $__cdist_version
|
||||
|
||||
Welcome to the interactive guide to cdist!
|
||||
This is the interactive tutorial and beginners help for cdist and here's
|
||||
our schedule:
|
||||
|
||||
- Stages: How cdist operates
|
||||
- Explorer: Explore facts of the target host
|
||||
- Manifest: Map configurations to hosts
|
||||
- Types: Bundled functionality
|
||||
- Deploy a configuration to the local host!
|
||||
|
||||
eof
|
||||
__prompt "$continue"
|
||||
|
||||
################################################################################
|
||||
# Stages
|
||||
#
|
||||
cat << eof
|
||||
|
||||
To deploy configurations to a host, you call
|
||||
|
||||
cdist-deploy-to <hostname>
|
||||
|
||||
which makes calls to other scripts, which realise the so called "stages".
|
||||
Usually you'll not notice this, but in case you want to debug or hack cdist,
|
||||
you can run each stage on its own. Besides that, you just need to remember
|
||||
that the command cdist-deploy-to is the main cdist command.
|
||||
|
||||
See also:
|
||||
|
||||
Source of cdist-deploy-to(1), cdist-stages(7)
|
||||
|
||||
eof
|
||||
__prompt "$continue"
|
||||
|
||||
################################################################################
|
||||
# Explorer
|
||||
#
|
||||
cat << eof
|
||||
|
||||
The first thing cdist always does is running different explorers on the
|
||||
target host. The explorers can be found in the directory
|
||||
|
||||
${__cdist_explorer_dir}
|
||||
|
||||
An explorer is executed on the target host and its output is saved to a file.
|
||||
You can use these files later to decide what or how to configure the host.
|
||||
|
||||
For a demonstration, we'll call the OS explorer locally now, but remember:
|
||||
This is only for demonstration, normally it is run on the target host.
|
||||
The os explorer will which either displays the detected operating system or
|
||||
nothing if it does not know your OS.
|
||||
|
||||
See also:
|
||||
|
||||
cdist-explorer(7)
|
||||
|
||||
eof
|
||||
explorer="${__cdist_explorer_dir}/os"
|
||||
|
||||
__prompt "Press enter to execute $explorer"
|
||||
|
||||
set -x
|
||||
"$explorer"
|
||||
set +x
|
||||
|
||||
################################################################################
|
||||
# Manifest
|
||||
#
|
||||
cat << eof
|
||||
|
||||
The initial manifest is the entry point for cdist to find out, what you would
|
||||
like to have configured. It is located at
|
||||
|
||||
${__cdist_manifest_init}
|
||||
|
||||
And can be as simple as
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
__file /etc/cdist-configured --type file
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
See also:
|
||||
|
||||
cdist-manifest(7)
|
||||
|
||||
eof
|
||||
__prompt "$continue"
|
||||
|
||||
cat << eof
|
||||
|
||||
Let's take a deeper look at the initial manifest to understand what it means:
|
||||
|
||||
__file /etc/cdist-configured --type file
|
||||
| | | \\
|
||||
| | The parameter type \\ With the value file
|
||||
| |
|
||||
| |
|
||||
| | This is the object id
|
||||
|
|
||||
__file is a so called "type"
|
||||
|
||||
|
||||
This essentially looks like a standard command executed in the shell.
|
||||
eof
|
||||
__prompt "$continue"
|
||||
|
||||
cat << eof
|
||||
|
||||
And that's exactly true. Manifests are shell snippets that can use
|
||||
types as commands with arguments. cdist prepends a special path
|
||||
that contain links to the cdist-type-emulator, to \$PATH, so you
|
||||
can use your types as a command.
|
||||
|
||||
This is also the reason why types should always be prefixed with
|
||||
"__", to prevent collisions with existing binaries.
|
||||
|
||||
The object id is unique per type and used to prevent you from creating
|
||||
the same object twice.
|
||||
|
||||
Parameters are type specific and are always specified as --parameter <value>.
|
||||
|
||||
See also:
|
||||
|
||||
cdist-type-build-emulation(1), cdist-type-emulator(1)
|
||||
|
||||
eof
|
||||
__prompt "$continue"
|
||||
|
||||
################################################################################
|
||||
# Types
|
||||
#
|
||||
cat << eof
|
||||
|
||||
Types are bundled functionality and are the main component of cdist.
|
||||
If you want to have a feature x, you write the type __x. Types are stored in
|
||||
|
||||
${__cdist_type_dir}
|
||||
|
||||
And cdist ships with some types already!
|
||||
|
||||
See also:
|
||||
|
||||
cdist-type(7)
|
||||
|
||||
eof
|
||||
__prompt "Press enter to see available types"
|
||||
|
||||
set -x
|
||||
ls ${__cdist_type_dir}
|
||||
set +x
|
||||
|
||||
cat << eof
|
||||
|
||||
Types consist of the following parts:
|
||||
|
||||
- ${__cdist_name_parameter} (${__cdist_name_parameter_required}/${__cdist_name_parameter_optional}
|
||||
- ${__cdist_name_manifest}
|
||||
- ${__cdist_name_explorer}
|
||||
- ${__cdist_name_gencode}
|
||||
|
||||
eof
|
||||
__prompt "$continue"
|
||||
|
||||
|
||||
cat << eof
|
||||
|
||||
Every type must have a directory named ${__cdist_name_parameter}, which
|
||||
contains required or optional parameters (in newline seperated files).
|
||||
|
||||
If an object of a specific type was created in the initial manifest,
|
||||
the manifest of the type is run and may create other objects.
|
||||
|
||||
A type may have ${__cdist_name_explorer}, which are very similar to the
|
||||
${__cdist_name_explorer} seen above, but with a different purpose:
|
||||
They are specific to the type and are not relevant for other types.
|
||||
|
||||
You may use them for instance to find out details on the target host,
|
||||
so you can decide what to do on the target host eventually.
|
||||
|
||||
After the ${__cdist_name_manifest} and the ${__cdist_name_explorer} of
|
||||
a type have been run, ${__cdist_name_gencode} is executed, which creates
|
||||
code to be executed on the target on stdout.
|
||||
|
||||
eof
|
||||
__prompt "$continue"
|
||||
|
||||
################################################################################
|
||||
# Deployment
|
||||
#
|
||||
|
||||
cat << eof
|
||||
|
||||
Now you've got some basic knowledge about cdist, let's configure your a host!
|
||||
|
||||
Ensure that you have a ssh server running on the host and that you can login as root.
|
||||
|
||||
eof
|
||||
|
||||
__prompt "Enter hostname or press enter for localhost: "
|
||||
|
||||
if [ "$answer" ]; then
|
||||
host="$answer"
|
||||
else
|
||||
host="localhost"
|
||||
fi
|
||||
|
||||
manifestinit="conf/manifest/init"
|
||||
cat << eof
|
||||
|
||||
I'll now setup $manifestinit, containing the following code:
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
# Every machine becomes a marker, so sysadmins know that automatic
|
||||
# configurations are happening
|
||||
__file /etc/cdist-configured
|
||||
|
||||
case "\$__target_host" in
|
||||
$host)
|
||||
__link /tmp/cdist-testfile --source /etc/cdist-configured --type symbolic
|
||||
__addifnosuchline /tmp/cdist-welcome --line "Welcome to cdist"
|
||||
;;
|
||||
esac
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
WARNING: This will overwrite ${manifestinit}.
|
||||
|
||||
eof
|
||||
|
||||
cat > "$__cdist_abs_mydir/../$manifestinit" << eof
|
||||
|
||||
# Every machine becomes a marker, so sysadmins know that automatic
|
||||
# configurations are happening
|
||||
__file /etc/cdist-configured
|
||||
|
||||
case "\$__target_host" in
|
||||
$host)
|
||||
__link /tmp/cdist-testfile --source /etc/cdist-configured --type symbolic
|
||||
__addifnosuchline /tmp/cdist-welcome --line "Welcome to cdist"
|
||||
;;
|
||||
esac
|
||||
|
||||
eof
|
||||
|
||||
chmod u+x "$__cdist_abs_mydir/../$manifestinit"
|
||||
|
||||
cmd="cdist-deploy-to $host"
|
||||
|
||||
__prompt "Press enter to run \"$cmd\""
|
||||
|
||||
# No quotes, we need field splitting
|
||||
$cmd
|
||||
|
||||
################################################################################
|
||||
# End
|
||||
#
|
||||
|
||||
cat << eof
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
That's it, this is the end of the cdist-quickstart.
|
||||
|
||||
I hope you've got some impression on how cdist works, here are again some
|
||||
pointers on where to continue to read:
|
||||
|
||||
cdist(7), cdist-deploy-to(1), cdist-type(7), cdist-stages(7)
|
||||
|
||||
eof
|
||||
Loading…
Add table
Add a link
Reference in a new issue