cdist/docs/man/cdist-reference.text.sh

270 lines
8.4 KiB
Bash
Raw Normal View History

#!/bin/sh
#
# 2010-2014 Nico Schottelius (nico-cdist at schottelius.org)
# 2014 Daniel Heule (hda at sfs.biz)
#
# 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/>.
#
#
# Generate manpage that lists available types
#
__cdist_pwd="$(pwd -P)"
__cdist_mydir="${0%/*}";
__cdist_abs_mydir="$(cd "$__cdist_mydir" && pwd -P)"
__cdist_myname=${0##*/};
__cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname"
filename="${__cdist_myname%.sh}"
dest="$__cdist_abs_mydir/man7/$filename"
cd "$__cdist_abs_mydir"
exec > "$dest"
cat << eof
cdist-reference(7)
==================
Nico Schottelius <nico-cdist--@--schottelius.org>
NAME
----
cdist-reference - Variable, path and type reference for cdist
EXPLORERS
---------
The following global explorers are available:
eof
(
cd ../../cdist/conf/explorer
for explorer in *; do
echo "- $explorer"
done
)
cat << eof
PATHS
-----
\$HOME/.cdist::
The standard cdist configuration directory relative to your home directory
This is usually the place you want to store your site specific configuration
cdist/conf/::
The distribution configuration directory
This contains types and explorers to be used
confdir::
Cdist will use all available configuration directories and create
a temporary confdir containing links to the real configuration directories.
This way it is possible to merge configuration directories.
By default it consists of everything in \$HOME/.cdist and cdist/conf/.
For more details see cdist(1)
confdir/files/::
Cdist does not care about this directory besides providing access to it.
It is thought to be a general file storage area.
confdir/manifest/init::
This is the central entry point.
It is an executable (+x bit set) shell script that can use
values from the explorers to decide which configuration to create
for the specified target host.
Its intent is to used to define mapping from configurations to hosts.
confdir/manifest/*::
All other files in this directory are not directly used by cdist, but you
can seperate configuration mappings, if you have a lot of code in the
conf/manifest/init file. This may also be helpful to have different admins
maintain different groups of hosts.
confdir/explorer/<name>::
Contains explorers to be run on the target hosts, see cdist-explorer(7).
confdir/type/::
Contains all available types, which are used to provide
some kind of functionality. See cdist-type(7).
confdir/type/<name>/::
Home of the type <name>.
This directory is referenced by the variable __type (see below).
confdir/type/<name>/man.text::
Manpage in Asciidoc format (required for inclusion into upstream)
confdir/type/<name>/manifest::
Used to generate additional objects from a type.
confdir/type/<name>/gencode-local::
Used to generate code to be executed on the source host
confdir/type/<name>/gencode-remote::
Used to generate code to be executed on the target host
confdir/type/<name>/parameter/required::
Parameters required by type, \n seperated list.
confdir/type/<name>/parameter/optional::
Parameters optionally accepted by type, \n seperated list.
confdir/type/<name>/parameter/default/*::
Default values for optional parameters.
Assuming an optional parameter name of 'foo', it's default value would
be read from the file confdir/type/<name>/parameter/default/foo.
confdir/type/<name>/parameter/boolean::
Boolean parameters accepted by type, \n seperated list.
confdir/type/<name>/explorer::
Location of the type specific explorers.
This directory is referenced by the variable __type_explorer (see below).
See cdist-explorer(7).
confdir/type/<name>/files::
This directory is reserved for user data and will not be used
by cdist at any time. It can be used for storing supplementary
files (like scripts to act as a template or configuration files).
out/::
This directory contains output of cdist and is usually located
in a temporary directory and thus will be removed after the run.
This directory is referenced by the variable __global (see below).
out/explorer::
Output of general explorers.
out/object::
Objects created for the host.
out/object/<object>::
Contains all object specific information.
This directory is referenced by the variable __object (see below).
out/object/<object>/explorers::
Output of type specific explorers, per object.
TYPES
-----
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}";
name_no_underline="$(echo $name | sed 's/^__/\\__/g')"
man="${no_dir%.text}(7)"
echo "- $name_no_underline" "($man)"
done
cat << eof
OBJECTS
-------
For object to object communication and tests, the following paths are
usable within a object directory:
files::
This directory is reserved for user data and will not be used
by cdist at any time. It can be used freely by the type
(for instance to store template results).
changed::
This empty file exists in an object directory, if the object has
code to be excuted (either remote or local)
stdin::
This file exists and contains data, if data was provided on stdin
when the type was called.
ENVIRONMENT VARIABLES (FOR READING)
-----------------------------------
The following environment variables are exported by cdist:
__explorer::
Directory that contains all global explorers.
Available for: initial manifest, explorer, type explorer, shell
__files::
Directory that contains content from the "files" subdirectories
from the configuration directories.
Available for: initial manifest, type manifest, type gencode, shell
__manifest::
Directory that contains the initial manifest.
Available for: initial manifest, type manifest, shell
__global::
Directory that contains generic output like explorer.
Available for: initial manifest, type manifest, type gencode, shell
__messages_in::
File to read messages from
Available for: initial manifest, type manifest, type gencode
__messages_out::
File to write messages
Available for: initial manifest, type manifest, type gencode
__object::
Directory that contains the current object.
Available for: type manifest, type explorer, type gencode and code scripts
__object_id::
The type unique object id.
Available for: type manifest, type explorer, type gencode and code scripts
Note: The leading and the trailing "/" will always be stripped (caused by
the filesystem database and ensured by the core).
Note: Double slashes ("//") will not be fixed and result in an error.
__object_name::
The full qualified name of the current object.
Available for: type manifest, type explorer, type gencode
__target_host::
The host we are deploying to.
Available for: explorer, initial manifest, type explorer, type manifest, type gencode, shell
__type::
Path to the current type.
Available for: type manifest, type gencode
__type_explorer::
Directory that contains the type explorers.
Available for: type explorer
ENVIRONMENT VARIABLES (FOR WRITING)
-----------------------------------
The following environment variables influence the behaviour of cdist:
require::
Setup dependencies between objects (see cdist-manifest(7))
CDIST_LOCAL_SHELL::
Use this shell locally instead of /bin/sh to execute scripts
CDIST_REMOTE_SHELL::
Use this shell remotely instead of /bin/sh to execute scripts
CDIST_OVERRIDE::
Allow overwriting type parameters (see cdist-manifest(7))
CDIST_ORDER_DEPENDENCY::
Create dependencies based on the execution order (see cdist-manifest(7))
SEE ALSO
--------
- cdist(1)
COPYING
-------
Copyright \(C) 2011-2014 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).
eof