cdist manpages update: 4.1.0

This commit is contained in:
Darko Poljak 2016-05-27 07:29:45 +02:00
parent 608b1411b9
commit a739bb4a95
255 changed files with 64129 additions and 0 deletions

View file

@ -0,0 +1,11 @@
[[!meta title="Cdist 4.1.0 released"]]
Here's a short overview about the changes found in version 4.1.0:
* Documentation: Migrate to reStructuredText format and sphinx (Darko Poljak)
* Core: Add -f option to read additional hosts from file/stdin (Darko Poljak)
* Type __apt_key: Use pool.sks-keyservers.net as keyserver (Steven Armstrong)
For more information visit the [[cdist homepage|software/cdist]].
[[!tag cdist config unix]]

View file

@ -0,0 +1,12 @@
Welcome to cdist documentation
==============================
Contents:
.. toctree::
:titlesonly:
:glob:
:numbered:
man1/*
man7/*

View file

@ -0,0 +1,186 @@
cdist(1)
========
Usable Configuration Management
Nico Schottelius <nico-cdist--@--schottelius.org>
SYNOPSIS
--------
::
cdist [-h] [-d] [-v] [-V] {banner,config,shell} ...
cdist banner [-h] [-d] [-v]
cdist config [-h] [-d] [-V] [-c CONF_DIR] [-f HOSTFILE] [-i MANIFEST] [-p] [-s] [host [host ...]]
cdist shell [-h] [-d] [-v] [-s SHELL]
DESCRIPTION
-----------
cdist is the frontend executable to the cdist configuration management.
cdist supports different subcommands as explained below.
GENERAL
-------
All commands accept the following options:
.. option:: -d, --debug
Set log level to debug
.. option:: -h, --help
Show the help screen
.. option:: -v, --verbose
Set log level to info, be more verbose
.. option:: -V, --version
Show version and exit
BANNER
------
Displays the cdist banner. Useful for printing
cdist posters - a must have for every office.
CONFIG
------
Configure one or more hosts
.. option:: -h, --help
Show the help screen
.. option:: -c CONF_DIR, --conf-dir CONF_DIR
Add a configuration directory. Can be specified multiple times.
If configuration directories contain conflicting types, explorers or
manifests, then the last one found is used. Additionally this can also
be configured by setting the CDIST_PATH environment variable to a colon
delimited list of config directories. Directories given with the
--conf-dir argument have higher precedence over those set through the
environment variable.
.. option:: -f HOSTFILE, --file HOSTFILE
Read additional hosts to operate on from specified file
or from stdin if '-' (each host on separate line).
If no host or host file is specified then, by default,
read hosts from stdin.
.. option:: -i MANIFEST, --initial-manifest MANIFEST
Path to a cdist manifest or - to read from stdin
.. option:: -p, --parallel
Operate on multiple hosts in parallel
.. option:: -s, --sequential
Operate on multiple hosts sequentially
.. option:: --remote-copy REMOTE_COPY
Command to use for remote copy (should behave like scp)
.. option:: --remote-exec REMOTE_EXEC
Command to use for remote execution (should behave like ssh)
SHELL
-----
This command allows you to spawn a shell that enables access
to the types as commands. It can be thought as an
"interactive manifest" environment. See below for example
usage. Its primary use is for debugging type parameters.
.. option:: -s/--shell
Select shell to use, defaults to current shell
EXAMPLES
--------
.. code-block:: sh
# Configure ikq05.ethz.ch with debug enabled
% cdist config -d ikq05.ethz.ch
# Configure hosts in parallel and use a different configuration directory
% cdist config -c ~/p/cdist-nutzung \
-p ikq02.ethz.ch ikq03.ethz.ch ikq04.ethz.ch
# Use custom remote exec / copy commands
% cdist config --remote-exec /path/to/my/remote/exec \
--remote-copy /path/to/my/remote/copy \
-p ikq02.ethz.ch ikq03.ethz.ch ikq04.ethz.ch
# Configure hosts read from file loadbalancers
% cdist config -f loadbalancers
# Display banner
cdist banner
# Show help
% cdist --help
# Show Version
% cdist --version
# Enter a shell that has access to emulated types
% cdist shell
% __git
usage: __git --source SOURCE [--state STATE] [--branch BRANCH]
[--group GROUP] [--owner OWNER] [--mode MODE] object_id
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.
CDIST_LOCAL_SHELL
Selects shell for local script execution, defaults to /bin/sh
CDIST_REMOTE_SHELL
Selects shell for remote scirpt execution, defaults to /bin/sh
CDIST_REMOTE_EXEC
Use this command for remote execution (should behave like ssh)
CDIST_REMOTE_COPY
Use this command for remote copy (should behave like scp)
EXIT STATUS
-----------
The following exit values shall be returned:
0
Successful completion
1
One or more host configurations failed
SEE ALSO
--------
- `cdist-type(7) <../man7/cdist-type.html>`_
- `cdist-reference(7) <../man7/cdist-reference.html>`_
COPYING
-------
Copyright \(C) 2011-2013 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,238 @@
cdist-best-practice(7)
======================
Practices used in real environments
Nico Schottelius <nico-cdist--@--schottelius.org>
PASSWORDLESS CONNECTIONS
------------------------
It is recommended to run cdist with public key authentication.
This requires a private/public key pair and the entry
"PermitRootLogin without-password" in the sshd server.
See sshd_config(5) and ssh-keygen(1).
SPEEDING UP SSH CONNECTIONS
---------------------------
When connecting to a new host, the initial delay with ssh connections
is pretty big. You can work around this by
"sharing of multiple sessions over a single network connection"
(quote from ssh_config(5)). The following code is suitable for
inclusion into your ~/.ssh/config::
Host *
ControlPath ~/.ssh/master-%l-%r@%h:%p
ControlMaster auto
ControlPersist 10
SPEEDING UP SHELL EXECUTION
----------------------------
On the source host, ensure that /bin/sh is *not* bash: bash is quite slow for
script execution. Instead, you could use dash after installing it::
ln -sf /bin/dash /bin/sh
MULTI MASTER OR ENVIRONMENT SETUPS
----------------------------------
If you plan to distribute cdist among servers or use different
environments, you can do so easily with the included version
control git. For instance if you plan to use the typical three
environments production, integration and development, you can
realise this with git branches::
# Go to cdist checkout
cd /path/to/cdist
# Create branches
git branch development
git branch integration
git branch production
# Make use of a branch, for instance production
git checkout production
Similar if you want to have cdist checked out at multiple machines,
you can clone it multiple times::
machine-a % git clone git://your-git-server/cdist
machine-b % git clone git://your-git-server/cdist
SEPERATING WORK BY GROUPS
-------------------------
If you are working with different groups on one cdist-configuration,
you can delegate to other manifests and have the groups edit only
their manifests. You can use the following snippet in
**conf/manifests/init**::
# Include other groups
sh -e "$__manifest/systems"
sh -e "$__manifest/cbrg"
MAINTAINING MULTIPLE CONFIGURATIONS
-----------------------------------
When you need to manage multiple sites with cdist, like company_a, company_b
and private for instance, you can easily use git for this purpose.
Including a possible common base that is reused across the different sites::
# create branches
git branch company_a company_b common private
# make stuff for company a
git checkout company_a
# work, commit, etc.
# make stuff for company b
git checkout company_b
# work, commit, etc.
# make stuff relevant for all sites
git checkout common
# work, commit, etc.
# change to private and include latest common stuff
git checkout private
git merge common
The following **.git/config** is taken from a a real world scenario::
# Track upstream, merge from time to time
[remote "upstream"]
url = git://git.schottelius.org/cdist
fetch = +refs/heads/*:refs/remotes/upstream/*
# Same as upstream, but works when being offline
[remote "local"]
fetch = +refs/heads/*:refs/remotes/local/*
url = /home/users/nico/p/cdist
# Remote containing various ETH internal branches
[remote "eth"]
url = sans.ethz.ch:/home/services/sans/git/cdist-eth
fetch = +refs/heads/*:refs/remotes/eth/*
# Public remote that contains my private changes to cdist upstream
[remote "nico"]
url = git.schottelius.org:/home/services/git/cdist-nico
fetch = +refs/heads/*:refs/remotes/nico/*
# The "nico" branch will be synced with the remote nico, branch master
[branch "nico"]
remote = nico
merge = refs/heads/master
# ETH stable contains rock solid configurations used in various places
[branch "eth-stable"]
remote = eth
merge = refs/heads/stable
Have a look at git-remote(1) to adjust the remote configuration, which allows
MULTIPLE DEVELOPERS WITH DIFFERENT TRUST
----------------------------------------
If you are working in an environment that requires different people to
work on the same configuration, but having different privileges, you can
implement this scenario with a gateway host and sudo:
- Create a dedicated user (for instance **cdist**)
- Setup the ssh-pubkey for this user that has the right to configure all hosts
- Create a wrapper to update the cdist configuration in ~cdist/cdist
- Allow every developer to execute this script via sudo as the user cdist
- Allow run of cdist as user cdist on specific hosts on a per user/group base
- f.i. nico ALL=(ALL) NOPASSWD: /home/cdist/bin/cdist config hostabc
For more details consult sudoers(5)
TEMPLATING
----------
* create directory files/ in your type (convention)
* create the template as an executable file like files/basic.conf.sh, it will output text using shell variables for the values
.. code-block:: sh
#!/bin/sh
# in the template, use cat << eof (here document) to output the text
# and use standard shell variables in the template
# output everything in the template script to stdout
cat << EOF
server {
listen 80;
server_name $SERVERNAME;
root $ROOT;
access_log /var/log/nginx/$SERVERNAME_access.log
error_log /var/log/nginx/$SERVERNAME_error.log
}
EOF
* in the manifest, export the relevant variables and add the following lines in your manifest:
.. code-block:: console
# export variables needed for the template
export SERVERNAME='test"
export ROOT='/var/www/test'
# render the template
mkdir -p "$__object/files"
"$__type/files/basic.conf.sh" > "$__object/files/basic.conf"
# send the rendered template
__file /etc/nginx/sites-available/test.conf \
--state present
--source "$__object/files/basic.conf"
TESTING A NEW TYPE
------------------
If you want to test a new type on a node, you can tell cdist to only use an
object of this type: Use the '--initial-manifest' parameter
with - (stdin) as argument and feed object into stdin
of cdist:
.. code-block:: sh
# Singleton type without parameter
echo __ungleich_munin_server | cdist --initial-manifest - munin.panter.ch
# Singleton type with parameter
echo __ungleich_munin_node --allow 1.2.3.4 | \
cdist --initial-manifest - rails-19.panter.ch
# Normal type
echo __file /tmp/stdintest --mode 0644 | \
cdist --initial-manifest - cdist-dev-01.ungleich.ch
OTHER CONTENT IN CDIST REPOSITORY
---------------------------------
Usually the cdist repository contains all configuration
items. Sometimes you may have additional resources that
you would like to store in your central configuration
repositiory (like password files from KeepassX,
Libreoffice diagrams, etc.).
It is recommended to use a subfolder named "non-cdist"
in the repository for such content: It allows you to
easily distinguish what is used by cdist and what not
and also to store all important files in one
repository.
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
- `cdist-tutorial(7) <cdist-tutorial.html>`_
COPYING
-------
Copyright \(C) 2011-2013 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,137 @@
cdist-bootstrap(7)
==================
Setup cdist environment
Nico Schottelius <nico-cdist--@--schottelius.org>
INTRODUCTION
------------
This document describes the usual steps recommended for a new
cdist setup. It is recommended that you have read and understood
cdist-quickstart(7) before digging into this.
LOCATION
---------
First of all, you should think about where to store your configuration
database and who will be accessing or changing it. Secondly you have to
think about where to configure your hosts from, which may be a different
location.
For starters, having cdist (which includes the configuration database) on
your notebook should be fine.
Additionally an external copy of the git repository the configuration
relies on is recommended, for use as backup as well as to allow easy collaboration
with others.
For more sophisticated setups developing cdist configurations with multiple
people, have a look at cdist-best-practice(7).
SETUP WORKING DIRECTORY AND BRANCH
----------------------------------
I assume you have a fresh copy of the cdist tree in ~/cdist, cloned from
one of the official urls (see cdist-quickstart(7) if you don't).
Entering the command "git branch" should show you "* master", which indicates
you are on the **master** branch.
The master branch reflects the latest development of cdist. As this is the
development branch, it may or may not work. There are also version branches
available, which are kept in a stable state. Let's use **git branch -r**
to list all branches::
cdist% git branch -r
origin/1.0
origin/1.1
origin/1.2
origin/1.3
origin/1.4
origin/1.5
origin/1.6
origin/1.7
origin/2.0
origin/HEAD -> origin/master
origin/archive_shell_function_approach
origin/master
So **2.0** is the latest version branch in this example.
All versions (2.0.x) within one version branch (2.0) are compatible to each
other and won't break your configuration when updating.
It's up to you to decide which branch you want to base your own work on:
master contains more recent changes, newer types, but may also break.
The version branches are stable, but may lack the latest features.
Your decision can be changed later on, but may result in merge conflicts,
which you will need to solve.
Let's assume you want latest stuff and select the master branch as base for
your own work. Now it's time to create your branch, which contains your
local changes. I usually name it by the company/area I am working for:
ethz-systems, localch, customerX, ... But this is pretty much up to you.
In this tutorial I use the branch **mycompany**::
cdist% git checkout -b mycompany origin/master
Branch mycompany set up to track remote branch master from origin.
Switched to a new branch 'mycompany'
cdist-user% git branch
master
* mycompany
From now on, you can use git as usual to commit your changes in your own branch.
PUBLISHING THE CONFIGURATION
----------------------------
Usually a development machine like a notebook should be considered
temporary only. For this reason and to enable shareability, the configuration
should be published to another device as early as possible. The following
example shows how to publish the configuration to another host that is
reachable via ssh and has git installed::
# Create bare git repository on the host named "loch"
cdist% ssh loch "GIT_DIR=/home/nutzer/cdist git init"
Initialized empty Git repository in /home/nutzer/cdist/
# Add remote git repo to git config
cdist% git remote add loch loch:/home/nutzer/cdist
# Configure the mycompany branch to push to loch
cdist% git config branch.mycompany.remote loch
# Configure mycompany branch to push into remote master branch
cdist% git config branch.mycompany.merge refs/heads/master
# Push mycompany branch to remote branch master initially
cdist% git push loch mycompany:refs/heads/master
Now you have setup the git repository to synchronise the **mycompany**
branch with the **master** branch on the host **loch**. Thus you can commit
as usual in your branch and push out changes by entering **git push**.
UPDATING FROM ORIGIN
--------------------
Whenever you want to update your cdist installation, you can use git to do so::
# Update git repository with latest changes from origin
cdist% git fetch origin
# Update current branch with master branch from origin
cdist% git merge origin/master
# Alternative: Update current branch with 2.0 branch from origin
cdist% git merge origin/2.0
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
- `cdist-tutorial(7) <cdist-tutorial.html>`_
COPYING
-------
Copyright \(C) 2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,71 @@
cdist-explorer(7)
=================
Explore the target systems
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
Explorer are small shell scripts, which will be executed on the target
host. The aim of the explorer is to give hints to types on how to act on the
target system. An explorer outputs the result to stdout, which is usually
a one liner, but may be empty or multi line especially in the case of
type explorers.
There are general explorers, which are run in an early stage, and
type explorers. Both work almost exactly the same way, with the difference
that the values of the general explorers are stored in a general location and
the type specific below the object.
Explorers can reuse other explorers on the target system by calling
::
$__explorer/<explorer_name> (general and type explorer)
or
::
$__type_explorer/<explorer name> (type explorer).
In case of significant errors, the explorer may exit non-zero and return an
error message on stderr, which will cause cdist to abort.
You can also use stderr for debugging purposes while developing a new
explorer.
EXAMPLES
--------
A very simple explorer may look like this::
hostname
Which is in practise the **hostname** explorer.
A type explorer, which could check for the status of a package may look like this:
.. code-block:: sh
if [ -f "$__object/parameter/name" ]; then
name="$(cat "$__object/parameter/name")"
else
name="$__object_id"
fi
# Expect dpkg failing, if package is not known / installed
dpkg -s "$name" 2>/dev/null || exit 0
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
- `cdist-reference(7) <cdist-reference.html>`_
- `cdist-stages(7) <cdist-stages.html>`_
COPYING
-------
Copyright \(C) 2010-2014 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,158 @@
cdist-hacker(7)
===============
How to get (stuff) into cdist
Nico Schottelius <nico-cdist--@--schottelius.org>
WELCOME
-------
Welcome dear hacker! I invite you to a tour of pointers to
get into the usable configuration mangament system, cdist.
The first thing to know is probably that cdist is brought to
you by people who care about how code looks like and who think
twice before merging or implementing a feature: Less features
with good usability are far better than the opposite.
REPORTING BUGS
--------------
If you believe you've found a bug and verified that it is
in the latest version, drop a mail to the cdist mailing list,
subject prefixed with "[BUG] " or create an issue on github.
CODING CONVENTIONS (EVERYWHERE)
-------------------------------
If something should be better done or needs to fixed, add the word FIXME
nearby, so grepping for FIXME gives all positions that need to be fixed.
Indention is 4 spaces (welcome to the python world).
HOW TO SUBMIT STUFF FOR INCLUSION INTO UPSTREAM CDIST
-----------------------------------------------------
If you did some cool changes to cdist, which you value as a benefit for
everybody using cdist, you're welcome to propose inclusion into upstream.
There are though some requirements to ensure your changes don't break others
work nor kill the authors brain:
- All files should contain the usual header (Author, Copying, etc.)
- Code submission must be done via git
- Do not add cdist/conf/manifest/init - This file should only be touched in your
private branch!
- Code to be included should be branched of the upstream "master" branch
- Exception: Bugfixes to a version branch
- On a merge request, always name the branch I should pull from
- Always ensure **all** manpages build. Use **./build man** to test.
- If you developed more than **one** feature, consider submitting them in
separate branches. This way one feature can already be included, even if
the other needs to be improved.
As soon as your work meets these requirements, write a mail
for inclusion to the mailinglist **cdist at cdist -- at -- l.schottelius.org**
or open a pull request at http://github.com/telmich/cdist.
HOW TO SUBMIT A NEW TYPE
------------------------
For detailled information about types, see cdist-type(7).
Submitting a type works as described above, with the additional requirement
that a corresponding manpage named man.text in asciidoc format with
the manpage-name "cdist-type__NAME" is included in the type directory
AND asciidoc is able to compile it (i.e. do NOT have to many "=" in the second
line).
Warning: Submitting "exec" or "run" types that simply echo their parameter in
**gencode** will not be accepted, because they are of no use. Every type can output
code and thus such a type introduces redundant functionality that is given by
core cdist already.
EXAMPLE GIT WORKFLOW
---------------------
The following workflow works fine for most developers::
# get latest upstream master branch
git clone https://github.com/telmich/cdist.git
# update if already existing
cd cdist; git fetch -v; git merge origin/master
# create a new branch for your feature/bugfix
cd cdist # if you haven't done before
git checkout -b documentation_cleanup
# *hack*
*hack*
# clone the cdist repository on github if you haven't done so
# configure your repo to know about your clone (only once)
git remote add github git@github.com:YOURUSERNAME/cdist.git
# push the new branch to github
git push github documentation_cleanup
# (or everything)
git push --mirror github
# create a pull request at github (use a browser)
# *fixthingsbecausequalityassurancefoundissuesinourpatch*
*hack*
# push code to github again
git push ... # like above
# add comment that everything should be green now (use a browser)
# go back to master branch
git checkout master
# update master branch that includes your changes now
git fetch -v origin
git diff master..origin/master
git merge origin/master
If at any point you want to go back to the original master branch, you can
use **git stash** to stash your changes away::
# assume you are on documentation_cleanup
git stash
# change to master and update to most recent upstream version
git checkout master
git fetch -v origin
git merge origin/master
Similar when you want to develop another new feature, you go back
to the master branch and create another branch based on it::
# change to master and update to most recent upstream version
git checkout master
git fetch -v origin
git merge origin/master
git checkout -b another_feature
(you can repeat the code above for as many features as you want to develop
in parallel)
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
- git(1)
- git-checkout(1)
- git-stash(1)
COPYING
-------
Copyright \(C) 2011-2013 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,271 @@
cdist-manifest(7)
=================
(Re-)Use types
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
Manifests are used to define which objects to create.
Objects are instances of **types**, like in object oriented programming languages.
An object is represented by the combination of
**type + slash + object name**: **\__file/etc/cdist-configured** is an
object of the type **__file** with the name **etc/cdist-configured**.
All available types can be found in the **cdist/conf/type/** directory,
use **ls cdist/conf/type** to get the list of available types. If you have
setup the MANPATH correctly, you can use **man cdist-reference** to access
the reference with pointers to the manpages.
Types in manifests are used like normal command line tools. Let's have a look
at an example::
# Create object of type __package with the parameter state = absent
__package apache2 --state absent
# Same with the __directory type
__directory /tmp/cdist --state present
These two lines create objects, which will later be used to realise the
configuration on the target host.
Manifests are executed locally as a shell script using **/bin/sh -e**.
The resulting objects are stored in an internal database.
The same object can be redefined in multiple different manifests as long as
the parameters are exactly the same.
In general, manifests are used to define which types are used depending
on given conditions.
INITIAL AND TYPE MANIFESTS
--------------------------
Cdist knows about two types of manifests: The initial manifest and type
manifests. The initial manifest is used to define, which configurations
to apply to which hosts. The type manifests are used to create objects
from types. More about manifests in types can be found in cdist-type(7).
DEFINE STATE IN THE INITIAL MANIFEST
------------------------------------
The **initial manifest** is the entry point for cdist to find out, which
**objects** to configure on the selected host.
Cdist expects the initial manifest at **cdist/conf/manifest/init**.
Within this initial manifest you define, which objects should be
created on which host. To distinguish between hosts, you can use the
environment variable **__target_host**. Let's have a look at a simple
example::
__cdistmarker
case "$__target_host" in
localhost)
__directory /home/services/kvm-vm --parents yes
;;
esac
This manifest says: Independent of the host, always use the type
**__cdistmarker**, which creates the file **/etc/cdist-configured**,
with the timestamp as content.
The directory **/home/services/kvm-vm**, including all parent directories,
is only created on the host **localhost**.
As you can see, there is no magic involved, the manifest is simple shell code that
utilises cdist types. Every available type can be executed like a normal
command.
SPLITTING UP THE INITIAL MANIFEST
---------------------------------
If you want to split up your initial manifest, you can create other shell
scripts in **cdist/conf/manifest/** and include them in **cdist/conf/manifest/init**.
Cdist provides the environment variable **__manifest** to reference
the directory containing the initial manifest (see cdist-reference(7)).
The following example would include every file with a **.sh** suffix::
# Include *.sh
for manifest in $__manifest/*.sh; do
# And source scripts into our shell environment
. "$manifest"
done
DEPENDENCIES
------------
If you want to describe that something requires something else, just
setup the variable "require" to contain the requirements. Multiple
requirements can be added white space separated.
::
1 # No dependency
2 __file /etc/cdist-configured
3
4 # Require above object
5 require="__file/etc/cdist-configured" __link /tmp/cdist-testfile \
6 --source /etc/cdist-configured --type symbolic
7
8 # Require two objects
9 require="__file/etc/cdist-configured __link/tmp/cdist-testfile" \
10 __file /tmp/cdist-another-testfile
Above the "require" variable is only set for the command that is
immediately following it. Dependencies should always be declared that way.
On line 4 you can see that the instantion of a type "\__link" object needs
the object "__file/etc/cdist-configured" to be present, before it can proceed.
This also means that the "\__link" command must make sure, that either
"\__file/etc/cdist-configured" allready is present, or, if it's not, it needs
to be created. The task of cdist is to make sure, that the dependency will be
resolved appropriately and thus "\__file/etc/cdist-configured" be created
if necessary before "__link" proceeds (or to abort execution with an error).
If you really need to make all types depend on a common dependency, you can
export the "require" variable as well. But then, if you need to add extra
dependencies to a specific type, you have to make sure that you append these
to the globally already defined one.
::
# First of all, update the package index
__package_update_index
# Upgrade all the installed packages afterwards
require="__package_update_index" __package_upgrade_all
# Create a common dependency for all the next types so that they get to
# be executed only after the package upgrade has finished
export require="__package_upgrade_all"
# Ensure that lighttpd is installed after we have upgraded all the packages
__package lighttpd --state present
# Ensure that munin is installed after lighttpd is present and after all
# the packages are upgraded
require="$require __package/lighttpd" __package munin --state present
All objects that are created in a type manifest are automatically required
from the type that is calling them. This is called "autorequirement" in
cdist jargon.
You can find an more in depth description of the flow execution of manifests
in cdist-stages(7) and of how types work in cdist-type(7).
CREATE DEPENDENCIES FROM EXECUTION ORDER
-----------------------------------------
You can tell cdist to execute all types in the order in which they are created
in the manifest by setting up the variable CDIST_ORDER_DEPENDENCY.
When cdist sees that this variable is setup, the current created object
automatically depends on the previously created object.
It essentially helps you to build up blocks of code that build upon each other
(like first creating the directory xyz than the file below the directory).
OVERRIDES
---------
In some special cases, you would like to create an already defined object
with different parameters. In normal situations this leads to an error in cdist.
If you wish, you can setup the environment variable CDIST_OVERRIDE
(any value or even empty is ok) to tell cdist, that this object override is
wanted and should be accepted.
ATTENTION: Only use this feature if you are 100% sure in which order
cdist encounters the affected objects, otherwise this results
in an undefined situation.
If CDIST_OVERRIDE and CDIST_ORDER_DEPENDENCY are set for an object,
CDIST_ORDER_DEPENDENCY will be ignored, because adding a dependency in case of
overrides would result in circular dependencies, which is an error.
EXAMPLES
--------
The initial manifest may for instance contain the following code:
.. code-block:: sh
# Always create this file, so other sysadmins know cdist is used.
__file /etc/cdist-configured
case "$__target_host" in
my.server.name)
__directory /root/bin/
__file /etc/issue.net --source "$__manifest/issue.net
;;
esac
The manifest of the type "nologin" may look like this:
.. code-block:: sh
__file /etc/nologin --source "$__type/files/default.nologin"
This example makes use of dependencies:
.. code-block:: sh
# Ensure that lighttpd is installed
__package lighttpd --state present
# Ensure that munin makes use of lighttpd instead of the default webserver
# package as decided by the package manager
require="__package/lighttpd" __package munin --state present
How to override objects:
.. code-block:: sh
# for example in the inital manifest
# create user account foobar with some hash for password
__user foobar --password 'some_fancy_hash' --home /home/foobarexample
# ... many statements and includes in the manifest later ...
# somewhere in a conditionally sourced manifest
# (e.g. for example only sourced if a special application is on the target host)
# this leads to an error ...
__user foobar --password 'some_other_hash'
# this tells cdist, that you know that this is an override and should be accepted
CDIST_OVERRIDE=yes __user foobar --password 'some_other_hash'
# it's only an override, means the parameter --home is not touched
# and stays at the original value of /home/foobarexample
Dependencies defined by execution order work as following:
.. code-block:: sh
# Tells cdist to execute all types in the order in which they are created ...
export CDIST_ORDER_DEPENDENCY=on
__sample_type 1
require="__some_type_somewhere/id" __sample_type 2
__example_type 23
# Now this types are executed in the creation order until the variable is unset
unset CDIST_ORDER_DEPENDENCY
# all now following types cdist makes the order ..
__not_in_order_type 42
# how it works :
# this lines above are translated to:
__sample_type 1
require="__some_type_somewhere/id __sample_type/1" __sample_type 2
require="__sample_type/2" __example_type 23
__not_in_order_type 42
SEE ALSO
--------
- `cdist-tutorial(7) <cdist-tutorial.html>`_
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2010-2014 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,111 @@
cdist-messaging(7)
==================
How the initial manifest and types can communication
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
cdist has a simple but powerful way of allowing communication between
the initial manifest and types as well as types and types.
Whenever execution is passed from cdist to one of the
scripts described below, cdist generate 2 new temporary files
and exports the environment variables **__messages_in** and
**__messages_out** to point to them.
Before handing over the control, the content of the global message
file is copied into the file referenced by **$__messages_in**.
After cdist gained control back, the content of the file referenced
by **$__messages_out** is appended to the global message file.
This way overwriting any of the two files by accident does not
interfere with other types.
The order of execution is not defined unless you create dependencies
between the different objects (see cdist-manifest(7)) and thus you
can only react reliably on messages by objects that you depend on.
AVAILABILITY
------------
Messaging is possible between all **local** scripts:
- initial manifest
- type/manifest
- type/gencode-local
- type/gencode-remote
EXAMPLES
--------
When you want to emit a message use:
.. code-block:: sh
echo "something" >> "$__messages_out"
When you want to react on a message use:
.. code-block:: sh
if grep -q "^__your_type/object/id:something" "$__messages_in"; then
echo "I do something else"
fi
Some real life examples:
.. code-block:: sh
# Reacting on changes from block for keepalive
if grep -q "^__block/keepalive-vrrp" "$__messages_in"; then
echo /etc/init.d/keepalived restart
fi
# Reacting on changes of configuration files
if grep -q "^__file/etc/one" $__messages_in; then
echo 'for init in /etc/init.d/opennebula*; do $init restart; done'
fi
Restart sshd on changes
.. code-block:: sh
os="$(cat "$__global/explorer/os")"
case "$os" in
centos|redhat|suse)
restart="/etc/init.d/sshd restart"
;;
debian|ubuntu)
restart="/etc/init.d/ssh restart"
;;
*)
cat << eof >&2
Unsupported os $os.
If you would like to have this type running on $os,
you can either develop the changes and send a pull
request or ask for a quote at www.ungleich.ch
eof
exit 1
;;
esac
if grep -q "^__key_value/PermitRootLogin" "$__messages_in"; then
echo $restart
fi
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
- `cdist-manifest(7) <cdist-manifest.html>`_
- `cdist-reference(7) <cdist-reference.html>`_
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2013 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,95 @@
cdist-quickstart(7)
===================
Jump in and enjoy cdist
Nico Schottelius <nico-cdist--@--schottelius.org>
INTRODUCTION
------------
This tutorial is aimed at people learning cdist and shows
typical approaches as well as gives an easy start into
the world of configuration management.
This tutorial assumes you are configuring **localhost**, because
it is always available. Just replace **localhost** with your target
host for real life usage.
QUICK START - GET YOUR HANDS DIRTY NOW
--------------------------------------
For those who just want to configure a system with the
cdist configuration management and do not need (or want)
to understand everything.
Cdist uses **ssh** for communication and transportation
and usually logs into the **target host** as the
**root** user. So you need to configure the **ssh server**
of the target host to allow root logins: Edit
the file **/etc/ssh/sshd_config** and add one of the following
lines::
# Allow login only via public key
PermitRootLogin without-password
# Allow login via password and public key
PermitRootLogin yes
As cdist uses ssh intensively, it is recommended to setup authentication
with public keys::
# Generate pubkey pair as a normal user
ssh-keygen
# Copy pubkey over to target host
ssh-copy-id root@localhost
Have a look at ssh-agent(1) and ssh-add(1) on how to cache the password for
your public key. Usually it looks like this::
# Start agent and export variables
eval `ssh-agent`
# Add keys (requires password for every identity file)
ssh-add
At this point you should be able to **ssh root@localhost** without
re-entering the password. If something failed until here, ensure that
all steps went successfully and you have read and understood the
documentation.
As soon as you are able to login without password to localhost,
we can use cdist to configure it. You can copy and paste the following
code into your shell to get started and configure localhost::
# Get cdist
# Mirrors can be found on
# http://www.nico.schottelius.org/software/cdist/install/#index2h4
git clone git://git.schottelius.org/cdist
# Create manifest (maps configuration to host(s)
cd cdist
echo '__file /etc/cdist-configured' > cdist/conf/manifest/init
# Configure localhost in verbose mode
./bin/cdist config -v localhost
# Find out that cdist created /etc/cdist-configured
ls -l /etc/cdist-configured
That's it, you've successfully used cdist to configure your first host!
Continue reading the next sections, to understand what you did and how
to create a more sophisticated configuration.
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
- `cdist-tutorial(7) <cdist-tutorial.html>`_
COPYING
-------
Copyright \(C) 2011-2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,313 @@
cdist-reference(7)
==================
Variable, path and type reference for cdist
Nico Schottelius <nico-cdist--@--schottelius.org>
EXPLORERS
---------
The following global explorers are available:
- cpu_cores
- cpu_sockets
- hostname
- init
- interfaces
- lsb_codename
- lsb_description
- lsb_id
- lsb_release
- machine
- machine_type
- memory
- os
- os_version
- runlevel
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/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 separate 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.rst
Manpage in reStructuredText 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 separated list.
confdir/type/<name>/parameter/optional
Parameters optionally accepted by type, \n separated 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 separated 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:
- \__apt_key (`cdist-type__apt_key(7) <cdist-type__apt_key.html>`_)
- \__apt_key_uri (`cdist-type__apt_key_uri(7) <cdist-type__apt_key_uri.html>`_)
- \__apt_norecommends (`cdist-type__apt_norecommends(7) <cdist-type__apt_norecommends.html>`_)
- \__apt_ppa (`cdist-type__apt_ppa(7) <cdist-type__apt_ppa.html>`_)
- \__apt_source (`cdist-type__apt_source(7) <cdist-type__apt_source.html>`_)
- \__apt_update_index (`cdist-type__apt_update_index(7) <cdist-type__apt_update_index.html>`_)
- \__block (`cdist-type__block(7) <cdist-type__block.html>`_)
- \__ccollect_source (`cdist-type__ccollect_source(7) <cdist-type__ccollect_source.html>`_)
- \__cdist (`cdist-type__cdist(7) <cdist-type__cdist.html>`_)
- \__cdistmarker (`cdist-type__cdistmarker(7) <cdist-type__cdistmarker.html>`_)
- \__config_file (`cdist-type__config_file(7) <cdist-type__config_file.html>`_)
- \__consul (`cdist-type__consul(7) <cdist-type__consul.html>`_)
- \__consul_agent (`cdist-type__consul_agent(7) <cdist-type__consul_agent.html>`_)
- \__consul_check (`cdist-type__consul_check(7) <cdist-type__consul_check.html>`_)
- \__consul_reload (`cdist-type__consul_reload(7) <cdist-type__consul_reload.html>`_)
- \__consul_service (`cdist-type__consul_service(7) <cdist-type__consul_service.html>`_)
- \__consul_template (`cdist-type__consul_template(7) <cdist-type__consul_template.html>`_)
- \__consul_template_template (`cdist-type__consul_template_template(7) <cdist-type__consul_template_template.html>`_)
- \__consul_watch_checks (`cdist-type__consul_watch_checks(7) <cdist-type__consul_watch_checks.html>`_)
- \__consul_watch_event (`cdist-type__consul_watch_event(7) <cdist-type__consul_watch_event.html>`_)
- \__consul_watch_key (`cdist-type__consul_watch_key(7) <cdist-type__consul_watch_key.html>`_)
- \__consul_watch_keyprefix (`cdist-type__consul_watch_keyprefix(7) <cdist-type__consul_watch_keyprefix.html>`_)
- \__consul_watch_nodes (`cdist-type__consul_watch_nodes(7) <cdist-type__consul_watch_nodes.html>`_)
- \__consul_watch_service (`cdist-type__consul_watch_service(7) <cdist-type__consul_watch_service.html>`_)
- \__consul_watch_services (`cdist-type__consul_watch_services(7) <cdist-type__consul_watch_services.html>`_)
- \__cron (`cdist-type__cron(7) <cdist-type__cron.html>`_)
- \__debconf_set_selections (`cdist-type__debconf_set_selections(7) <cdist-type__debconf_set_selections.html>`_)
- \__directory (`cdist-type__directory(7) <cdist-type__directory.html>`_)
- \__dog_vdi (`cdist-type__dog_vdi(7) <cdist-type__dog_vdi.html>`_)
- \__file (`cdist-type__file(7) <cdist-type__file.html>`_)
- \__firewalld_rule (`cdist-type__firewalld_rule(7) <cdist-type__firewalld_rule.html>`_)
- \__git (`cdist-type__git(7) <cdist-type__git.html>`_)
- \__group (`cdist-type__group(7) <cdist-type__group.html>`_)
- \__hostname (`cdist-type__hostname(7) <cdist-type__hostname.html>`_)
- \__iptables_apply (`cdist-type__iptables_apply(7) <cdist-type__iptables_apply.html>`_)
- \__iptables_rule (`cdist-type__iptables_rule(7) <cdist-type__iptables_rule.html>`_)
- \__issue (`cdist-type__issue(7) <cdist-type__issue.html>`_)
- \__jail (`cdist-type__jail(7) <cdist-type__jail.html>`_)
- \__key_value (`cdist-type__key_value(7) <cdist-type__key_value.html>`_)
- \__line (`cdist-type__line(7) <cdist-type__line.html>`_)
- \__link (`cdist-type__link(7) <cdist-type__link.html>`_)
- \__locale (`cdist-type__locale(7) <cdist-type__locale.html>`_)
- \__motd (`cdist-type__motd(7) <cdist-type__motd.html>`_)
- \__mount (`cdist-type__mount(7) <cdist-type__mount.html>`_)
- \__mysql_database (`cdist-type__mysql_database(7) <cdist-type__mysql_database.html>`_)
- \__package (`cdist-type__package(7) <cdist-type__package.html>`_)
- \__package_apt (`cdist-type__package_apt(7) <cdist-type__package_apt.html>`_)
- \__package_emerge (`cdist-type__package_emerge(7) <cdist-type__package_emerge.html>`_)
- \__package_emerge_dependencies (`cdist-type__package_emerge_dependencies(7) <cdist-type__package_emerge_dependencies.html>`_)
- \__package_luarocks (`cdist-type__package_luarocks(7) <cdist-type__package_luarocks.html>`_)
- \__package_opkg (`cdist-type__package_opkg(7) <cdist-type__package_opkg.html>`_)
- \__package_pacman (`cdist-type__package_pacman(7) <cdist-type__package_pacman.html>`_)
- \__package_pip (`cdist-type__package_pip(7) <cdist-type__package_pip.html>`_)
- \__package_pkg_freebsd (`cdist-type__package_pkg_freebsd(7) <cdist-type__package_pkg_freebsd.html>`_)
- \__package_pkg_openbsd (`cdist-type__package_pkg_openbsd(7) <cdist-type__package_pkg_openbsd.html>`_)
- \__package_pkgng_freebsd (`cdist-type__package_pkgng_freebsd(7) <cdist-type__package_pkgng_freebsd.html>`_)
- \__package_rubygem (`cdist-type__package_rubygem(7) <cdist-type__package_rubygem.html>`_)
- \__package_update_index (`cdist-type__package_update_index(7) <cdist-type__package_update_index.html>`_)
- \__package_upgrade_all (`cdist-type__package_upgrade_all(7) <cdist-type__package_upgrade_all.html>`_)
- \__package_yum (`cdist-type__package_yum(7) <cdist-type__package_yum.html>`_)
- \__package_zypper (`cdist-type__package_zypper(7) <cdist-type__package_zypper.html>`_)
- \__pacman_conf (`cdist-type__pacman_conf(7) <cdist-type__pacman_conf.html>`_)
- \__pacman_conf_integrate (`cdist-type__pacman_conf_integrate(7) <cdist-type__pacman_conf_integrate.html>`_)
- \__pf_apply (`cdist-type__pf_apply(7) <cdist-type__pf_apply.html>`_)
- \__pf_ruleset (`cdist-type__pf_ruleset(7) <cdist-type__pf_ruleset.html>`_)
- \__postfix (`cdist-type__postfix(7) <cdist-type__postfix.html>`_)
- \__postfix_master (`cdist-type__postfix_master(7) <cdist-type__postfix_master.html>`_)
- \__postfix_postconf (`cdist-type__postfix_postconf(7) <cdist-type__postfix_postconf.html>`_)
- \__postfix_postmap (`cdist-type__postfix_postmap(7) <cdist-type__postfix_postmap.html>`_)
- \__postfix_reload (`cdist-type__postfix_reload(7) <cdist-type__postfix_reload.html>`_)
- \__postgres_database (`cdist-type__postgres_database(7) <cdist-type__postgres_database.html>`_)
- \__postgres_role (`cdist-type__postgres_role(7) <cdist-type__postgres_role.html>`_)
- \__process (`cdist-type__process(7) <cdist-type__process.html>`_)
- \__pyvenv (`cdist-type__pyvenv(7) <cdist-type__pyvenv.html>`_)
- \__qemu_img (`cdist-type__qemu_img(7) <cdist-type__qemu_img.html>`_)
- \__rbenv (`cdist-type__rbenv(7) <cdist-type__rbenv.html>`_)
- \__rsync (`cdist-type__rsync(7) <cdist-type__rsync.html>`_)
- \__rvm (`cdist-type__rvm(7) <cdist-type__rvm.html>`_)
- \__rvm_gem (`cdist-type__rvm_gem(7) <cdist-type__rvm_gem.html>`_)
- \__rvm_gemset (`cdist-type__rvm_gemset(7) <cdist-type__rvm_gemset.html>`_)
- \__rvm_ruby (`cdist-type__rvm_ruby(7) <cdist-type__rvm_ruby.html>`_)
- \__ssh_authorized_key (`cdist-type__ssh_authorized_key(7) <cdist-type__ssh_authorized_key.html>`_)
- \__ssh_authorized_keys (`cdist-type__ssh_authorized_keys(7) <cdist-type__ssh_authorized_keys.html>`_)
- \__ssh_dot_ssh (`cdist-type__ssh_dot_ssh(7) <cdist-type__ssh_dot_ssh.html>`_)
- \__staged_file (`cdist-type__staged_file(7) <cdist-type__staged_file.html>`_)
- \__start_on_boot (`cdist-type__start_on_boot(7) <cdist-type__start_on_boot.html>`_)
- \__timezone (`cdist-type__timezone(7) <cdist-type__timezone.html>`_)
- \__update_alternatives (`cdist-type__update_alternatives(7) <cdist-type__update_alternatives.html>`_)
- \__user (`cdist-type__user(7) <cdist-type__user.html>`_)
- \__user_groups (`cdist-type__user_groups(7) <cdist-type__user_groups.html>`_)
- \__yum_repo (`cdist-type__yum_repo(7) <cdist-type__yum_repo.html>`_)
- \__zypper_repo (`cdist-type__zypper_repo(7) <cdist-type__zypper_repo.html>`_)
- \__zypper_service (`cdist-type__zypper_service(7) <cdist-type__zypper_service.html>`_)
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 executed (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
__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))
CDIST_REMOTE_EXEC
Use this command for remote execution (should behave like ssh)
CDIST_REMOTE_COPY
Use this command for remote copy (should behave like scp)
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
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).

View file

@ -0,0 +1,45 @@
cdist-remote-exec-copy(7)
=========================
How to use remote exec and copy
Nico Schottelius <nico-cdist--@--schottelius.org>
INTRO
-----
Cdist interacts with the target host in two ways:
- it executes code (__remote_exec)
- and it copies files (__remote_copy)
By default this is accomplished with ssh and scp respectively.
The default implementations used by cdist are::
__remote_exec: ssh -o User=root -q
__remote_copy: scp -o User=root -q
The user can override these defaults by providing custom implementations and
passing them to cdist with the --remote-exec and/or --remote-copy arguments.
For __remote_exec, the custom implementation must behave as if it where ssh.
For __remote_copy, it must behave like scp.
With this simple interface the user can take total control of how cdist
interacts with the target when required, while the default implementation
remains as simple as possible.
EXAMPLES
--------
See cdist/other/examples/remote/ for some example implementations.
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
COPYING
-------
Copyright \(C) 2011-2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,86 @@
cdist-stages(7)
===============
Stages used during configuration deployment
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
Starting the execution of deployment with cdist, cdist passes
through different stages.
STAGE 1: TARGET INFORMATION RETRIEVAL
-------------------------------------
In this stage information is collected about the target host using so called
explorers. Every existing explorer is run on the target and the output of all
explorers are copied back into the local cache. The results can be used by
manifests and types.
STAGE 2: RUN THE INITIAL MANIFEST
---------------------------------
The initial manifest, which should be used for mappings of hosts to types,
is executed. This stage creates objects in a cconfig database that contains
the objects as defined in the manifest for the specific host. In this stage,
no conflicts may occur, i.e. no object of the same type with the same id may
be created, if it has different parameters.
STAGE 3: OBJECT INFORMATION RETRIEVAL
-------------------------------------
Every object is checked whether its type has explorers and if so, these are
executed on the target host. The results are transferred back
and can be used in the following stages to decide what changes need to be made
on the target to implement the desired state.
STAGE 4: RUN THE OBJECT MANIFEST
--------------------------------
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.example.org is of type __apache, which may
contain a manifest script, which creates new objects of type __file.
The newly created objects are merged back into the existing tree. No conflicts
may occur during the merge. A conflict would mean that two different objects
try to create the same object, which indicates a broken configuration.
STAGE 5: CODE GENERATION
------------------------
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.
STAGE 6: CODE EXECUTION
-----------------------
For every object the resulting code from the previous stage is transferred to
the target host and executed there to apply the configuration changes.
STAGE 7: CACHE
--------------
The cache stores the information from the current run for later use.
SUMMARY
-------
If, and only if, all the stages complete without an errors, the configuration
will be applied to the target.
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
- `cdist-reference(7) <cdist-reference.html>`_
COPYING
-------
Copyright \(C) 2010-2012 Nico Schottelius, Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,61 @@
cdist-troubleshooting(7)
========================
Common problems and their solutions
Nico Schottelius <nico-cdist--@--schottelius.org>
ERROR IN MANIFEST IS NOT CONSIDERED AN ERROR BY CDIST
-----------------------------------------------------
Situation: You are executing other scripts from a manifest.
This script fails, but cdist does not recognise the error.
An example script would be something like this:
.. code-block:: sh
% cat ~/.cdist/manifest/init
"$__manifest/special"
% cat ~/.cdist/manifest/special
#!/bin/sh
echo "Here is an unclean exiting script"
somecommandthatdoesnotexist
echo "I continue here although previous command failed"
We can clearly see that **somecommandthatdoesnotexist**
will fail in ~/.cdist/manifest/special. But as the custom
script is not called with the -e flag (exit on failure) of shell,
it does not lead to an error. And thus cdist sees the exit 0
code of the last echo line instead of the failing command.
All scripts executed by cdist carry the -e flag.
To prevent the above from happening, there are three solutions available,
two of which can be used in the calling script:
.. code-block:: sh
# Execute as before, but abort on failure
sh -e "$__manifest/special"
# Source the script in our namespace, runs in a set -e environment:
. "$__manifest/special"
The third solution is to include a shebang header in every script
you write to use the -e flag:
.. code-block:: sh
% cat ~/.cdist/manifest/special
#!/bin/sh -e
...
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
- `cdist-tutorial(7) <cdist-tutorial.html>`_
COPYING
-------
Copyright \(C) 2013 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,55 @@
cdist-tutorial(7)
=================
A guided introduction into cdist
Nico Schottelius <nico-cdist--@--schottelius.org>
INTRODUCTION
------------
This document gives you a pointer on what to read in
which order and is thus a "guide to the right locations".
So in case you are just starting, just "begin at the beginning"
(Brave New World). You can see the target audience in [] brackets
after the description.
cdist-quickstart
New to cdist? Want to get your hands dirty? Read this. [beginner]
cdist-bootstrap
The comprehensive guide to your first cdist installation [beginner]
cdist-manifest
Learn how to define which hosts get which configurations [beginner]
cdist-type
Understand how types are working and created [intermediate]
cdist-best-practice
Hints from real life experience to help you to organise cdist [intermediate]
cdist-reference
The type, explorers and environment variables reference [intermediate]
cdist-explorer
Interested in getting more information about the target system? [intermediate]
cdist-stages
Understand the internal workflow of cdist. [advanced]
cdist-hacker
README, if you want to extend or modify cdist. [hacker]
SEE ALSO
--------
- `cdist(1) <../man1/cdist.html>`_
- `cdist-type(7) <cdist-type.html>`_
- `cdist-best-practice(7) <cdist-best-practice.html>`_
- `cdist-stages(7) <cdist-stages.html>`_
- Brave New World by Aldous Huxley
COPYING
-------
Copyright \(C) 2011-2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,314 @@
cdist-type(7)
=============
Functionality bundled
Nico Schottelius <nico-cdist--@--schottelius.org>
SYNOPSIS
--------
::
__TYPE ID --parameter value [--parameter value ...]
__TYPE --parameter value [--parameter value ...] (for singletons)
DESCRIPTION
-----------
Types are the main component of cdist and define functionality. If you
use cdist, you'll write a type for every functionality you would like
to use.
HOW TO USE A TYPE
-----------------
You can use types from the initial manifest or the type manifest like a
normal shell command:
.. code-block:: sh
# Creates empty file /etc/cdist-configured
__file /etc/cdist-configured --type file
# Ensure tree is installed
__package tree --state installed
A list of supported types can be found in the cdist-reference(7) manpage.
SINGLETON TYPES
---------------
If a type is flagged as a singleton, it may be used only
once per host. This is useful for types which can be used only once on a
system. Singleton types do not take an object name as argument.
Example:
.. code-block:: sh
# __issue type manages /etc/issue
__issue
# Probably your own type - singletons may use parameters
__myfancysingleton --colour green
HOW TO WRITE A NEW TYPE
-----------------------
A type consists of
- parameter (optional)
- manifest (optional)
- singleton (optional)
- explorer (optional)
- gencode (optional)
Types are stored below cdist/conf/type/. Their name should always be prefixed with
two underscores (__) to prevent collisions with other executables in $PATH.
To implement a new type, create the directory **cdist/conf/type/__NAME**.
DEFINING PARAMETERS
-------------------
Every type consists of required, optional and boolean parameters, which must
each be declared in a newline separated file in **parameter/required**,
**parameter/required_multiple**, **parameter/optional**,
**parameter/optional_multiple** and **parameter/boolean**.
Parameters which are allowed multiple times should be listed in
required_multiple or optional_multiple respectively. All other parameters
follow the standard unix behaviour "the last given wins".
If either is missing, the type will have no required, no optional, no boolean
or no parameters at all.
Default values for optional parameters can be predefined in
**parameter/default/<name>**.
Example:
.. code-block:: sh
echo servername >> cdist/conf/type/__nginx_vhost/parameter/required
echo logdirectory >> cdist/conf/type/__nginx_vhost/parameter/optional
echo loglevel >> cdist/conf/type/__nginx_vhost/parameter/optional
mkdir cdist/conf/type/__nginx_vhost/parameter/default
echo warning > cdist/conf/type/__nginx_vhost/parameter/default/loglevel
echo server_alias >> cdist/conf/type/__nginx_vhost/parameter/optional_multiple
echo use_ssl >> cdist/conf/type/__nginx_vhost/parameter/boolean
USING PARAMETERS
----------------
The parameters given to a type can be accessed and used in all type scripts
(e.g manifest, gencode, explorer). Note that boolean parameters are
represented by file existence. File exists -> True,
file does not exist -> False
Example: (e.g. in cdist/conf/type/__nginx_vhost/manifest)
.. code-block:: sh
# required parameter
servername="$(cat "$__object/parameter/servername")"
# optional parameter
if [ -f "$__object/parameter/logdirectory" ]; then
logdirectory="$(cat "$__object/parameter/logdirectory")"
fi
# optional parameter with predefined default
loglevel="$(cat "$__object/parameter/loglevel")"
# boolean parameter
if [ -f "$__object/parameter/use_ssl" ]; then
# file exists -> True
# do some fancy ssl stuff
fi
# parameter with multiple values
if [ -f "$__object/parameter/server_alias" ]; then
for alias in $(cat "$__object/parameter/server_alias"); do
echo $alias > /some/where/usefull
done
fi
INPUT FROM STDIN
----------------
Every type can access what has been written on stdin when it has been called.
The result is saved into the **stdin** file in the object directory.
Example use of a type: (e.g. in cdist/conf/type/__archlinux_hostname)
.. code-block:: sh
__file /etc/rc.conf --source - << eof
...
HOSTNAME="$__target_host"
...
eof
If you have not seen this syntax (<< eof) before, it may help you to read
about "here documents".
In the __file type, stdin is used as source for the file, if - is used for source:
.. code-block:: sh
if [ -f "$__object/parameter/source" ]; then
source="$(cat "$__object/parameter/source")"
if [ "$source" = "-" ]; then
source="$__object/stdin"
fi
....
WRITING THE MANIFEST
--------------------
In the manifest of a type you can use other types, so your type extends
their functionality. A good example is the __package type, which in
a shortened version looks like this:
.. code-block:: sh
os="$(cat "$__global/explorer/os")"
case "$os" in
archlinux) type="pacman" ;;
debian|ubuntu) type="apt" ;;
gentoo) type="emerge" ;;
*)
echo "Don't know how to manage packages on: $os" >&2
exit 1
;;
esac
__package_$type "$@"
As you can see, the type can reference different environment variables,
which are documented in cdist-reference(7).
Always ensure the manifest is executable, otherwise cdist will not be able
to execute it. For more information about manifests see cdist-manifest(7).
SINGLETON - ONE INSTANCE ONLY
-----------------------------
If you want to ensure that a type can only be used once per target, you can
mark it as a singleton: Just create the (empty) file "singleton" in your type
directory:
.. code-block:: sh
touch cdist/conf/type/__NAME/singleton
This will also change the way your type must be called:
.. code-block:: sh
__YOURTYPE --parameter value
As you can see, the object ID is omitted, because it does not make any sense,
if your type can be used only once.
THE TYPE EXPLORERS
------------------
If a type needs to explore specific details, it can provide type specific
explorers, which will be executed on the target for every created object.
The explorers are stored under the "explorer" directory below the type.
It could for instance contain code to check the md5sum of a file on the
client, like this (shortened version from the type __file):
.. code-block:: sh
if [ -f "$__object/parameter/destination" ]; then
destination="$(cat "$__object/parameter/destination")"
else
destination="/$__object_id"
fi
if [ -e "$destination" ]; then
md5sum < "$destination"
fi
WRITING THE GENCODE SCRIPT
--------------------------
There are two gencode scripts: **gencode-local** and **gencode-remote**.
The output of gencode-local is executed locally, whereas
the output of gencode-remote is executed on the target.
The gencode scripts can make use of the parameters, the global explorers
and the type specific explorers.
If the gencode scripts encounters an error, it should print diagnostic
messages to stderr and exit non-zero. If you need to debug the gencode
script, you can write to stderr:
.. code-block:: sh
# Debug output to stderr
echo "My fancy debug line" >&2
# Output to be saved by cdist for execution on the target
echo "touch /etc/cdist-configured"
VARIABLE ACCESS FROM THE GENERATED SCRIPTS
------------------------------------------
In the generated scripts, you have access to the following cdist variables
- __object
- __object_id
but only for read operations, means there is no back copy of this
files after the script execution.
So when you generate a script with the following content, it will work:
.. code-block:: sh
if [ -f "$__object/parameter/name" ]; then
name="$(cat "$__object/parameter/name")"
else
name="$__object_id"
fi
HINTS FOR TYPEWRITERS
----------------------
It must be assumed that the target is pretty dumb and thus does not have high
level tools like ruby installed. If a type requires specific tools to be present
on the target, there must be another type that provides this tool and the first
type should create an object of the specific type.
If your type wants to save temporary data, that may be used by other types
later on (for instance \__file), you can save them in the subdirectory
"files" below $__object (but you must create it yourself).
cdist will not touch this directory.
If your type contains static files, it's also recommended to place them in
a folder named "files" within the type (again, because cdist guarantees to
never ever touch this folder).
HOW TO INCLUDE A TYPE INTO UPSTREAM CDIST
-----------------------------------------
If you think your type may be useful for others, ensure it works with the
current master branch of cdist and have a look at cdist-hacker(7) on
how to submit it.
SEE ALSO
--------
- `cdist-explorer(7) <cdist-explorer.html>`_
- `cdist-hacker(7) <cdist-hacker.html>`_
- `cdist-stages(7) <cdist-stages.html>`_
- `cdist-tutorial(7) <cdist-tutorial.html>`_
COPYING
-------
Copyright \(C) 2011-2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,58 @@
cdist-type__apt_key(7)
======================
Manage the list of keys used by apt
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Manages the list of keys used by apt to authenticate packages.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent'. Defaults to 'present'
keyid
the id of the key to add. Defaults to __object_id
keyserver
the keyserver from which to fetch the key. If omitted the default set in
./parameter/default/keyserver is used.
EXAMPLES
--------
.. code-block:: sh
# Add Ubuntu Archive Automatic Signing Key
__apt_key 437D05B5
# Same thing
__apt_key 437D05B5 --state present
# Get rid of it
__apt_key 437D05B5 --state absent
# same thing with human readable name and explicit keyid
__apt_key UbuntuArchiveKey --keyid 437D05B5
# same thing with other keyserver
__apt_key UbuntuArchiveKey --keyid 437D05B5 --keyserver keyserver.ubuntu.com
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2011-2014 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,48 @@
cdist-type__apt_key_uri(7)
==========================
Add apt key from uri
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Download a key from an uri and add it to the apt keyring.
REQUIRED PARAMETERS
-------------------
uri
the uri from which to download the key
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent', defaults to 'present'
name
a name for this key, used when testing if it is already installed.
Defaults to __object_id
EXAMPLES
--------
.. code-block:: sh
__apt_key_uri rabbitmq \
--name 'RabbitMQ Release Signing Key <info@rabbitmq.com>' \
--uri http://www.rabbitmq.com/rabbitmq-signing-key-public.asc \
--state present
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2011-2014 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,39 @@
cdist-type__apt_norecommends(7)
===============================
Configure apt to not install recommended packages
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Configure apt to not install any recommended or suggested packages.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
None.
EXAMPLES
--------
.. code-block:: sh
__apt_norecommends
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2014 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,47 @@
cdist-type__apt_ppa(7)
======================
Manage ppa repositories
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This cdist type allows manage ubuntu ppa repositories.
REQUIRED PARAMETERS
-------------------
state
The state the ppa should be in, either 'present' or 'absent'.
Defaults to 'present'
OPTIONAL PARAMETERS
-------------------
None.
EXAMPLES
--------
.. code-block:: sh
# Enable a ppa repository
__apt_ppa ppa:sans-intern/missing-bits
# same as
__apt_ppa ppa:sans-intern/missing-bits --state present
# Disable a ppa repository
__apt_ppa ppa:sans-intern/missing-bits --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2011-2014 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,66 @@
cdist-type__apt_source(7)
=========================
Manage apt sources
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This cdist type allows you to manage apt sources.
REQUIRED PARAMETERS
-------------------
uri
the uri to the apt repository
OPTIONAL PARAMETERS
-------------------
arch
set this if you need to force and specific arch (ubuntu specific)
state
'present' or 'absent', defaults to 'present'
distribution
the distribution codename to use. Defaults to DISTRIB_CODENAME from
the targets /etc/lsb-release
component
space delimited list of components to enable. Defaults to an empty string.
BOOLEAN PARAMETERS
------------------
include-src
include deb-src entries
EXAMPLES
--------
.. code-block:: sh
__apt_source rabbitmq \
--uri http://www.rabbitmq.com/debian/ \
--distribution testing \
--component main \
--include-src \
--state present
__apt_source canonical_partner \
--uri http://archive.canonical.com/ \
--component partner --state present
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2011-2014 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,38 @@
cdist-type__apt_update_index(7)
===============================
Update apt's package index
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This cdist type runs apt-get update whenever any apt sources have changed.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
None.
EXAMPLES
--------
.. code-block:: sh
__apt_update_index
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
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).

View file

@ -0,0 +1,79 @@
cdist-type__block(7)
====================
Manage blocks of text in files
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Manage a block of text in an existing file.
The block is identified using the prefix and suffix parameters.
Everything between prefix and suffix is considered to be a managed block
of text.
REQUIRED PARAMETERS
-------------------
text
the text to manage.
If text is '-' (dash), take what was written to stdin as the text.
OPTIONAL PARAMETERS
-------------------
file
the file in which to manage the text block.
Defaults to object_id.
prefix
the prefix to add before the text.
Defaults to #cdist:__block/$__object_id
suffix
the suffix to add after the text.
Defaults to #/cdist:__block/$__object_id
state
'present' or 'absent', defaults to 'present'
MESSAGES
--------
add
block was added
update
block was updated/changed
remove
block was removed
EXAMPLES
--------
.. code-block:: sh
# text from argument
__block /path/to/file \
--prefix '#start' \
--suffix '#end' \
--text 'some\nblock of\ntext'
# text from stdin
__block some-id \
--file /path/to/file \
--text - << DONE
here some block
of text
DONE
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2013 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,63 @@
cdist-type__ccollect_source(7)
==============================
Manage ccollect sources
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to create or delete ccollect sources.
REQUIRED PARAMETERS
-------------------
source
The source from which to backup
destination
The destination directory
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent', defaults to 'present'
ccollectconf
The CCOLLECT_CONF directory. Defaults to /etc/ccollect.
OPTIONAL MULTIPLE PARAMETERS
----------------------------
exclude
Paths to exclude of backup
BOOLEAN PARAMETERS
------------------
verbose
Whether to report backup verbosely
EXAMPLES
--------
.. code-block:: sh
__ccollect_source doc.ungleich.ch \
--source doc.ungleich.ch:/ \
--destination /backup/doc.ungleich.ch \
--exclude '/proc/*' --exclude '/sys/*' \
--verbose
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- ccollect(1)
- http://www.nico.schottelius.org/software/ccollect/
COPYING
-------
Copyright \(C) 2014 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,60 @@
cdist-type__cdist(7)
====================
Manage cdist installations
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to easily setup cdist
on another box, to allow the other box to configure
systems.
This type is *NOT* required by target hosts.
It is only helpful to build FROM which you configure
other hosts.
This type will use git to clone
REQUIRED PARAMETERS
-------------------
OPTIONAL PARAMETERS
-------------------
username
Select the user to create for the cdist installation.
Defaults to "cdist".
source
Select the source from which to clone cdist from.
Defaults to "git://github.com/telmich/cdist.git".
branch
Select the branch to checkout from.
Defaults to "master".
EXAMPLES
--------
.. code-block:: sh
# Install cdist for user cdist in her home as subfolder cdist
__cdist /home/cdist/cdist
# Use alternative source
__cdist --source "git://git.schottelius.org/cdist" /home/cdist/cdist
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2013 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,52 @@
cdist-type__cdistmarker(7)
==========================
Add a timestamped cdist marker.
Daniel Maher <phrawzty+cdist--@--gmail.com>
DESCRIPTION
-----------
This type is used to add a common marker file which indicates that a given
machine is being managed by cdist. The contents of this file consist of a
timestamp, which can be used to determine the most recent time at which cdist
was run against the machine in question.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
destination
The path and filename of the marker.
Default: /etc/cdist-configured
format
The format of the timestamp. This is passed directly to system 'date'.
Default: -u
EXAMPLES
--------
.. code-block:: sh
# Creates the marker as normal.
__cdistmarker
# Creates the marker differently.
__cdistmarker --destination /tmp/cdist_marker --format '+%s'
SEE ALSO
--------
- `cdist-type(7) <cdisty-type.html>`_
COPYING
-------
Copyright \(C) 2011 Daniel Maher. Free use of this software is granted under
the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,57 @@
cdist-type__config_file(7)
==========================
Manages config files
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Deploy config files using the file type.
Run the given code if the files changes.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
group
see cdist-type__file
mode
see cdist-type__file
onchange
the code to run if the file changes
owner
see cdist-type__file
source
Path to the config file.
If source is '-' (dash), take what was written to stdin as the config file content.
state
see cdist-type__file
EXAMPLES
--------
.. code-block:: sh
__config_file /etc/consul/conf.d/watch_foo.json \
--owner root --group consul --mode 640 \
--source "$__type/files/watch_foo.json" \
--state present \
--onchange 'service consul status >/dev/null && service consul reload || true'
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__file(7) <cdist-type__file.html>`_
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,51 @@
cdist-type__consul(7)
=====================
Install consul
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Downloads and installs the consul binary from https://dl.bintray.com/mitchellh/consul.
Note that the consul binary is downloaded on the server (the machine running
cdist) and then deployed to the target host using the __file type.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
state
either 'present' or 'absent'. Defaults to 'present'
version
which version of consul to install. See ./files/versions for a list of
supported versions. Defaults to the latest known version.
EXAMPLES
--------
.. code-block:: sh
# just install using defaults
__consul
# specific version
__consul \
--version 0.4.1
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,174 @@
cdist-type__consul_agent(7)
===========================
Manage the consul agent
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Configure and manage the consul agent.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
acl-datacenter
only used by servers. This designates the datacenter which is authoritative
for ACL information.
acl-default-policy
either "allow" or "deny"; defaults to "allow". The default policy controls the
behavior of a token when there is no matching rule.
acl-down-policy
either "allow", "deny" or "extend-cache"; "extend-cache" is the default.
acl-master-token
only used for servers in the acl_datacenter. This token will be created with
management-level permissions if it does not exist. It allows operators to
bootstrap the ACL system with a token ID that is well-known.
acl-token
when provided, the agent will use this token when making requests to the
Consul servers.
acl-ttl
used to control Time-To-Live caching of ACLs.
bind-addr
sets the bind address for cluster communication
bootstrap-expect
sets server to expect bootstrap mode
ca-file-source
path to a PEM encoded certificate authority file which will be uploaded and
configure using the ca_file config option.
cert-file-source
path to a PEM encoded certificate file which will be uploaded and
configure using the cert_file config option.
client-addr
sets the address to bind for client access
datacenter
datacenter of the agent
encrypt
provides the gossip encryption key
group
the primary group for the agent
json-config
path to a partial json config file without leading { and trailing }.
If json-config is '-' (dash), take what was written to stdin as the file content.
key-file-source
path to a PEM encoded private key file which will be uploaded and
configure using the key_file config option.
node-name
name of this node. Must be unique in the cluster
retry-join
address to attempt joining every retry_interval until at least one join works.
Can be specified multiple times.
user
the user to run the agent as
state
if the agent is 'present' or 'absent'. Defaults to 'present'.
Currently state=absent is not working due to some dependency issues.
BOOLEAN PARAMETERS
------------------
disable-remote-exec
disables support for remote execution. When set to true, the agent will ignore any incoming remote exec requests.
disable-update-check
disables automatic checking for security bulletins and new version releases
leave-on-terminate
gracefully leave cluster on SIGTERM
rejoin-after-leave
rejoin the cluster using the previous state after leaving
server
used to control if an agent is in server or client mode
syslog
enables logging to syslog
verify-incoming
enforce the use of TLS and verify a client's authenticity on incomming connections
verify-outgoing
enforce the use of TLS and verify the peers authenticity on outgoing connections
EXAMPLES
--------
.. code-block:: sh
# configure as server, bootstrap and rejoin
hostname="$(cat "$__global/explorer/hostname")"
__consul_agent \
--datacenter dc1 \
--node-name "${hostname%%.*}" \
--disable-update-check \
--server \
--rejoin-after-leave \
--bootstrap-expect 3 \
--retry-join consul-01 \
--retry-join consul-02 \
--retry-join consul-03
# configure as server, bootstrap and rejoin with ssl support
hostname="$(cat "$__global/explorer/hostname")"
__consul_agent \
--datacenter dc1 \
--node-name "${hostname%%.*}" \
--disable-update-check \
--server \
--rejoin-after-leave \
--bootstrap-expect 3 \
--retry-join consul-01 \
--retry-join consul-02 \
--retry-join consul-03 \
--ca-file-source /path/to/ca.pem \
--cert-file-source /path/to/cert.pem \
--key-file-source /path/to/key.pem \
--verify-incoming \
--verify-outgoing
# configure as client and try joining existing cluster
__consul_agent \
--datacenter dc1 \
--node-name "${hostname%%.*}" \
--disable-update-check \
--retry-join consul-01 \
--retry-join consul-02 \
--retry-join consul-03
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- http://www.consul.io/docs/agent/options.html
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,71 @@
cdist-type__consul_check(7)
=============================
Manages consul checks
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Generate and deploy check definitions for a consul agent.
See http://www.consul.io/docs/agent/checks.html for parameter documentation.
Use either script toghether with interval, or use ttl.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
interval
the interval in which the script given with --script should be run
script
the shell command to run every --interval
ttl
how long a check is considered healthy without being updated through the
HTTP interfave
id
Defaults to --name
name
The name of this check. Defaults to __object_id
notes
human readable description
state
if this check is 'present' or 'absent'. Defaults to 'present'.
EXAMPLES
--------
.. code-block:: sh
__consul_check redis \
--script /usr/local/bin/check_redis.py \
--interval 10s
__consul_check some-object-id \
--id web-app \
--name "Web App Status" \
--notes "Web app does a curl internally every 10 seconds" \
--ttl 30s
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__consul_agent(7) <cdist-type__consul_agent.html>`_
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,39 @@
cdist-type__consul_reload(7)
============================
Reload consul
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Reload consul after configuration changes.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
None.
EXAMPLES
--------
.. code-block:: sh
__consul_reload
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,75 @@
cdist-type__consul_service(7)
=============================
Manages consul services
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Generate and deploy service definitions for a consul agent.
See http://www.consul.io/docs/agent/services.html for parameter documentation.
Use either script together with interval, or use ttl.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
check-interval
the interval in which the script given with --check-script should be run
check-script
the shell command to run every --check-interval
check-ttl
how long a service is considered healthy without being updated through the
HTTP interfave
id
Defaults to --name
name
The name of this service. Defaults to __object_id
port
the port at which this service can be reached
state
if this service is 'present' or 'absent'. Defaults to 'present'.
tag
a tag to add to this service. Can be specified multiple times.
EXAMPLES
--------
.. code-block:: sh
__consul_service redis \
--tag master \
--tag production \
--port 8000 \
--check-script /usr/local/bin/check_redis.py \
--check-interval 10s
__consul_service webapp \
--port 80 \
--check-ttl 10s
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__consul_agent(7) <cdist-type__consul_agent.html>`_
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,134 @@
cdist-type__consul_template(7)
==============================
Manage the consul-template service
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Downloads and installs the consul-template binary from
https://github.com/hashicorp/consul-template/releases/download/.
Generates a global config file and creates directory for per template config files.
Note that the consul-template binary is downloaded on the server (the machine running
cdist) and then deployed to the target host using the __file type.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
auth-username
specify a username for basic authentication.
auth-password
specify a password for basic authentication.
batch-size
the size of the batch when polling multiple dependencies.
consul
the location of the Consul instance to query (may be an IP address or FQDN) with port.
Defaults to 'localhost:8500'.
log-level
The log level for output. This applies to the stdout/stderr logging as well
as syslog logging (if enabled). Valid values are "debug", "info", "warn",
and "err". The default value is "warn".
max-stale
the maximum staleness of a query. If specified, Consul will distribute work among all
servers instead of just the leader.
retry
the amount of time to wait if Consul returns an error when communicating
with the API.
state
either 'present' or 'absent'. Defaults to 'present'
ssl-cert
Path to an SSL client certificate to use to authenticate to the consul server.
Useful if the consul server "verify_incoming" option is set.
ssl-ca-cert
Path to a CA certificate file, containing one or more CA certificates to
use to validate the certificate sent by the consul server to us. This is a
handy alternative to setting --ssl-no-verify if you are using your own CA.
syslog-facility
The facility to use when sending to syslog. This requires the use of --syslog.
The default value is LOCAL0.
token
the Consul API token.
vault-address
the location of the Vault instance to query (may be an IP address or FQDN) with port.
vault-token
the Vault API token.
vault-ssl-cert
Path to an SSL client certificate to use to authenticate to the vault server.
vault-ssl-ca-cert
Path to a CA certificate file, containing one or more CA certificates to
use to validate the certificate sent by the vault server to us.
version
which version of consul-template to install. See ./files/versions for a list of
supported versions. Defaults to the latest known version.
wait
the minimum(:maximum) to wait before rendering a new template to disk and
triggering a command, separated by a colon (:). If the optional maximum
value is omitted, it is assumed to be 4x the required minimum value.
BOOLEAN PARAMETERS
------------------
ssl
use HTTPS while talking to Consul. Requires the Consul server to be configured to serve secure connections.
ssl-no-verify
ignore certificate warnings. Only used if ssl is enabled.
syslog
Send log output to syslog (in addition to stdout and stderr).
vault-ssl
use HTTPS while talking to Vault. Requires the Vault server to be configured to serve secure connections.
vault-ssl-no-verify
ignore certificate warnings. Only used if vault is enabled.
EXAMPLES
--------
.. code-block:: sh
__consul_template \
--consul consul.service.consul:8500 \
--retry 30s
# specific version
__consul_template \
--version 0.6.5 \
--retry 30s
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- https://github.com/hashicorp/consul-template
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,69 @@
cdist-type__consul_template_template(7)
=======================================
Manage consul-template templates
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Generate and deploy template definitions for a consul-template.
See https://github.com/hashicorp/consul-template#examples for documentation.
Templates are written in the Go template format.
Either the --source or the --source-file parameter must be given.
REQUIRED PARAMETERS
-------------------
destination
the destination where the generated file should go.
OPTIONAL PARAMETERS
-------------------
command
an optional command to run after rendering the template to its destination.
source
path to the template source. Conflicts --source-file.
source-file
path to a local file which is uploaded using the __file type and configured
as the source.
If source is '-' (dash), take what was written to stdin as the file content.
Conflicts --source.
state
if this template is 'present' or 'absent'. Defaults to 'present'.
EXAMPLES
--------
.. code-block:: sh
# configure template on the target
__consul_template_template nginx \
--source /etc/my-consul-templates/nginx.ctmpl \
--destination /etc/nginx/nginx.conf \
--command 'service nginx restart'
# upload a local file to the target and configure it
__consul_template_template nginx \
--source-file "$__manifest/files/nginx.ctmpl" \
--destination /etc/nginx/nginx.conf \
--command 'service nginx restart'
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__consul_template(7) <cdist-type__consul_template.html>`_
- `cdist-type__consul_template_config(7) <cdist-type__consul_template_config.html>`_
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,65 @@
cdist-type__consul_watch_checks(7)
==================================
Manages consul checks watches
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Generate and deploy watch definitions of type 'checks' for a consul agent.
See http://www.consul.io/docs/agent/watches.html for parameter documentation.
REQUIRED PARAMETERS
-------------------
handler
the handler to invoke when the data view updates
OPTIONAL PARAMETERS
-------------------
datacenter
can be provided to override the agent's default datacenter
filter-service
filter to a specific service. Conflicts with --filter-state.
filter-state
filter to a specific state. Conflicts with --filter-service.
state
if this watch is 'present' or 'absent'. Defaults to 'present'.
token
can be provided to override the agent's default ACL token
EXAMPLES
--------
.. code-block:: sh
__consul_watch_checks some-id \
--handler /usr/bin/my-handler.sh
__consul_watch_checks some-id \
--filter-service consul \
--handler /usr/bin/my-handler.sh
__consul_watch_checks some-id \
--filter-state passing \
--handler /usr/bin/my-handler.sh
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__consul_agent(7) <cdist-type__consul_agent.html>`_
- http://www.consul.io/docs/agent/watches.html
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,58 @@
cdist-type__consul_watch_event(7)
=================================
Manages consul event watches
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Generate and deploy watch definitions of type 'event' for a consul agent.
See http://www.consul.io/docs/agent/watches.html for parameter documentation.
REQUIRED PARAMETERS
-------------------
handler
the handler to invoke when the data view updates
OPTIONAL PARAMETERS
-------------------
datacenter
can be provided to override the agent's default datacenter
name
restrict the watch to only events with the given name
state
if this watch is 'present' or 'absent'. Defaults to 'present'.
token
can be provided to override the agent's default ACL token
EXAMPLES
--------
.. code-block:: sh
__consul_watch_event some-id \
--handler /usr/bin/my-handler.sh
__consul_watch_event some-id \
--name web-deploy \
--handler /usr/bin/my-handler.sh
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__consul_agent(7) <cdist-type__consul_agent.html>`_
- http://www.consul.io/docs/agent/watches.html
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,55 @@
cdist-type__consul_watch_key(7)
===============================
Manages consul key watches
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Generate and deploy watch definitions of type 'key' for a consul agent.
See http://www.consul.io/docs/agent/watches.html for parameter documentation.
REQUIRED PARAMETERS
-------------------
handler
the handler to invoke when the data view updates
key
the key to watch for changes
OPTIONAL PARAMETERS
-------------------
datacenter
can be provided to override the agent's default datacenter
state
if this watch is 'present' or 'absent'. Defaults to 'present'.
token
can be provided to override the agent's default ACL token
EXAMPLES
--------
.. code-block:: sh
__consul_watch_key some-id \
--key foo/bar/baz \
--handler /usr/bin/my-key-handler.sh
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__consul_agent(7) <cdist-type__consul_agent.html>`_
- http://www.consul.io/docs/agent/watches.html
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,55 @@
cdist-type__consul_watch_keyprefix(7)
=====================================
Manages consul keyprefix watches
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Generate and deploy watch definitions of type 'keyprefix' for a consul agent.
See http://www.consul.io/docs/agent/watches.html for parameter documentation.
REQUIRED PARAMETERS
-------------------
handler
the handler to invoke when the data view updates
prefix
the prefix of keys to watch for changes
OPTIONAL PARAMETERS
-------------------
datacenter
can be provided to override the agent's default datacenter
state
if this watch is 'present' or 'absent'. Defaults to 'present'.
token
can be provided to override the agent's default ACL token
EXAMPLES
--------
.. code-block:: sh
__consul_watch_keyprefix some-id \
--prefix foo/ \
--handler /usr/bin/my-prefix-handler.sh
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__consul_agent(7) <cdist-type__consul_agent.html>`_
- http://www.consul.io/docs/agent/watches.html
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,51 @@
cdist-type__consul_watch_nodes(7)
=================================
Manages consul nodes watches
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Generate and deploy watch definitions of type 'nodes' for a consul agent.
See http://www.consul.io/docs/agent/watches.html for parameter documentation.
REQUIRED PARAMETERS
-------------------
handler
the handler to invoke when the data view updates
OPTIONAL PARAMETERS
-------------------
datacenter
can be provided to override the agent's default datacenter
state
if this watch is 'present' or 'absent'. Defaults to 'present'.
token
can be provided to override the agent's default ACL token
EXAMPLES
--------
.. code-block:: sh
__consul_watch_nodes some-id \
--handler /usr/bin/my-key-handler.sh
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__consul_agent(7) <cdist-type__consul_agent.html>`_
- http://www.consul.io/docs/agent/watches.html
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,75 @@
cdist-type__consul_watch_service(7)
===================================
Manages consul service watches
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Generate and deploy watch definitions of type 'service' for a consul agent.
See http://www.consul.io/docs/agent/watches.html for parameter documentation.
REQUIRED PARAMETERS
-------------------
handler
the handler to invoke when the data view updates
service
the service to watch for changes
OPTIONAL PARAMETERS
-------------------
datacenter
can be provided to override the agent's default datacenter
state
if this watch is 'present' or 'absent'. Defaults to 'present'.
token
can be provided to override the agent's default ACL token
tag
filter by tag
BOOLEAN PARAMETERS
------------------
passingonly
specifies if only hosts passing all checks are displayed
EXAMPLES
--------
.. code-block:: sh
__consul_watch_service some-id \
--service consul \
--handler /usr/bin/my-handler.sh
__consul_watch_service some-id \
--service redis \
--tag production \
--handler /usr/bin/my-handler.sh
__consul_watch_service some-id \
--service redis \
--tag production \
--passingonly \
--handler /usr/bin/my-handler.sh
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__consul_agent(7) <cdist-type__consul_agent.html>`_
- http://www.consul.io/docs/agent/watches.html
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,51 @@
cdist-type__consul_watch_services(7)
====================================
Manages consul services watches
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Generate and deploy watch definitions of type 'services' for a consul agent.
See http://www.consul.io/docs/agent/watches.html for parameter documentation.
REQUIRED PARAMETERS
-------------------
handler
the handler to invoke when the data view updates
OPTIONAL PARAMETERS
-------------------
datacenter
can be provided to override the agent's default datacenter
state
if this watch is 'present' or 'absent'. Defaults to 'present'.
token
can be provided to override the agent's default ACL token
EXAMPLES
--------
.. code-block:: sh
__consul_watch_services some-id \
--handler /usr/bin/my-key-handler.sh
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__consul_agent(7) <cdist-type__consul_agent.html>`_
- http://www.consul.io/docs/agent/watches.html
COPYING
-------
Copyright \(C) 2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,77 @@
cdist-type__cron(7)
===================
Installs and manages cron jobs
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This cdist type allows you to manage entries in a users crontab.
REQUIRED PARAMETERS
-------------------
user
The user who's crontab is edited
command
The command to run.
OPTIONAL PARAMETERS
-------------------
state
Either present or absent. Defaults to present.
minute
See crontab(5). Defaults to *
hour
See crontab(5). Defaults to *
day_of_month
See crontab(5). Defaults to *
month
See crontab(5). Defaults to *
day_of_week
See crontab(5). Defaults to *
raw
Take whatever the user has given instead of time and date fields.
If given, all other time and date fields are ignored.
Can for example be used to specify cron EXTENSIONS like reboot, yearly etc.
See crontab(5) for the extensions if any that your cron implementation
implements.
raw_command
Take whatever the user has given in the command and ignore everything else.
If given, the command will be added to crontab.
Can for example be used to define variables like SHELL or MAILTO.
EXAMPLES
--------
.. code-block:: sh
# run Monday to Saturday at 23:15
__cron some-id --user root --command "/path/to/script" \
--hour 23 --minute 15 --day_of_week 1-6
# run on reboot
__cron some-id --user root --command "/path/to/script" \
--raw @reboot
# remove cronjob
__cron some-id --user root --command "/path/to/script" --state absent
# define default shell
__cron some-id --user root --raw_command --command "SHELL=/bin/bash" \
--state present
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- crontab(5)
COPYING
-------
Copyright \(C) 2011-2013 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,47 @@
cdist-type__debconf_set_selections(7)
=====================================
Setup debconf selections
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
On Debian and alike systems debconf-set-selections(1) can be used
to setup configuration parameters.
REQUIRED PARAMETERS
-------------------
file
Use the given filename as input for debconf-set-selections(1)
If filename is "-", read from stdin.
EXAMPLES
--------
.. code-block:: sh
# Setup configuration for nslcd
__debconf_set_selections nslcd --file /path/to/file
# Setup configuration for nslcd from another type
__debconf_set_selections nslcd --file "$__type/files/preseed/nslcd"
__debconf_set_selections nslcd --file - << eof
gitolite gitolite/gituser string git
eof
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__update_alternatives(7) <cdist-type__update_alternatives.html>`_
- debconf-set-selections(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).

View file

@ -0,0 +1,98 @@
cdist-type__directory(7)
========================
Manage a directory
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to create or remove directories on the target.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent', defaults to 'present'
group
Group to chgrp to.
mode
Unix permissions, suitable for chmod.
owner
User to chown to.
BOOLEAN PARAMETERS
------------------
parents
Whether to create parents as well (mkdir -p behaviour).
Warning: all intermediate directory permissions default
to whatever mkdir -p does.
Usually this means root:root, 0700.
recursive
If supplied the chgrp and chown call will run recursively.
This does *not* influence the behaviour of chmod.
MESSAGES
--------
chgrp <group>
Changed group membership
chown <owner>
Changed owner
chmod <mode>
Changed mode
create
Empty directory was created
remove
Directory exists, but state is absent, directory will be removed by generated code.
remove non directory
Something other than a directory with the same name exists and was removed prior to create.
EXAMPLES
--------
.. code-block:: sh
# A silly example
__directory /tmp/foobar
# Remove a directory
__directory /tmp/foobar --state absent
# Ensure /etc exists correctly
__directory /etc --owner root --group root --mode 0755
# Create nfs service directory, including parents
__directory /home/services/nfs --parents
# Change permissions recursively
__directory /home/services --recursive --owner root --group root
# Setup a temp directory
__directory /local --mode 1777
# Take it all
__directory /home/services/kvm --recursive --parents \
--owner root --group root --mode 0755 --state present
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2011 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,53 @@
cdist-type__dog_vdi(7)
======================
Manage Sheepdog VM images
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
The dog program is used to create images for sheepdog
to be used in qemu.
OPTIONAL PARAMETERS
-------------------
state
Either "present" or "absent", defaults to "present"
size
Size of the image in "dog vdi" compatible units.
Required if state is "present".
EXAMPLES
--------
.. code-block:: sh
# Create a 50G size image
__dog_vdi nico-privat.sky.ungleich.ch --size 50G
# Create a 50G size image (more explicit)
__dog_vdi nico-privat.sky.ungleich.ch --size 50G --state present
# Remove image
__dog_vdi nico-privat.sky.ungleich.ch --state absent
# Remove image - keeping --size is ok
__dog_vdi nico-privat.sky.ungleich.ch --size 50G --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- dog(8)
- qemu(1)
COPYING
-------
Copyright \(C) 2014 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,109 @@
cdist-type__file(7)
===================
Manage files.
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to create files, remove files and set file
attributes on the target.
If the file already exists on the target, then if it is a:
regular file, and state is:
present
replace it with the source file if they are not equal
exists
do nothing
symlink
replace it with the source file
directory
replace it with the source file
In any case, make sure that the file attributes are as specified.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
state
'present', 'absent' or 'exists', defaults to 'present' where:
present
the file is exactly the one from source
absent
the file does not exist
exists
the file from source but only if it doesn't already exist
group
Group to chgrp to.
mode
Unix permissions, suitable for chmod.
owner
User to chown to.
source
If supplied, copy this file from the host running cdist to the target.
If not supplied, an empty file or directory will be created.
If source is '-' (dash), take what was written to stdin as the file content.
MESSAGES
--------
chgrp <group>
Changed group membership
chown <owner>
Changed owner
chmod <mode>
Changed mode
create
Empty file was created (no --source specified)
remove
File exists, but state is absent, file will be removed by generated code.
upload
File was uploaded
EXAMPLES
--------
.. code-block:: sh
# Create /etc/cdist-configured as an empty file
__file /etc/cdist-configured
# The same thing
__file /etc/cdist-configured --state present
# Use __file from another type
__file /etc/issue --source "$__type/files/archlinux" --state present
# Delete existing file
__file /etc/cdist-configured --state absent
# Supply some more settings
__file /etc/shadow --source "$__type/files/shadow" \
--owner root --group shadow --mode 0640 \
--state present
# Provide a default file, but let the user change it
__file /home/frodo/.bashrc --source "/etc/skel/.bashrc" \
--state exists \
--owner frodo --mode 0600
# Take file content from stdin
__file /tmp/whatever --owner root --group root --mode 644 --source - << DONE
Here goes the content for /tmp/whatever
DONE
SEE ALSO
--------
* `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2011-2013 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,75 @@
cdist-type__firewalld_rule(7)
=============================
Configure firewalld rules
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to manage rules in firewalld
using the *direct* way (i.e. no zone support).
REQUIRED PARAMETERS
-------------------
rule
The rule to apply. Essentially an firewalld command
line without firewalld in front of it.
protocol
Either ipv4, ipv4 or eb. See firewall-cmd(1)
table
The table to use (like filter or nat). See firewall-cmd(1).
chain
The chain to use (like INPUT_direct or FORWARD_direct). See firewall-cmd(1).
priority
The priority to use (0 is topmost). See firewall-cmd(1).
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent', defaults to 'present'
EXAMPLES
--------
.. code-block:: sh
# Allow acces from entrance.place4.ungleich.ch
__firewalld_rule entrance \
--protocol ipv4 \
--table filter \
--chain INPUT_direct \
--priority 0 \
--rule '-s entrance.place4.ungleich.ch -j ACCEPT'
# Allow forwarding of traffic from br0
__firewalld_rule vm-forward --protocol ipv4 \
--table filter \
--chain FORWARD_direct \
--priority 0 \
--rule '-i br0 -j ACCEPT'
# Ensure old rule is absent - warning, the rule part must stay the same!
__firewalld_rule vm-forward
--protocol ipv4 \
--table filter \
--chain FORWARD_direct \
--priority 0 \
--rule '-i br0 -j ACCEPT' \
--state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__iptables_rule(7) <cdist-type__iptables_rule.html>`_
- firewalld(8)
COPYING
-------
Copyright \(C) 2015 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,57 @@
cdist-type__git(7)
==================
Get and or keep git repositories up-to-date
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to clone git repositories
REQUIRED PARAMETERS
-------------------
source
Specifies the git remote to clone from
OPTIONAL PARAMETERS
-------------------
state
Either "present" or "absent", defaults to "present"
branch
Create this branch by checking out the remote branch of this name
Default branch is "master"
group
Group to chgrp to.
mode
Unix permissions, suitable for chmod.
owner
User to chown to.
EXAMPLES
--------
.. code-block:: sh
__git /home/services/dokuwiki --source git://github.com/splitbrain/dokuwiki.git
# Checkout cdist, stay on branch 2.1
__git /home/nico/cdist --source git://github.com/telmich/cdist.git --branch 2.1
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,77 @@
cdist-type__group(7)
====================
Manage groups
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This cdist type allows you to create or modify groups on the target.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
state
absent or present, defaults to present
gid
see groupmod(8)
password
see above
BOOLEAN PARAMETERS
------------------
system
see groupadd(8), apply only on group creation
MESSAGES
--------
mod
group is modified
add
New group added
remove
group is removed
change <property> <new_value> <current_value>
Changed group property from current_value to new_value
set <property> <new_value>
set property to new value, property was not set before
EXAMPLES
--------
.. code-block:: sh
# Create a group 'foobar' with operating system default settings
__group foobar
# Remove the 'foobar' group
__group foobar --state absent
# Create a system group 'myservice' with operating system default settings
__group myservice --system
# Same but with a specific gid
__group foobar --gid 1234
# Same but with a gid and password
__group foobar --gid 1234 --password 'crypted-password-string'
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2011-2015 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,49 @@
cdist-type__hostname(7)
=======================
Set the hostname
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Set's the hostname on various operating systems.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
name
The hostname to set. Defaults to the first segment of __target_host
(${__target_host%%.*})
MESSAGES
--------
changed
Changed the hostname
EXAMPLES
--------
.. code-block:: sh
# take hostname from __target_host
__hostname
# set hostname explicitly
__hostname --name some-static-hostname
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2012 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,39 @@
cdist-type__iptables_apply(7)
=============================
Apply the rules
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type deploys an init script that triggers
the configured rules and also re-applies them on
configuration.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
None
EXAMPLES
--------
None (__iptables_apply is used by __iptables_rule)
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__iptables_rule(7) <cdist-type__iptables_rule.html>`_
- iptables(8)
COPYING
-------
Copyright \(C) 2013 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,60 @@
cdist-type__iptables_rule(7)
============================
Deploy iptable rulesets
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to manage iptable rules
in a distribution independent manner.
REQUIRED PARAMETERS
-------------------
rule
The rule to apply. Essentially an iptables command
line without iptables in front of it.
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent', defaults to 'present'
EXAMPLES
--------
.. code-block:: sh
# Deploy some policies
__iptables_rule policy-in --rule "-P INPUT DROP"
__iptables_rule policy-out --rule "-P OUTPUT ACCEPT"
__iptables_rule policy-fwd --rule "-P FORWARD DROP"
# The usual established rule
__iptables_rule established --rule "-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT"
# Some service rules
__iptables_rule http --rule "-A INPUT -p tcp --dport 80 -j ACCEPT"
__iptables_rule ssh --rule "-A INPUT -p tcp --dport 22 -j ACCEPT"
__iptables_rule https --rule "-A INPUT -p tcp --dport 443 -j ACCEPT"
# Ensure some rules are not present anymore
__iptables_rule munin --rule "-A INPUT -p tcp --dport 4949 -j ACCEPT" \
--state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__iptables_apply(7) <cdist-type__iptables_apply.html>`_
- iptables(8)
COPYING
-------
Copyright \(C) 2013 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,44 @@
cdist-type__issue(7)
====================
Manage issue
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to easily setup /etc/issue.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
source
If supplied, use this file as /etc/issue instead of default.
EXAMPLES
--------
.. code-block:: sh
__issue
# When called from another type
__issue --source "$__type/files/myfancyissue"
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2011 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,116 @@
cdist-type__jail(7)
===================
Manage FreeBSD jails
Jake Guffey <jake.guffey--@--eprotex.com>
DESCRIPTION
-----------
This type is used on FreeBSD to manage jails.
REQUIRED PARAMETERS
-------------------
state
Either "present" or "absent", defaults to "present".
jailbase
The location of the .tgz archive containing the base fs for your jails.
OPTIONAL PARAMETERS
-------------------
name
The name of the jail. Default is to use the object_id as the jail name.
ip
The ifconfig style IP/netmask combination to use for the jail guest. If
the state parameter is "present," this parameter is required.
hostname
The FQDN to use for the jail guest. Defaults to the name parameter.
interface
The name of the physical interface on the jail server to bind the jail to.
Defaults to the first interface found in the output of ifconfig -l.
devfs-ruleset
The name of the devfs ruleset to associate with the jail. Defaults to
"jailrules." This ruleset must be copied to the server via another type.
To use this option, devfs-enable must be "true."
jaildir
The location on the remote server to use for hosting jail filesystems.
Defaults to /usr/jail.
BOOLEAN PARAMETERS
------------------
stopped
Do not start the jail
devfs-disable
Whether to disallow devfs mounting within the jail
onboot
Whether to add the jail to rc.conf's jail_list variable.
CAVEATS
-------
This type does not currently support modification of jail options. If, for
example a jail needs to have its IP address or netmask changed, the jail must
be removed then re-added with the correct IP address/netmask or the appropriate
line (jail_<name>_ip="...") modified within rc.conf through some alternate
means.
MESSAGES
--------
start
The jail was started
stop
The jail was stopped
create:
The jail was created
delete
The jail was deleted
onboot
The jail was configured to start on boot
EXAMPLES
--------
.. code-block:: sh
# Create a jail called www
__jail www --state present --ip "192.168.1.2" --jailbase /my/jail/base.tgz
# Remove the jail called www
__jail www --state absent --jailbase /my/jail/base.tgz
# The jail www should not be started
__jail www --state present --stopped \
--ip "192.168.1.2 netmask 255.255.255.0" \
--jailbase /my/jail/base.tgz
# Use the name variable explicitly
__jail thisjail --state present --name www \
--ip "192.168.1.2" \
--jailbase /my/jail/base.tgz
# Go nuts
__jail lotsofoptions --state present --name testjail \
--ip "192.168.1.100 netmask 255.255.255.0" \
--hostname "testjail.example.com" --interface "em0" \
--onboot --jailbase /my/jail/base.tgz --jaildir /jails
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2012 Jake Guffey. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,91 @@
cdist-type__key_value(7)
========================
Change property values in files
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This cdist type allows you to change values in a key value based config
file.
REQUIRED PARAMETERS
-------------------
file
The file to operate on.
delimiter
The delimiter which separates the key from the value.
OPTIONAL PARAMETERS
-------------------
state
present or absent, defaults to present. If present, sets the key to value,
if absent, removes the key from the file.
key
The key to change. Defaults to object_id.
value
The value for the key. Optional if state=absent, required otherwise.
comment
If supplied, the value will be inserted before the line with the key,
but only if the key or value must be changed.
You need to ensure yourself that the line is prefixed with the correct
comment sign. (for example # or ; or wathever ..)
BOOLEAN PARAMETERS
------------------
exact_delimiter
If supplied, treat additional whitespaces between key, delimiter and value
as wrong value.
MESSAGES
--------
remove
Removed existing key and value
insert
Added key and value
change
Changed value of existing key
create
A new line was inserted in a new file
EXAMPLES
--------
.. code-block:: sh
# Set the maximum system user id
__key_value SYS_UID_MAX --file /etc/login.defs --value 666 --delimiter ' '
# Same with fancy id
__key_value my-fancy-id --file /etc/login.defs --key SYS_UID_MAX --value 666 \
--delimiter ' '
# Enable packet forwarding
__key_value net.ipv4.ip_forward --file /etc/sysctl.conf --value 1 \
--delimiter ' = ' --comment '# my linux kernel should act as a router'
# Remove existing key/value
__key_value LEGACY_KEY --file /etc/somefile --state absent --delimiter '='
MORE INFORMATION
----------------
This type try to handle as many values as possible, so it doesn't use regexes.
So you need to exactly specify the key and delimiter. Delimiter can be of any lenght.
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
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).

View file

@ -0,0 +1,70 @@
cdist-type__line(7)
===================
Manage lines in files
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to add lines and remove lines from files.
REQUIRED PARAMETERS
-------------------
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent', defaults to 'present'
line
Specifies the line which should be absent or present
Must be present, if state is present.
Must not be combined with regex, if state is absent.
regex
If state is present, search for this pattern and add
given line, if the given regular expression does not match.
In case of absent, ensure all lines matching the
regular expression are absent.
The regular expression is interpreted by grep.
Must not be combined with line, if state is absent.
file
If supplied, use this as the destination file.
Otherwise the object_id is used.
EXAMPLES
--------
.. code-block:: sh
# Manage the DAEMONS line in rc.conf
__line daemons --file /etc/rc.conf --line 'DAEMONS=(hwclock !network sshd crond postfix)'
# Ensure the home mount is present in /etc/fstab - explicitly make it present
__line home-fstab \
--file /etc/fstab \
--line 'filer.fs:/vol/home /home nfs defaults 0 0' \
--state present
# Removes the line specifiend in "include_www" from the file "lighttpd.conf"
__line legacy_timezone --file /etc/rc.conf --regex 'TIMEZONE=.*' --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- grep(1)
COPYING
-------
Copyright \(C) 2012-2013 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,57 @@
cdist-type__link(7)
===================
Manage links (hard and symbolic)
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to manage hard and symbolic links.
The given object id is the destination for the link.
REQUIRED PARAMETERS
-------------------
source
Specifies the link source.
type
Specifies the link type: Either hard or symoblic.
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent', defaults to 'present'
EXAMPLES
--------
.. code-block:: sh
# Create hard link of /etc/shadow
__link /root/shadow --source /etc/shadow --type hard
# Relative symbolic link
__link /etc/apache2/sites-enabled/www.test.ch \
--source ../sites-available/www.test.ch \
--type symbolic
# Absolute symbolic link
__link /opt/plone --source /home/services/plone --type symbolic
# Remove link
__link /opt/plone --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2011-2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,44 @@
cdist-type__locale(7)
=====================
Configure locales
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to setup locales.
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent', defaults to present
EXAMPLES
--------
.. code-block:: sh
# Add locale de_CH.UTF-8
__locale de_CH.UTF-8
# Same as above, but more explicit
__locale de_CH.UTF-8 --state present
# Remove colourful British English
__locale en_GB.UTF-8 --state absent
SEE ALSO
--------
- locale(1)
- localedef(1)
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2013-2014 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,45 @@
cdist-type__motd(7)
===================
Manage message of the day
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to easily setup /etc/motd.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
source
If supplied, copy this file from the host running cdist to the target.
If not supplied, a default message will be placed onto the target.
EXAMPLES
--------
.. code-block:: sh
# Use cdist defaults
__motd
# Supply source file from a different type
__motd --source "$__type/files/my-motd"
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2011 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,81 @@
cdist-type__mount(7)
====================
Manage filesystem mounts
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Manage filesystem mounts either via /etc/fstab or manually.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
device
device to mount at path, defaults to 'none'. see mount(8)
dump
value for the dump field in fstab. see fstab(5)
defaults to 0.
This parameter is ignored, if the nofstab parameter is given.
options
comma separated string of options, see mount(8)
pass
value for the pass field in fstab. see fstab(5)
defaults to 0.
This parameter is ignored, if the nofstab parameter is given.
path
mount point where to mount the device, see mount(8).
Defaults to __object_id
state
either present or absent. Defaults to present.
type
vfstype, see mount(8)
BOOLEAN PARAMETERS
------------------
nofstab
do not manage an entry in /etc/fstab
EXAMPLES
--------
.. code-block:: sh
__mount /some/dir \
--device /dev/sdc3 \
--type xfs \
--options "defaults,ro"
--dump 0 \
--pass 1
__mount /var/lib/one \
--device mfsmount \
--type fuse \
--options "mfsmaster=mfsmaster.domain.tld,mfssubfolder=/one,nonempty,_netdev"
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2014 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,46 @@
cdist-type__mysql_database(7)
=============================
Manage a MySQL database
Benedikt Koeppel <code@benediktkoeppel.ch>
DESCRIPTION
-----------
This cdist type allows you to install a MySQL database.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
name
The name of the database to install
defaults to the object id
user
A user that should have access to the database
password
The password for the user who manages the database
EXAMPLES
--------
.. code-block:: sh
__mysql_database "cdist" --name "cdist" --user "myuser" --password "mypwd"
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2012 Benedikt Koeppel. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,61 @@
cdist-type__package(7)
======================
Manage packages
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This cdist type allows you to install or uninstall packages on the target.
It dispatches the actual work to the package system dependent types.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
The name of the package to install. Default is to use the object_id as the
package name.
version
The version of the package to install. Default is to install the version
chosen by the local package manager.
type
The package type to use. Default is determined based on the $os explorer
variable.
e.g.
* __package_apt for Debian
* __package_emerge for Gentoo
state
Either "present" or "absent", defaults to "present"
EXAMPLES
--------
.. code-block:: sh
# Install the package vim on the target
__package vim --state present
# Same but install specific version
__package vim --state present --version 7.3.50
# Force use of a specific package type
__package vim --state present --type __package_apt
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
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).

View file

@ -0,0 +1,55 @@
cdist-type__package_apt(7)
==========================
Manage packages with apt-get
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
apt-get is usually used on Debian and variants (like Ubuntu) to
manage packages.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
state
Either "present" or "absent", defaults to "present"
target-release
Passed on to apt-get install, see apt-get(8).
Essentially allows you to retrieve packages from a different release
EXAMPLES
--------
.. code-block:: sh
# Ensure zsh in installed
__package_apt zsh --state present
# In case you only want *a* webserver, but don't care which one
__package_apt webserver --state present --name nginx
# Remove obsolete package
__package_apt puppet --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2011-2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,57 @@
cdist-type__package_emerge(7)
=============================
Manage packages with portage
Thomas Oettli <otho--@--sfs.biz>
DESCRIPTION
-----------
Portage is usually used on the gentoo distribution to manage packages.
This type requires app-portage/gentoolkit installed on the target host.
cdist-type__package_emerge_dependencies is supposed to install the needed
packages on the target host.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
state
Either "present" or "absent", defaults to "present".
version
If supplied, use to install or uninstall a specific version of the package named.
EXAMPLES
--------
.. code-block:: sh
# Ensure sys-devel/gcc is installed
__package_emerge sys-devel/gcc --state present
# If you want a specific version of a package
__package_emerge app-portage/gentoolkit --state present --version 0.3.0.8-r2
# Remove package
__package_emerge sys-devel/gcc --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
- `cdist-type__package_emerge_dependencies(7) <cdist-type__package_emerge_dependencies.html>`_
COPYING
-------
Copyright \(C) 2013 Thomas Oettli. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,46 @@
cdist-type__package_emerge_dependencies(7)
==========================================
Install dependencies for __package_emerge
Thomas Oettli <otho--@--sfs.biz>
DESCRIPTION
-----------
Portage is usually used on the gentoo distribution to manage packages.
This type installs the following tools which are required by __package_emerge to work:
* app-portage/flaggie
* app-portage/gentoolkit
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
None
EXAMPLES
--------
.. code-block:: sh
# Ensure app-portage/flaggie and app-portage/gentoolkit are installed
__package_emerge_dependencies
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
- `cdist-type__package_emerge(7) <cdist-type__package_emerge.html>`_
COPYING
-------
Copyright \(C) 2013 Thomas Oettli. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,48 @@
cdist-type__package_luarocks(7)
===============================
Manage luarocks packages
Christian G. Warden <cwarden@xerus.org>
DESCRIPTION
-----------
LuaRocks is a deployment and management system for Lua modules.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
state
Either "present" or "absent", defaults to "present"
EXAMPLES
--------
.. code-block:: sh
# Ensure luasocket is installed
__package_luarocks luasocket --state present
# Remove package
__package_luarocks luasocket --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2012 SwellPath, Inc. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,48 @@
cdist-type__package_opkg(7)
===========================
Manage packages with opkg
Giel van Schijndel <giel+cdist--@--mortis.eu>
DESCRIPTION
-----------
opkg is usually used on OpenWRT to manage packages.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
state
Either "present" or "absent", defaults to "present"
EXAMPLES
--------
.. code-block:: sh
# Ensure lsof is installed
__package_opkg lsof --state present
# Remove obsolete package
__package_opkg dnsmasq --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2012 Giel van Schijndel. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,51 @@
cdist-type__package_pacman(7)
=============================
Manage packages with pacman
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
Pacman is usually used on the Archlinux distribution to manage packages.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
state
Either "present" or "absent", defaults to "present"
EXAMPLES
--------
.. code-block:: sh
# Ensure zsh in installed
__package_pacman zsh --state present
# If you don't want to follow pythonX packages, but always use python
__package_pacman python --state present --name python2
# Remove obsolete package
__package_pacman puppet --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2011-2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,58 @@
cdist-type__package_pip(7)
==========================
Manage packages with pip
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
Pip is used in Python environments to install packages.
It is also included in the python virtualenv environment.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
pip
Instead of using pip from PATH, use the specific pip path.
state
Either "present" or "absent", defaults to "present"
runas
Run pip as specified user. By default it runs as root.
EXAMPLES
--------
.. code-block:: sh
# Install a package
__package_pip pyro --state present
# Use pip in a virtualenv located at /root/shinken_virtualenv
__package_pip pyro --state present --pip /root/shinken_virtualenv/bin/pip
# Use pip in a virtualenv located at /foo/shinken_virtualenv as user foo
__package_pip pyro --state present --pip /foo/shinken_virtualenv/bin/pip --runas foo
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,63 @@
cdist-type__package_pkg_freebsd(7)
==================================
Manage FreeBSD packages
Jake Guffey <jake.guffey--@--eprotex.com>
DESCRIPTION
-----------
This type is usually used on FreeBSD to manage packages.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
flavor
If supplied, use to avoid ambiguity.
version
If supplied, use to install a specific version of the package named.
pkgsite
If supplied, use to install from a specific package repository.
state
Either "present" or "absent", defaults to "present"
EXAMPLES
--------
.. code-block:: sh
# Ensure zsh is installed
__package_pkg_freebsd zsh --state present
# Ensure vim is installed, use flavor no_x11
__package_pkg_freebsd vim --state present --flavor no_x11
# If you don't want to follow pythonX packages, but always use python
__package_pkg_freebsd python --state present --name python2
# Remove obsolete package
__package_pkg_freebsd puppet --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2012 Jake Guffey. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,63 @@
cdist-type__package_pkg(7)
==========================
Manage OpenBSD packages
Andi Brönnimann <andi-cdist--@--v-net.ch>
DESCRIPTION
-----------
This type is usually used on OpenBSD to manage packages.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
flavor
If supplied, use to avoid ambiguity.
state
Either "present" or "absent", defaults to "present"
pkg_path
Manually specify a PKG_PATH to add packages from.
EXAMPLES
--------
.. code-block:: sh
# Ensure zsh is installed
__package_pkg_openbsd zsh --state present
# Ensure vim is installed, use flavor no_x11
__package_pkg_openbsd vim --state present --flavor no_x11
# If you don't want to follow pythonX packages, but always use python
__package_pkg_openbsd python --state present --name python2
# Remove obsolete package
__package_pkg_openbsd puppet --state absent
# Add a package using a particular mirror
__package_pkg_openbsd bash \
--pkg_path http://openbsd.mirrorcatalogs.com/snapshots/packages/amd64
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2011 Andi Brönnimann. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,94 @@
cdist-type__package_pkgng_freebsd(7)
====================================
Manage FreeBSD packages with pkg-ng
Jake Guffey <jake.guffey--@--eprotex.com>
DESCRIPTION
-----------
This type is usually used on FreeBSD to manage packages.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
flavor
If supplied, use to avoid ambiguity.
version
If supplied, use to install a specific version of the package named.
repo
If supplied, use to install the package named from a particular repo.
state
Either "present" or "absent", defaults to "present"
BOOLEAN PARAMETERS
------------------
upgrade
If supplied, allow upgrading to the latest version of a package.
CAVEATS
-------
This type requires that repository definitions already exist in /etc/pkg/\*.conf.
Ensure that they exist prior to use of this type with __file.
pkg-ng can't upgrade a package to a specific version. If this type needs to
upgrade a package, it can only ugprade to the latest available version. If the
"upgrade" parameter is not given and an upgrade needs to occur, an error will result.
MESSAGES
--------
install
The package was installed
remove
The package was removed
upgrade
The package was upgraded
exist
The package was already present and thus not installed
EXAMPLES
--------
.. code-block:: sh
# Ensure zsh is installed
__package_pkgng_freebsd zsh --state present
# Ensure vim is installed, use flavor no_x11
__package_pkgng_freebsd vim --state present --flavor no_x11
# If you don't want to follow pythonX packages, but always use python
__package_pkgng_freebsd python --state present --name python2
# Install a package from a particular repository when multiples exist
__package_pkgng_freebsd bash --state present --repo myrepo
# Remove obsolete package
__package_pkgng_freebsd puppet --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2014 Jake Guffey. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,48 @@
cdist-type__package_rubygem(7)
==============================
Manage rubygem packages
Chase Allen James <nx-cdist@nu-ex.com>
DESCRIPTION
-----------
Rubygems is the default package management system for the Ruby programming language.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
state
Either "present" or "absent", defaults to "present"
EXAMPLES
--------
.. code-block:: sh
# Ensure sinatra is installed
__package_rubygem sinatra --state present
# Remove package
__package_rubygem rails --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2011 Chase Allen James. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,50 @@
cdist-type__package_update_index(7)
===================================
Update the package index
Ricardo Catalinas Jiménez <jimenezrick--@--gmail.com>
DESCRIPTION
-----------
This cdist type allows you to update the package index on the target.
It will automatically use the appropriate package manager.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
type
The package manager to use. Default is determined based on the $os
explorer variable.
e.g.
* apt for Debian
* yum for Red Hat
* pacman for Arch Linux
EXAMPLES
--------
.. code-block:: sh
# Update the package index on the target
__package_update_index
# Force use of a specific package manager
__package_update_index --type apt
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2014 Ricardo Catalinas Jiménez. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,50 @@
cdist-type__package_upgrade_all(7)
==================================
Upgrade all the installed packages
Ricardo Catalinas Jiménez <jimenezrick--@--gmail.com>
DESCRIPTION
-----------
This cdist type allows you to upgrade all the installed packages on the
target. It will automatically use the appropriate package manager.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
type
The package manager to use. Default is determined based on the $os
explorer variable.
e.g.
* apt for Debian
* yum for Red Hat
* pacman for Arch Linux
EXAMPLES
--------
.. code-block:: sh
# Upgrade all the installed packages on the target
__package_upgrade_all
# Force use of a specific package manager
__package_upgrade_all --type apt
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2014 Ricardo Catalinas Jiménez. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,58 @@
cdist-type__package_yum(7)
==========================
Manage packages with yum
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
Yum is usually used on the Fedora distribution to manage packages.
If you specify an unknown package, yum will display the
slightly confusing error message "Error: Nothing to do".
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
state
Either "present" or "absent", defaults to "present"
url
URL to use for the package
EXAMPLES
--------
.. code-block:: sh
# Ensure zsh in installed
__package_yum zsh --state present
# If you don't want to follow pythonX packages, but always use python
__package_yum python --state present --name python2
# Remove obsolete package
__package_yum puppet --state absent
__package epel-release-6-8 \
--url http://mirror.switch.ch/ftp/mirror/epel/6/i386/epel-release-6-8.noarch.rpm
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2011-2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,66 @@
cdist-type__package_zypper(7)
=============================
Manage packages with zypper
Daniel Heule <hda--@--sfs.biz>
DESCRIPTION
-----------
Zypper is usually used on the SuSE distribution to manage packages.
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
name
If supplied, use the name and not the object id as the package name.
state
Either "present" or "absent", defaults to "present"
version
The version of the package to install. Default is to install the version
chosen by the local package manager. For a list of available versions,
have a look at the output of "zypper se -s packagename"
ptype
Either "package", "patch", "pattern", "product" or "srcpackage", defaults to "package". For a description see man zypper.
EXAMPLES
--------
.. code-block:: sh
# Ensure zsh is installed
__package_zypper zsh --state present
# If you don't want to follow pythonX packages, but always use python
__package_zypper python --state present --name python2
# Ensure binutils is installed and the version is forced to be 2.23.1-0.19.2
__package_zypper binutils --state present --version 2.23.1-0.19.2
# Remove package
__package_zypper cfengine --state absent
# install all packages which belongs to pattern x11
__package_zypper x11 --ptype pattern --state present
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__package(7) <cdist-type__package.html>`_
COPYING
-------
Copyright \(C) 2012 Nico Schottelius.
Copyright \(C) 2013 Daniel Heule.
Free use of this software is granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,68 @@
cdist-type__pacman_conf(7)
==========================
Manage pacman configuration
Dominique Roux <dominique.roux4@gmail.com>
DESCRIPTION
-----------
The type allows you to configure options section, add or delete repositories and manage mirrorlists
REQUIRED PARAMETERS
-------------------
section
'options' for configure options section
Otherwise it specifies a repository or a plain file
key
Specifies the key which will be set
If section = 'options' or file is not set the key will
be checked against available keys from pacman.conf
value
Specifies the value which will be set against the key
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent', defaults to 'present'
file
Specifies the filename.
The managed file will be named like 'plain_file_filename'
If supplied the key will not be checked.
EXAMPLES
--------
.. code-block:: sh
# Manage options section in pacman.conf
__pacman_conf options_Architecture --section options --key Architecture --value auto
# Add new repository
__pacman_conf localrepo_Server --section localrepo --key Server --value "file:///var/cache/pacman/pkg"
# Add mirror to a mirrorlist
__pacman_conf customlist_Server --file customlist --section customlist --key Server\
--value "file:///var/cache/pacman/pkg"
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- grep(1)
COPYING
-------
Copyright \(C) 2015 Dominique Roux. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,44 @@
cdist-type__pacman_conf_integrate(7)
====================================
Integrate default pacman.conf to cdist conform and vice versa
Dominique Roux <dominique.roux4@gmail.com>
DESCRIPTION
-----------
The type allows you to convert the default pacman.conf to a cdist conform one and vice versa
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
state
'present' or 'absent', defaults to 'present'
EXAMPLES
--------
.. code-block:: sh
# Convert normal to cdist conform
__pacman_conf_integrate convert
# Convert cdist conform to normal
__pacman_conf_integrate convert --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- grep(1)
COPYING
-------
Copyright \(C) 2015 Dominique Roux. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,53 @@
cdist-type__pf_apply(7)
=======================
Apply pf(4) ruleset on \*BSD
Jake Guffey <jake.guffey--@--eprotex.com>
NAME
----
DESCRIPTION
-----------
This type is used on \*BSD systems to manage the pf firewall's active ruleset.
REQUIRED PARAMETERS
-------------------
NONE
OPTIONAL PARAMETERS
-------------------
NONE
EXAMPLES
--------
.. code-block:: sh
# Modify the ruleset on $__target_host:
__pf_ruleset --state present --source /my/pf/ruleset.conf
require="__pf_ruleset" \
__pf_apply
# Remove the ruleset on $__target_host (implies disabling pf(4):
__pf_ruleset --state absent
require="__pf_ruleset" \
__pf_apply
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__pf_ruleset(7) <cdist-type__pf_ruleset.html>`_
- pf(4)
COPYING
-------
Copyright \(C) 2012 Jake Guffey. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,48 @@
cdist-type__pf_ruleset(7)
=========================
Copy a pf(4) ruleset to $__target_host
Jake Guffey <jake.guffey--@--eprotex.com>
DESCRIPTION
-----------
This type is used on \*BSD systems to manage the pf firewall's ruleset.
REQUIRED PARAMETERS
-------------------
state
Either "absent" (no ruleset at all) or "present", defaults to "present".
OPTIONAL PARAMETERS
-------------------
source
If supplied, use to define the ruleset to load onto the $__target_host for pf(4).
Note that this type is almost useless without a ruleset defined, but it's technically not
needed, e.g. for the case of disabling the firewall temporarily.
EXAMPLES
--------
.. code-block:: sh
# Remove the current ruleset in place
__pf_ruleset --state absent
# Enable the firewall with the ruleset defined in $__manifest/files/pf.conf
__pf_ruleset --state present --source $__manifest/files/pf.conf
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- pf(4)
COPYING
-------
Copyright \(C) 2012 Jake Guffey. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,39 @@
cdist-type__postfix(7)
======================
Install postfix
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This space intentionally left blank.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
None.
EXAMPLES
--------
.. code-block:: sh
__postfix
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2012 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,78 @@
cdist-type__postfix_master(7)
=============================
Configure postfix master.cf
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
See master(5) for more information.
REQUIRED PARAMETERS
-------------------
type
See master(5)
command
See master(5)
BOOLEAN PARAMETERS
------------------
noreload
don't reload postfix after changes
OPTIONAL PARAMETERS
-------------------
state
present or absent, defaults to present
service
private
unpriv
chroot
wakeup
maxproc
option
Pass an option to a service. Same as using -o in master.cf.
Can be specified multiple times.
comment
a textual comment to add with the master.cf entry
EXAMPLES
--------
.. code-block:: sh
__postfix_master smtp --type inet --command smtpd
__postfix_master smtp --type inet --chroot y --command smtpd \
--option smtpd_enforce_tls=yes \
--option smtpd_sasl_auth_enable=yes \
--option smtpd_client_restrictions=permit_sasl_authenticated,reject
__postfix_master submission --type inet --command smtpd \
--comment "Run alternative smtp on submission port"
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- master(5)
COPYING
-------
Copyright \(C) 2012 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,47 @@
cdist-type__postfix_postconf(7)
===============================
Configure postfix main.cf
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
See postconf(5) for possible keys and values.
Note that this type directly runs the postconf executable.
It does not make changes to /etc/postfix/main.cf itself.
REQUIRED PARAMETERS
-------------------
value
the value for the postfix parameter
OPTIONAL PARAMETERS
-------------------
key
the name of the parameter. Defaults to __object_id
EXAMPLES
--------
.. code-block:: sh
__postfix_postconf mydomain --value somedomain.com
__postfix_postconf bind-to-special-ip --key smtp_bind_address --value 127.0.0.5
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- postconf(5)
COPYING
-------
Copyright \(C) 2012 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,39 @@
cdist-type__postfix_postmap(7)
==============================
Run postmap on the given file
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This space intentionally left blank.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
None.
EXAMPLES
--------
.. code-block:: sh
__postfix_postmap /etc/postfix/generic
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2012 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,39 @@
cdist-type__postfix_reload(7)
=============================
Tell postfix to reload its configuration
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This space intentionally left blank.
REQUIRED PARAMETERS
-------------------
None.
OPTIONAL PARAMETERS
-------------------
None.
EXAMPLES
--------
.. code-block:: sh
__postfix_reload
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2012 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,39 @@
cdist-type__postgres_database(7)
================================
Create/drop postgres databases
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This cdist type allows you to create or drop postgres databases.
OPTIONAL PARAMETERS
-------------------
state
either 'present' or 'absent', defaults to 'present'.
owner
the role owning this database
EXAMPLES
--------
.. code-block:: sh
__postgres_database mydbname --owner mydbusername
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__postgres_role(7) <cdist-type__postgres_role.html>`_
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).

View file

@ -0,0 +1,58 @@
cdist-type__postgres_role(7)
============================
Manage postgres roles
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
This cdist type allows you to create or drop postgres roles.
OPTIONAL PARAMETERS
-------------------
state
Either "present" or "absent", defaults to "present"
All other parameters map directly to the corresponding postgres createrole
parameters.
password
BOOLEAN PARAMETERS
------------------
All parameter map directly to the corresponding postgres createrole
parameters.
login
createdb
createrole
superuser
inherit
EXAMPLES
--------
.. code-block:: sh
__postgres_role myrole
__postgres_role myrole --password 'secret'
__postgres_role admin --password 'very-secret' --superuser
__postgres_role dbcustomer --password 'bla' --createdb
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__postgres_database(7) <cdist-type__postgres_database.html>`_
- http://www.postgresql.org/docs/current/static/sql-createrole.html
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).

View file

@ -0,0 +1,67 @@
cdist-type__process(7)
======================
Start or stop process
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to define the state of a process.
OPTIONAL PARAMETERS
-------------------
state
Either "present" or "absent", defaults to "present"
name
Process name to match on when using pgrep -f -x.
This is useful, if the name starts with a "/",
because the leading slash is stripped away from
the object id by cdist.
stop
Executable to use for stopping the process.
start
Executable to use for starting the process.
EXAMPLES
--------
.. code-block:: sh
# Start if not running
__process /usr/sbin/syslog-ng --state present
# Start if not running with a different binary
__process /usr/sbin/nginx --state present --start "/etc/rc.d/nginx start"
# Stop the process using kill (the type default) - DO NOT USE THIS
__process /usr/sbin/sshd --state absent
# Stop the process using /etc/rc.d/sshd stop - THIS ONE NOT AS WELL
__process /usr/sbin/sshd --state absent --stop "/etc/rc.d/sshd stop"
# Ensure cups is running, which runs with -C ...:
__process cups --start "/etc/rc.d/cups start" --state present \
--name "/usr/sbin/cupsd -C /etc/cups/cupsd.conf"
# Ensure rpc.statd is running (which usually runs with -L) using a regexp
__process rpcstatd --state present --start "/etc/init.d/statd start" \
--name "rpc.statd.*"
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__start_on_boot(7) <cdist-type__start_on_boot.html>`_
COPYING
-------
Copyright \(C) 2011-2012 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,78 @@
cdist-type__pyvenv(7)
=====================
Create or remove python virtual environment
Darko Poljak <darko.poljak--@--gmail.com>
DESCRIPTION
-----------
This cdist type allows you to create or remove python virtual
environment using pyvenv.
It assumes pyvenv is already installed. Concrete package depends
on concrete OS and/or OS version/distribution.
Ensure this for e.g. in your init manifest as in the following example:
.. code-block sh
case "$__target_host" in
localhost)
__package python3-venv --state present
require="__package/python3-venv" __pyvenv /home/darko/testenv --pyvenv "pyvenv-3.4" --owner darko --group darko --mode 740 --state present
require="__pyvenv/home/darko/testenv" __package_pip docopt --pip /home/darko/testenv/bin/pip --runas darko --state present
;;
esac
REQUIRED PARAMETERS
-------------------
None
OPTIONAL PARAMETERS
-------------------
state
Either "present" or "absent", defaults to "present"
group
Group to chgrp to
mode
Unix permissions, suitable for chmod
owner
User to chown to
pyvenv
Use this specific pyvenv
venvparams
Specific parameters to pass to pyvenv invocation
EXAMPLES
--------
.. code-block:: sh
__pyvenv /home/services/djangoenv
# Use specific pyvenv
__pyvenv /home/foo/fooenv --pyvenv /usr/local/bin/pyvenv-3.4
# Create python virtualenv for user foo.
__pyvenv /home/foo/fooenv --group foo --user foo
# Create python virtualenv with specific parameters.
__pyvenv /home/services/djangoenv --venvparams "--copies --system-site-packages"
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2016 Darko Poljak. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,46 @@
cdist-type__qemu_img(7)
=======================
Manage VM disk images
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
The qemu-img program is used to create qemu images for
qemu and (qemu-)kvm.
OPTIONAL PARAMETERS
-------------------
state
Either "present" or "absent", defaults to "present"
size
Size of the image in qemu-img compatible units.
Required if state is "present".
EXAMPLES
--------
.. code-block:: sh
# Create a 50G size image
__qemu_img /home/services/kvm/vm/myvmname/system-disk --size 50G
# Remove image
__qemu_img /home/services/kvm/vm/myoldvm/system-disk --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- qemu-img(1)
COPYING
-------
Copyright \(C) 2012-2014 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,46 @@
cdist-type__rbenv(7)
====================
Manage rbenv installation
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
This cdist type allows you to manage rbenv installations.
It also installs ruby-build.
OPTIONAL PARAMETERS
-------------------
state
Either "present" or "absent", defaults to "present"
owner
Which user should own the rbenv installation, defaults to root
EXAMPLES
--------
.. code-block:: sh
# Install rbenv including ruby-build for nico
__rbenv /home/nico
# Install rbenv including ruby-build for nico
__rbenv /home/nico --owner nico
# Bastian does not need rbenv anymore, he began to code C99
__rbenv /home/bastian --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
COPYING
-------
Copyright \(C) 2012-2014 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,107 @@
cdist-type__rsync(7)
====================
Mirror directories using rsync
Nico Schottelius <nico-cdist--@--schottelius.org>
DESCRIPTION
-----------
WARNING: This type is of BETA quality:
- it has not been tested widely
- interfaces *may* change
- if there is a better approach to solve the problem -> the type may even vanish
If you are fine with these constraints, please read on.
This cdist type allows you to mirror local directories to the
target host using rsync. Rsync will be installed in the manifest of the type.
If group or owner are giveng, a recursive chown will be executed on the
target host.
A slash will be appended to the source directory so that only the contents
of the directory are taken and not the directory name itself.
REQUIRED PARAMETERS
-------------------
source
Where to take files from
OPTIONAL PARAMETERS
-------------------
group
Group to chgrp to.
owner
User to chown to.
destination
Use this as the base destination instead of the object id
remote-user
Use this user instead of the default "root" for rsync operations.
OPTIONAL MULTIPLE PARAMETERS
----------------------------
rsync-opts
Use this option to give rsync options with.
See rsync(1) for available options.
Only "--" options are supported.
Write the options without the beginning "--"
Can be specified multiple times.
MESSAGES
--------
NONE
EXAMPLES
--------
.. code-block:: sh
# You can use any source directory
__rsync /tmp/testdir \
--source /etc
# Use source from type
__rsync /etc \
--source "$__type/files/package"
# Allow multiple __rsync objects to write to the same dir
__rsync mystuff \
--destination /usr/local/bin \
--source "$__type/files/package"
__rsync otherstuff \
--destination /usr/local/bin \
--source "$__type/files/package2"
# Use rsync option --exclude
__rsync /tmp/testdir \
--source /etc \
--rsync-opts exclude=sshd_conf
# Use rsync with multiple options --exclude --dry-run
__rsync /tmp/testing \
--source /home/tester \
--rsync-opts exclude=id_rsa \
--rsync-opts dry-run
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- rsync(1)
COPYING
-------
Copyright \(C) 2015 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,42 @@
cdist-type__rvm(7)
==================
Install rvm for a given user
Evax Software <contact@evax.fr>
DESCRIPTION
-----------
RVM is the Ruby enVironment Manager for the Ruby programming language.
REQUIRED PARAMETERS
-------------------
state
Either "present" or "absent", defaults to "present".
EXAMPLES
--------
.. code-block:: sh
# Install rvm for user billie
__rvm billie --state present
# Remove rvm
__rvm billie --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__rvm_ruby(7) <cdist-type__rvm_ruby.html>`_
- `cdist-type__rvm_gemset(7) <cdist-type__rvm_gemset.html>`_
- `cdist-type__rvm_gem(7) <cdist-type__rvm_gem.html>`_
COPYING
-------
Copyright \(C) 2012 Evax Software. Free use of this software is granted under
the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,54 @@
cdist-type__rvm_gemset(7)
==========================
Manage Ruby gems through rvm
Evax Software <contact@evax.fr>
DESCRIPTION
-----------
RVM is the Ruby enVironment Manager for the Ruby programming language.
REQUIRED PARAMETERS
-------------------
user
The remote user account to use
gemset
The gemset to use
state
Either "present" or "absent", defaults to "present".
OPTIONAL PARAMETERS
-------------------
default
Make the selected gemset the default
EXAMPLES
--------
.. code-block:: sh
# Install the rails gem in gemset ruby-1.9.3-p0@myset for user bill
__rvm_gemset rails --gemset ruby-1.9.3-p0@myset --user bill --state present
# Do the same and also make ruby-1.9.3-p0@myset the default gemset
__rvm_gemset rails --gemset ruby-1.9.3-p0@myset --user bill \
--state present --default
# Remove it
__rvm_ruby rails --gemset ruby-1.9.3-p0@myset --user bill --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__rvm(7) <cdist-type__rvm.html>`_
- `cdist-type__rvm_ruby(7) <cdist-type__rvm_ruby.html>`_
- `cdist-type__rvm_gemset(7) <cdist-type__rvm_gemset.html>`_
COPYING
-------
Copyright \(C) 2012 Evax Software. Free use of this software is granted under
the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,52 @@
cdist-type__rvm_gemset(7)
==========================
Manage gemsets through rvm
Evax Software <contact@evax.fr>
DESCRIPTION
-----------
RVM is the Ruby enVironment Manager for the Ruby programming language.
REQUIRED PARAMETERS
-------------------
user
The remote user account to use
state
Either "present" or "absent", defaults to "present".
BOOLEAN PARAMETERS
-------------------
default
If present, set the given gemset as default.
EXAMPLES
--------
.. code-block:: sh
# Install the gemset @myset for user charles on based on ruby-1.9.3-0
__rvm_gemset ruby-1.9.3-p0@myset --user charles --state present
# Do the same and make ruby-1.9.3-p0@myset the default gemset
__rvm_gemset ruby-1.9.3-p0@myset --user charles --state present --default
# Remove the gemset @myset for user john
__rvm_ruby ruby-1.9.3-p0@myset --user john --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__rvm(7) <cdist-type__rvm.html>`_
- `cdist-type__rvm_ruby(7) <cdist-type__rvm_ruby.html>`_
- `cdist-type__rvm_gem(7) <cdist-type__rvm_gem.html>`_
COPYING
-------
Copyright \(C) 2012 Evax Software. Free use of this software is granted under
the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,53 @@
cdist-type__rvm_ruby(7)
=======================
Manage ruby installations through rvm
Evax Software <contact@evax.fr>
DESCRIPTION
-----------
RVM is the Ruby enVironment Manager for the Ruby programming language.
REQUIRED PARAMETERS
-------------------
user
The remote user account to use
state
Either "present" or "absent", defaults to "present".
BOOLEAN PARAMETERS
------------------
default
Set the given version as default
EXAMPLES
--------
.. code-block:: sh
# Install ruby 1.9.3 through rvm for user thelonious
__rvm_ruby ruby-1.9.3-p0 --user thelonious --state present
# Install ruby 1.9.3 through rvm for user ornette and make it the default
__rvm_ruby ruby-1.9.3-p0 --user ornette --state present --default
# Remove ruby 1.9.3 for user john
__rvm_ruby ruby-1.9.3-p0 --user john --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__rvm(7) <cdist-type__rvm.html>`_
- `cdist-type__rvm_gemset(7) <cdist-type__rvm_gemset.html>`_
- `cdist-type__rvm_gem(7) <cdist-type__rvm_gem.html>`_
COPYING
-------
Copyright \(C) 2012 Evax Software. Free use of this software is granted under
the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,64 @@
cdist-type__ssh_authorized_key(7)
=================================
Manage a single ssh authorized key entry
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Manage a single authorized key entry in an authorized_key file.
This type was created to be used by the __ssh_authorized_keys type.
REQUIRED PARAMETERS
-------------------
file
the authorized_keys file to which the given key should be added
key
a string containing the ssh keytype, base 64 encoded key and optional
trailing comment which shall be added to the given authorized_keys file.
OPTIONAL PARAMETERS
-------------------
comment
explicit comment instead of the one which may be trailing the given key
option
an option to set for this authorized_key entry.
Can be specified multiple times.
See sshd(8) for available options.
state
if the given keys should be 'present' or 'absent', defaults to 'present'.
EXAMPLES
--------
.. code-block:: sh
__ssh_authorized_key some-id \
--file "/home/user/.ssh/autorized_keys" \
--key "$(cat ~/.ssh/id_rsa.pub)"
__ssh_authorized_key some-id \
--file "/home/user/.ssh/autorized_keys" \
--key "$(cat ~/.ssh/id_rsa.pub)" \
--option 'command="/path/to/script"' \
--option 'environment="FOO=bar"' \
--comment 'one to rule them all'
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist__ssh_authorized_keys(7) <cdist__ssh_authorized_keys.html>`_
- sshd(8)
COPYING
-------
Copyright \(C) 2014 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,114 @@
cdist-type__ssh_authorized_keys(7)
==================================
Manage ssh authorized_keys files
Steven Armstrong <steven-cdist--@--armstrong.cc>
DESCRIPTION
-----------
Adds or removes ssh keys from a authorized_keys file.
This type uses the __ssh_dot_ssh type to manage the directory containing
the authorized_keys file. You can disable this feature with the --noparent
boolean parameter.
The existence, ownership and permissions of the authorized_keys file itself are
also managed. This can be disabled with the --nofile boolean parameter. It is
then left to the user to ensure that the file exists and that ownership and
permissions work with ssh.
REQUIRED PARAMETERS
-------------------
key
the ssh key which shall be added to this authorized_keys file.
Must be a string and can be specified multiple times.
OPTIONAL PARAMETERS
-------------------
comment
explicit comment instead of the one which may be trailing the given key
file
an alternative destination file, defaults to ~$owner/.ssh/authorized_keys
option
an option to set for all created authorized_key entries.
Can be specified multiple times.
See sshd(8) for available options.
owner
the user owning the authorized_keys file, defaults to object_id.
state
if the given keys should be 'present' or 'absent', defaults to 'present'.
BOOLEAN PARAMETERS
------------------
noparent
don't create or change ownership and permissions of the directory containing
the authorized_keys file
nofile
don't manage existence, ownership and permissions of the the authorized_keys
file
EXAMPLES
--------
.. code-block:: sh
# add your ssh key to remote root's authorized_keys file
__ssh_authorized_keys root \
--key "$(cat ~/.ssh/id_rsa.pub)"
# allow key to login as user-name
__ssh_authorized_keys user-name \
--key "ssh-rsa AXYZAAB3NzaC1yc2..."
# allow key to login as user-name with options and expicit comment
__ssh_authorized_keys user-name \
--key "ssh-rsa AXYZAAB3NzaC1yc2..." \
--option no-agent-forwarding \
--option 'from="*.example.com"' \
--comment 'backup server'
# same as above, but with explicit owner and two keys
# note that the options are set for all given keys
__ssh_authorized_keys some-fancy-id \
--owner user-name \
--key "ssh-rsa AXYZAAB3NzaC1yc2..." \
--key "ssh-rsa AZXYAAB3NzaC1yc2..." \
--option no-agent-forwarding \
--option 'from="*.example.com"' \
--comment 'backup server'
# authorized_keys file in non standard location
__ssh_authorized_keys some-fancy-id \
--file /etc/ssh/keys/user-name/authorized_keys \
--owner user-name \
--key "ssh-rsa AXYZAAB3NzaC1yc2..."
# same as above, but directory and authorized_keys file is created elswhere
__ssh_authorized_keys some-fancy-id \
--file /etc/ssh/keys/user-name/authorized_keys \
--owner user-name \
--noparent \
--nofile \
--key "ssh-rsa AXYZAAB3NzaC1yc2..."
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- sshd(8)
COPYING
-------
Copyright \(C) 2012-2014 Steven Armstrong. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

View file

@ -0,0 +1,46 @@
cdist-type__ssh_dot_ssh(7)
==========================
Manage .ssh directory
Nico Schottelius <nico-cdist--@--schottelius.org>
NAME
----
DESCRIPTION
-----------
Adds or removes .ssh directory to a user home.
This type is being used by __ssh_authorized_keys.
OPTIONAL PARAMETERS
-------------------
state
if the directory should be 'present' or 'absent', defaults to 'present'.
EXAMPLES
--------
.. code-block:: sh
# Ensure root has ~/.ssh with the right permissions
__ssh_dot_ssh root
# Nico does not need ~/.ssh anymore
__ssh_dot_ssh nico --state absent
SEE ALSO
--------
- `cdist-type(7) <cdist-type.html>`_
- `cdist-type__ssh_authorized_keys(7) <cdist-type__ssh_authorized_keys.html>`_
COPYING
-------
Copyright \(C) 2014 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 (GPLv3).

Some files were not shown because too many files have changed in this diff Show more