forked from ungleich-public/cdist
		
	Restructure and fix and improve docs and manpages.
This commit is contained in:
		
					parent
					
						
							
								a220d4805a
							
						
					
				
			
			
				commit
				
					
						51c94e9e82
					
				
			
		
					 125 changed files with 1799 additions and 816 deletions
				
			
		| 
						 | 
				
			
			@ -9,7 +9,7 @@ BUILDDIR      = _build
 | 
			
		|||
 | 
			
		||||
# User-friendly check for sphinx-build
 | 
			
		||||
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
 | 
			
		||||
    $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don\'t have Sphinx installed, grab it from http://sphinx-doc.org/)
 | 
			
		||||
	$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don\'t have Sphinx installed, grab it from http://sphinx-doc.org/)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# Internal variables.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,14 +1,8 @@
 | 
			
		|||
cdist-best-practice(7)
 | 
			
		||||
======================
 | 
			
		||||
Best practice
 | 
			
		||||
=============
 | 
			
		||||
Practices used in real environments
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-best-practice - Practices used in real environments
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
PASSWORDLESS CONNECTIONS
 | 
			
		||||
Passwordless connections
 | 
			
		||||
------------------------
 | 
			
		||||
It is recommended to run cdist with public key authentication.
 | 
			
		||||
This requires a private/public key pair and the entry
 | 
			
		||||
| 
						 | 
				
			
			@ -16,7 +10,7 @@ This requires a private/public key pair and the entry
 | 
			
		|||
See sshd_config(5) and ssh-keygen(1).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SPEEDING UP SSH CONNECTIONS
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -30,7 +24,7 @@ inclusion into your ~/.ssh/config::
 | 
			
		|||
      ControlPersist 10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SPEEDING UP SHELL EXECUTION
 | 
			
		||||
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::
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +32,7 @@ script execution. Instead, you could use dash after installing it::
 | 
			
		|||
    ln -sf /bin/dash /bin/sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
MULTI MASTER OR ENVIRONMENT SETUPS
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +58,7 @@ you can clone it multiple times::
 | 
			
		|||
    machine-b % git clone git://your-git-server/cdist
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SEPERATING WORK BY GROUPS
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -77,7 +71,7 @@ their manifests. You can use the following snippet in
 | 
			
		|||
    sh -e "$__manifest/cbrg"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
MAINTAINING MULTIPLE CONFIGURATIONS
 | 
			
		||||
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.
 | 
			
		||||
| 
						 | 
				
			
			@ -138,7 +132,7 @@ The following **.git/config** is taken from a a real world scenario::
 | 
			
		|||
Have a look at git-remote(1) to adjust the remote configuration, which allows
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
MULTIPLE DEVELOPERS WITH DIFFERENT TRUST
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -155,7 +149,7 @@ implement this scenario with a gateway host and sudo:
 | 
			
		|||
For more details consult sudoers(5)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TEMPLATING
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -193,7 +187,7 @@ TEMPLATING
 | 
			
		|||
        --source "$__object/files/basic.conf"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TESTING A NEW TYPE
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -214,7 +208,7 @@ of cdist:
 | 
			
		|||
        cdist --initial-manifest - cdist-dev-01.ungleich.ch
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
OTHER CONTENT IN CDIST REPOSITORY
 | 
			
		||||
Other content in cdist repository
 | 
			
		||||
---------------------------------
 | 
			
		||||
Usually the cdist repository contains all configuration
 | 
			
		||||
items. Sometimes you may have additional resources that
 | 
			
		||||
| 
						 | 
				
			
			@ -227,15 +221,3 @@ 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).
 | 
			
		||||
| 
						 | 
				
			
			@ -1,21 +1,11 @@
 | 
			
		|||
cdist-bootstrap(7)
 | 
			
		||||
==================
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-bootstrap - Setup cdist environment
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
INTRODUCTION
 | 
			
		||||
------------
 | 
			
		||||
Bootstrap
 | 
			
		||||
=========
 | 
			
		||||
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.
 | 
			
		||||
`cdist quickstart <cdist-quickstart.html>`_ before digging into this.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LOCATION
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -29,13 +19,13 @@ relies on is recommended, for use as backup as well as to allow easy collaborati
 | 
			
		|||
with others.
 | 
			
		||||
 | 
			
		||||
For more sophisticated setups developing cdist configurations with multiple
 | 
			
		||||
people, have a look at cdist-best-practice(7).
 | 
			
		||||
people, have a look at `cdist best practice <cdist-best-practice.html>`_.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SETUP WORKING DIRECTORY AND BRANCH
 | 
			
		||||
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).
 | 
			
		||||
one of the official urls (see `cdist quickstart <cdist-quickstart.html>`_ if you don't).
 | 
			
		||||
Entering the command "git branch" should show you "* master", which indicates
 | 
			
		||||
you are on the **master** branch.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -85,7 +75,7 @@ In this tutorial I use the branch **mycompany**::
 | 
			
		|||
From now on, you can use git as usual to commit your changes in your own branch.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
PUBLISHING THE CONFIGURATION
 | 
			
		||||
Publishing the configuration
 | 
			
		||||
----------------------------
 | 
			
		||||
Usually a development machine like a notebook should be considered
 | 
			
		||||
temporary only. For this reason and to enable shareability, the configuration
 | 
			
		||||
| 
						 | 
				
			
			@ -114,7 +104,7 @@ 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
 | 
			
		||||
Updating from origin
 | 
			
		||||
--------------------
 | 
			
		||||
Whenever you want to update your cdist installation, you can use git to do so::
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -126,15 +116,3 @@ Whenever you want to update your cdist installation, you can use git to do so::
 | 
			
		|||
 | 
			
		||||
    # 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).
 | 
			
		||||
| 
						 | 
				
			
			@ -1,14 +1,7 @@
 | 
			
		|||
cdist-explorer(7)
 | 
			
		||||
=================
 | 
			
		||||
Explorer
 | 
			
		||||
========
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-explorer - Explore the target systems
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DESCRIPTION
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -39,7 +32,7 @@ error message on stderr, which will cause cdist to abort.
 | 
			
		|||
You can also use stderr for debugging purposes while developing a new
 | 
			
		||||
explorer.
 | 
			
		||||
 | 
			
		||||
EXAMPLES
 | 
			
		||||
Examples
 | 
			
		||||
--------
 | 
			
		||||
A very simple explorer may look like this::
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -59,16 +52,3 @@ A type explorer, which could check for the status of a package may look like thi
 | 
			
		|||
 | 
			
		||||
    # 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).
 | 
			
		||||
							
								
								
									
										48
									
								
								docs/man/cdist-features.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								docs/man/cdist-features.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,48 @@
 | 
			
		|||
Features
 | 
			
		||||
========
 | 
			
		||||
 | 
			
		||||
But cdist ticks differently, here is the feature set that makes it unique:
 | 
			
		||||
 | 
			
		||||
Simplicity
 | 
			
		||||
    There is only one type to extend cdist called **type**
 | 
			
		||||
 | 
			
		||||
Design
 | 
			
		||||
    + Type and core cleanly seperated
 | 
			
		||||
    + Sticks completly to the KISS (keep it simple and stupid) paradigma
 | 
			
		||||
    + Meaningful error messages - do not lose time debugging error messages
 | 
			
		||||
    + Consistency in behaviour, naming and documentation
 | 
			
		||||
    + No surprise factor: Only do what is obviously clear, no magic
 | 
			
		||||
    + Define target state, do not focus on methods or scripts
 | 
			
		||||
    + Push architecture: Instantly apply your changes
 | 
			
		||||
 | 
			
		||||
Small core
 | 
			
		||||
    cdist's core is very small - less code, less bugs
 | 
			
		||||
 | 
			
		||||
Fast development
 | 
			
		||||
    Focus on straightforwardness of type creation is a main development objective
 | 
			
		||||
    Batteries included: A lot of requirements can be solved using standard types
 | 
			
		||||
 | 
			
		||||
Modern Programming Language
 | 
			
		||||
    cdist is written in Python
 | 
			
		||||
 | 
			
		||||
Requirements, Scalability
 | 
			
		||||
    No central server needed, cdist operates in push mode and can be run from any computer
 | 
			
		||||
 | 
			
		||||
Requirements, Scalability, Upgrade
 | 
			
		||||
    cdist only needs to be updated on the master, not on the target hosts
 | 
			
		||||
 | 
			
		||||
Requirements, Security
 | 
			
		||||
    Uses well-know `SSH <http://www.openssh.com/>`_ as transport protocol
 | 
			
		||||
 | 
			
		||||
Requirements, Simplicity
 | 
			
		||||
    Requires only shell and SSH server on the target
 | 
			
		||||
 | 
			
		||||
UNIX
 | 
			
		||||
    Reuse of existing tools like cat, find, mv, ...
 | 
			
		||||
 | 
			
		||||
UNIX, familar environment, documentation
 | 
			
		||||
    Is available as manpages and HTML
 | 
			
		||||
 | 
			
		||||
UNIX, simplicity, familar environment
 | 
			
		||||
    cdist is configured in POSIX shell
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,14 +1,7 @@
 | 
			
		|||
cdist-hacker(7)
 | 
			
		||||
===============
 | 
			
		||||
Hacking
 | 
			
		||||
=======
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-hacker - How to get (stuff) into cdist
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
WELCOME
 | 
			
		||||
Welcome
 | 
			
		||||
-------
 | 
			
		||||
Welcome dear hacker! I invite you to a tour of pointers to
 | 
			
		||||
get into the usable configuration mangament system, cdist.
 | 
			
		||||
| 
						 | 
				
			
			@ -19,14 +12,14 @@ twice before merging or implementing a feature: Less features
 | 
			
		|||
with good usability are far better than the opposite.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
REPORTING BUGS
 | 
			
		||||
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)
 | 
			
		||||
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.
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +27,7 @@ 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
 | 
			
		||||
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.
 | 
			
		||||
| 
						 | 
				
			
			@ -61,9 +54,9 @@ 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
 | 
			
		||||
How to submit a new type
 | 
			
		||||
------------------------
 | 
			
		||||
For detailled information about types, see cdist-type(7).
 | 
			
		||||
For detailled information about types, see `cdist type <cdist-type.html>`_.
 | 
			
		||||
 | 
			
		||||
Submitting a type works as described above, with the additional requirement
 | 
			
		||||
that a corresponding manpage named man.text in asciidoc format with
 | 
			
		||||
| 
						 | 
				
			
			@ -77,9 +70,11 @@ code and thus such a type introduces redundant functionality that is given by
 | 
			
		|||
core cdist already.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXAMPLE GIT WORKFLOW
 | 
			
		||||
Example git workflow
 | 
			
		||||
---------------------
 | 
			
		||||
The following workflow works fine for most developers::
 | 
			
		||||
The following workflow works fine for most developers
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    # get latest upstream master branch
 | 
			
		||||
    git clone https://github.com/telmich/cdist.git
 | 
			
		||||
| 
						 | 
				
			
			@ -125,6 +120,8 @@ The following workflow works fine for most developers::
 | 
			
		|||
If at any point you want to go back to the original master branch, you can
 | 
			
		||||
use **git stash** to stash your changes away::
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    # assume you are on documentation_cleanup
 | 
			
		||||
    git stash
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -136,6 +133,8 @@ use **git stash** to stash your changes away::
 | 
			
		|||
Similar when you want to develop another new feature, you go back
 | 
			
		||||
to the master branch and create another branch based on it::
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    # change to master and update to most recent upstream version
 | 
			
		||||
    git checkout master
 | 
			
		||||
    git fetch -v origin
 | 
			
		||||
| 
						 | 
				
			
			@ -145,17 +144,3 @@ to the master branch and create another branch based on it::
 | 
			
		|||
 | 
			
		||||
(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).
 | 
			
		||||
							
								
								
									
										105
									
								
								docs/man/cdist-install.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								docs/man/cdist-install.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,105 @@
 | 
			
		|||
How to install cdist
 | 
			
		||||
====================
 | 
			
		||||
 | 
			
		||||
Requirements
 | 
			
		||||
-------------
 | 
			
		||||
 | 
			
		||||
Source Host
 | 
			
		||||
~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
This is the machine you use to configure the target hosts.
 | 
			
		||||
 | 
			
		||||
 * /bin/sh: A posix like shell (for instance bash, dash, zsh)
 | 
			
		||||
 * Python >= 3.2
 | 
			
		||||
 * SSH client
 | 
			
		||||
 * sphinx (for building html docs and/or the manpages)
 | 
			
		||||
 | 
			
		||||
Target Hosts
 | 
			
		||||
~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
 * /bin/sh: A posix like shell (for instance bash, dash, zsh)
 | 
			
		||||
 * SSH server
 | 
			
		||||
 | 
			
		||||
Install cdist
 | 
			
		||||
-------------
 | 
			
		||||
 | 
			
		||||
You can install cdist either from git or as a python package.
 | 
			
		||||
 | 
			
		||||
From git
 | 
			
		||||
~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Cloning cdist from git gives you the advantage of having
 | 
			
		||||
a version control in place for development of your own stuff
 | 
			
		||||
immediately.
 | 
			
		||||
 | 
			
		||||
To install cdist, execute the following commands:
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    git clone https://github.com/ungleich/cdist.git
 | 
			
		||||
    cd cdist
 | 
			
		||||
    export PATH=$PATH:$(pwd -P)/bin
 | 
			
		||||
 | 
			
		||||
Available versions in git
 | 
			
		||||
^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
 * The active development takes place in the **master** branch
 | 
			
		||||
 * The released versions can be found in the tags
 | 
			
		||||
 | 
			
		||||
Other branches may be available for features or bugfixes, but they
 | 
			
		||||
may vanish at any point. To select a specific branch use
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    # Generic code
 | 
			
		||||
    git checkout -b <localbranchname> origin/<branchname>
 | 
			
		||||
 | 
			
		||||
So for instance if you want to use and stay with version 4.1, you can use
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    git checkout -b 4.1 origin/4.1
 | 
			
		||||
 | 
			
		||||
Git mirrors
 | 
			
		||||
^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
If the main site is down, you can acquire cdist from one of the following sites:
 | 
			
		||||
 | 
			
		||||
 * git://github.com/telmich/cdist.git `github <https://github.com/telmich/cdist>`_
 | 
			
		||||
 * git://git.code.sf.net/p/cdist/code `sourceforge <https://sourceforge.net/p/cdist/code>`_
 | 
			
		||||
 | 
			
		||||
Building and using manpages
 | 
			
		||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
			
		||||
 | 
			
		||||
If you want to build and use the manpages, run:
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    make man
 | 
			
		||||
    export MANPATH=$MANPATH:$(pwd -P)/docs/man/_build/man
 | 
			
		||||
 | 
			
		||||
Or you can move manpages from docs/man/_build/man directory to some
 | 
			
		||||
other directory and add it to MANPATH.
 | 
			
		||||
 | 
			
		||||
You can also build manpages for types in your ~/.cdist directory:
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    make dotman
 | 
			
		||||
 | 
			
		||||
Built manpages are now in docs/man/_build/man directory. If you have
 | 
			
		||||
some other custom .cdist directory, e.g. /custom/.cdist then use:
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    DOT_CDIST_PATH=/custom/.cdist make dotman
 | 
			
		||||
 | 
			
		||||
Python package
 | 
			
		||||
~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Cdist is available as a python package at
 | 
			
		||||
`PyPi <http://pypi.python.org/pypi/cdist/>`_. You can install it using
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    pip install cdist
 | 
			
		||||
							
								
								
									
										15
									
								
								docs/man/cdist-intro.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								docs/man/cdist-intro.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
cdist - usable configuration management
 | 
			
		||||
=======================================
 | 
			
		||||
 | 
			
		||||
.. image:: cdist-logo.png
 | 
			
		||||
    :alt: cdist-logo
 | 
			
		||||
 | 
			
		||||
cdist is a usable configuration management system.
 | 
			
		||||
It adheres to the KISS principle and 
 | 
			
		||||
is being used in small up to enterprise grade environments.
 | 
			
		||||
cdist is an alternative to other configuration management systems like
 | 
			
		||||
 | 
			
		||||
* `bcfg2 <http://trac.mcs.anl.gov/projects/bcfg2>`_
 | 
			
		||||
* `chef <http://wiki.opscode.com/display/chef/>`_
 | 
			
		||||
* `cfengine <http://www.cfengine.org/>`_
 | 
			
		||||
* `puppet <http://www.puppetlabs.com/>`_.
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/man/cdist-logo.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/man/cdist-logo.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.5 KiB  | 
| 
						 | 
				
			
			@ -1,14 +1,7 @@
 | 
			
		|||
cdist-manifest(7)
 | 
			
		||||
=================
 | 
			
		||||
Manifest
 | 
			
		||||
========
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-manifest - (Re-)Use types
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DESCRIPTION
 | 
			
		||||
Description
 | 
			
		||||
-----------
 | 
			
		||||
Manifests are used to define which objects to create.
 | 
			
		||||
Objects are instances of **types**, like in object oriented programming languages.
 | 
			
		||||
| 
						 | 
				
			
			@ -44,15 +37,15 @@ In general, manifests are used to define which types are used depending
 | 
			
		|||
on given conditions.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
INITIAL AND TYPE MANIFESTS
 | 
			
		||||
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).
 | 
			
		||||
from types. More about manifests in types can be found in `cdist type <cdist-type.html>`_.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DEFINE STATE IN THE INITIAL MANIFEST
 | 
			
		||||
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.
 | 
			
		||||
| 
						 | 
				
			
			@ -82,12 +75,12 @@ utilises cdist types. Every available type can be executed like a normal
 | 
			
		|||
command.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SPLITTING UP THE INITIAL MANIFEST
 | 
			
		||||
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 directory containing the initial manifest (see `cdist reference <cdist-reference.html>`_).
 | 
			
		||||
 | 
			
		||||
The following example would include every file with a **.sh** suffix::
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +91,7 @@ The following example would include every file with a **.sh** suffix::
 | 
			
		|||
    done
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DEPENDENCIES
 | 
			
		||||
Dependencies
 | 
			
		||||
------------
 | 
			
		||||
If you want to describe that something requires something else, just
 | 
			
		||||
setup the variable "require" to contain the requirements. Multiple
 | 
			
		||||
| 
						 | 
				
			
			@ -157,10 +150,10 @@ 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).
 | 
			
		||||
in `cdist execution stages <cdist-stages.html>`_ and of how types work in `cdist type <cdist-type.html>`_.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CREATE DEPENDENCIES FROM EXECUTION ORDER
 | 
			
		||||
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.
 | 
			
		||||
| 
						 | 
				
			
			@ -171,7 +164,7 @@ 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
 | 
			
		||||
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.
 | 
			
		||||
| 
						 | 
				
			
			@ -187,7 +180,7 @@ CDIST_ORDER_DEPENDENCY will be ignored, because adding a dependency in case of
 | 
			
		|||
overrides would result in circular dependencies, which is an error.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXAMPLES
 | 
			
		||||
Examples
 | 
			
		||||
--------
 | 
			
		||||
The initial manifest may for instance contain the following code:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -260,15 +253,3 @@ Dependencies defined by execution order work as following:
 | 
			
		|||
    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).
 | 
			
		||||
| 
						 | 
				
			
			@ -1,13 +1,7 @@
 | 
			
		|||
cdist-messaging(7)
 | 
			
		||||
==================
 | 
			
		||||
Messaging
 | 
			
		||||
=========
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-messaging - How the initial manifest and types can communication
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
DESCRIPTION
 | 
			
		||||
Description
 | 
			
		||||
-----------
 | 
			
		||||
cdist has a simple but powerful way of allowing communication between
 | 
			
		||||
the initial manifest and types as well as types and types.
 | 
			
		||||
| 
						 | 
				
			
			@ -27,11 +21,11 @@ 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
 | 
			
		||||
between the different objects (see `cdist manifest <cdist-manifest.html>`_) and thus you
 | 
			
		||||
can only react reliably on messages by objects that you depend on.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
AVAILABILITY
 | 
			
		||||
Availability
 | 
			
		||||
------------
 | 
			
		||||
Messaging is possible between all **local** scripts:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -41,7 +35,7 @@ Messaging is possible between all **local** scripts:
 | 
			
		|||
- type/gencode-remote
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXAMPLES
 | 
			
		||||
Examples
 | 
			
		||||
--------
 | 
			
		||||
When you want to emit a message use:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -98,17 +92,3 @@ Restart sshd on changes
 | 
			
		|||
    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).
 | 
			
		||||
							
								
								
									
										16
									
								
								docs/man/cdist-os.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								docs/man/cdist-os.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
Supported Operating Systems
 | 
			
		||||
===========================
 | 
			
		||||
 | 
			
		||||
cdist was tested or is know to run on at least
 | 
			
		||||
 | 
			
		||||
* `Archlinux <http://www.archlinux.org/>`_
 | 
			
		||||
* `Debian <http://www.debian.org/>`_
 | 
			
		||||
* `CentOS <http://www.centos.org/>`_
 | 
			
		||||
* `Fedora <http://fedoraproject.org/>`_
 | 
			
		||||
* `FreeBSD <http://www.freebsd.org>`_
 | 
			
		||||
* `Gentoo <http://www.gentoo.org/>`_
 | 
			
		||||
* `Mac OS X <http://www.apple.com/macosx/>`_
 | 
			
		||||
* `OpenBSD <http://www.openbsd.org>`_
 | 
			
		||||
* `Redhat <http://www.redhat.com/>`_
 | 
			
		||||
* `Ubuntu <http://www.ubuntu.com/>`_
 | 
			
		||||
* `XenServer <http://www.citrix.com/xenserver/>`_
 | 
			
		||||
| 
						 | 
				
			
			@ -1,31 +1,18 @@
 | 
			
		|||
cdist-quickstart(7)
 | 
			
		||||
===================
 | 
			
		||||
Quickstart
 | 
			
		||||
==========
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-quickstart - 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.
 | 
			
		||||
 | 
			
		||||
This tutorial assumes you are configuring **localhost**, because
 | 
			
		||||
it is always available. Just replace **localhost** with your target
 | 
			
		||||
host for real life usage.
 | 
			
		||||
 | 
			
		||||
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**
 | 
			
		||||
| 
						 | 
				
			
			@ -84,15 +71,3 @@ code into your shell to get started and configure localhost::
 | 
			
		|||
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).
 | 
			
		||||
| 
						 | 
				
			
			@ -29,23 +29,17 @@ __cdist_myname=${0##*/};
 | 
			
		|||
__cdist_abs_myname="$__cdist_abs_mydir/$__cdist_myname"
 | 
			
		||||
 | 
			
		||||
filename="${__cdist_myname%.sh}"
 | 
			
		||||
dest="$__cdist_abs_mydir/man7/$filename"
 | 
			
		||||
dest="$__cdist_abs_mydir/$filename"
 | 
			
		||||
 | 
			
		||||
cd "$__cdist_abs_mydir"
 | 
			
		||||
 | 
			
		||||
exec > "$dest"
 | 
			
		||||
cat << eof 
 | 
			
		||||
cdist-reference(7)
 | 
			
		||||
==================
 | 
			
		||||
Reference
 | 
			
		||||
=========
 | 
			
		||||
Variable, path and type reference for cdist
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-reference - Variable, path and type reference for cdist
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EXPLORERS
 | 
			
		||||
Explorers
 | 
			
		||||
---------
 | 
			
		||||
The following global explorers are available:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +53,7 @@ eof
 | 
			
		|||
 | 
			
		||||
cat << eof 
 | 
			
		||||
 | 
			
		||||
PATHS
 | 
			
		||||
Paths
 | 
			
		||||
-----
 | 
			
		||||
\$HOME/.cdist
 | 
			
		||||
    The standard cdist configuration directory relative to your home directory
 | 
			
		||||
| 
						 | 
				
			
			@ -76,10 +70,6 @@ confdir
 | 
			
		|||
    By default it consists of everything in \$HOME/.cdist and cdist/conf/.
 | 
			
		||||
    For more details see cdist(1)
 | 
			
		||||
 | 
			
		||||
confdir/files/
 | 
			
		||||
    Cdist does not care about this directory besides providing access to it.
 | 
			
		||||
    It is thought to be a general file storage area.
 | 
			
		||||
 | 
			
		||||
confdir/manifest/init
 | 
			
		||||
    This is the central entry point.
 | 
			
		||||
    It is an executable (+x bit set) shell script that can use
 | 
			
		||||
| 
						 | 
				
			
			@ -94,11 +84,11 @@ confdir/manifest/*
 | 
			
		|||
    maintain different groups of hosts.
 | 
			
		||||
 | 
			
		||||
confdir/explorer/<name>
 | 
			
		||||
    Contains explorers to be run on the target hosts, see cdist-explorer(7).
 | 
			
		||||
    Contains explorers to be run on the target hosts, see \`cdist explorer <cdist-explorer.html>\`_.
 | 
			
		||||
 | 
			
		||||
confdir/type/
 | 
			
		||||
    Contains all available types, which are used to provide
 | 
			
		||||
    some kind of functionality. See cdist-type(7).
 | 
			
		||||
    some kind of functionality. See \`cdist type <cdist-type.html>\`_.
 | 
			
		||||
 | 
			
		||||
confdir/type/<name>/
 | 
			
		||||
    Home of the type <name>.
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +123,7 @@ confdir/type/<name>/parameter/boolean
 | 
			
		|||
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).
 | 
			
		||||
    See \`cdist explorer <cdist-explorer.html>\`_.
 | 
			
		||||
 | 
			
		||||
confdir/type/<name>/files
 | 
			
		||||
    This directory is reserved for user data and will not be used
 | 
			
		||||
| 
						 | 
				
			
			@ -158,27 +148,28 @@ out/object/<object>
 | 
			
		|||
out/object/<object>/explorers
 | 
			
		||||
    Output of type specific explorers, per object.
 | 
			
		||||
 | 
			
		||||
TYPES
 | 
			
		||||
Types
 | 
			
		||||
-----
 | 
			
		||||
The following types are available:
 | 
			
		||||
 | 
			
		||||
eof
 | 
			
		||||
 | 
			
		||||
for type in $(ls man7/cdist-type__*.rst | LC_ALL=C sort); do
 | 
			
		||||
# If there is no such file then ls prints error to stderr,
 | 
			
		||||
# so redirect stderr to /dev/null.
 | 
			
		||||
for type in $(ls man7/cdist-type__*.rst 2>/dev/null | LC_ALL=C sort); do
 | 
			
		||||
    no_dir="${type#man7/}";
 | 
			
		||||
    no_type="${no_dir#cdist-type}";
 | 
			
		||||
    name="${no_type%.rst}";
 | 
			
		||||
    name_no_underline="$(echo $name | sed 's/^__/\\__/g')"
 | 
			
		||||
    manref="${no_dir%.rst}"
 | 
			
		||||
    man="${manref}(7)"
 | 
			
		||||
 | 
			
		||||
    echo "- $name_no_underline" "(\`${man} <${manref}.html>\`_)"
 | 
			
		||||
    echo "- $name" "(\`${man} <man7/${manref}.html>\`_)"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
cat << eof
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
OBJECTS
 | 
			
		||||
Objects
 | 
			
		||||
-------
 | 
			
		||||
For object to object communication and tests, the following paths are
 | 
			
		||||
usable within a object directory:
 | 
			
		||||
| 
						 | 
				
			
			@ -195,17 +186,13 @@ stdin
 | 
			
		|||
    when the type was called.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ENVIRONMENT VARIABLES (FOR READING)
 | 
			
		||||
Environment variables (for reading)
 | 
			
		||||
-----------------------------------
 | 
			
		||||
The following environment variables are exported by cdist:
 | 
			
		||||
 | 
			
		||||
__explorer
 | 
			
		||||
    Directory that contains all global explorers.
 | 
			
		||||
    Available for: initial manifest, explorer, type explorer, shell
 | 
			
		||||
__files
 | 
			
		||||
    Directory that contains content from the "files" subdirectories
 | 
			
		||||
    from the configuration directories.
 | 
			
		||||
    Available for: initial manifest, type manifest, type gencode, shell
 | 
			
		||||
__manifest
 | 
			
		||||
    Directory that contains the initial manifest.
 | 
			
		||||
    Available for: initial manifest, type manifest, shell
 | 
			
		||||
| 
						 | 
				
			
			@ -240,12 +227,12 @@ __type_explorer
 | 
			
		|||
    Directory that contains the type explorers.
 | 
			
		||||
    Available for: type explorer
 | 
			
		||||
 | 
			
		||||
ENVIRONMENT VARIABLES (FOR WRITING)
 | 
			
		||||
Environment variables (for writing)
 | 
			
		||||
-----------------------------------
 | 
			
		||||
The following environment variables influence the behaviour of cdist:
 | 
			
		||||
 | 
			
		||||
require
 | 
			
		||||
    Setup dependencies between objects (see cdist-manifest(7))
 | 
			
		||||
    Setup dependencies between objects (see \`cdist manifest <cdist-manifest.html>\`_)
 | 
			
		||||
 | 
			
		||||
CDIST_LOCAL_SHELL
 | 
			
		||||
    Use this shell locally instead of /bin/sh to execute scripts
 | 
			
		||||
| 
						 | 
				
			
			@ -254,24 +241,14 @@ CDIST_REMOTE_SHELL
 | 
			
		|||
    Use this shell remotely instead of /bin/sh to execute scripts
 | 
			
		||||
 | 
			
		||||
CDIST_OVERRIDE
 | 
			
		||||
    Allow overwriting type parameters (see cdist-manifest(7))
 | 
			
		||||
    Allow overwriting type parameters (see  \`cdist manifest <cdist-manifest.html>\`_)
 | 
			
		||||
 | 
			
		||||
CDIST_ORDER_DEPENDENCY
 | 
			
		||||
    Create dependencies based on the execution order (see cdist-manifest(7))
 | 
			
		||||
    Create dependencies based on the execution order (see  \`cdist manifest <cdist-manifest.html>\`_)
 | 
			
		||||
 | 
			
		||||
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).
 | 
			
		||||
eof
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,15 +1,6 @@
 | 
			
		|||
cdist-remote-exec-copy(7)
 | 
			
		||||
=========================
 | 
			
		||||
Remote exec and copy commands
 | 
			
		||||
=============================
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-remote-exec-copy - 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)
 | 
			
		||||
| 
						 | 
				
			
			@ -30,19 +21,3 @@ 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).
 | 
			
		||||
| 
						 | 
				
			
			@ -1,19 +1,13 @@
 | 
			
		|||
cdist-stages(7)
 | 
			
		||||
===============
 | 
			
		||||
Execution stages
 | 
			
		||||
================
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-stages - Stages used during configuration deployment
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
DESCRIPTION
 | 
			
		||||
Description
 | 
			
		||||
-----------
 | 
			
		||||
Starting the execution of deployment with cdist, cdist passes
 | 
			
		||||
through different stages.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
STAGE 1: TARGET INFORMATION RETRIEVAL
 | 
			
		||||
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 
 | 
			
		||||
| 
						 | 
				
			
			@ -21,7 +15,7 @@ explorers are copied back into the local cache. The results can be used by
 | 
			
		|||
manifests and types.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
STAGE 2: RUN THE INITIAL MANIFEST
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -30,7 +24,7 @@ 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
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +32,7 @@ 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
 | 
			
		||||
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, 
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +46,7 @@ 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
 | 
			
		||||
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 
 | 
			
		||||
| 
						 | 
				
			
			@ -60,30 +54,18 @@ target on stdout. If the gencode executables fail, they must print diagnostic
 | 
			
		|||
messages on stderr and exit non-zero.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
STAGE 6: CODE EXECUTION
 | 
			
		||||
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
 | 
			
		||||
Stage 7: cache
 | 
			
		||||
--------------
 | 
			
		||||
The cache stores the information from the current run for later use.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SUMMARY
 | 
			
		||||
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).
 | 
			
		||||
							
								
								
									
										28
									
								
								docs/man/cdist-support.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								docs/man/cdist-support.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
Support
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
IRC
 | 
			
		||||
~~~
 | 
			
		||||
 | 
			
		||||
You can join the development ***IRC channel***
 | 
			
		||||
`#cstar on irc.freenode.net <irc://irc.freenode.org/#cstar>`_.
 | 
			
		||||
 | 
			
		||||
Mailing list
 | 
			
		||||
~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Bug reports, questions, patches, etc. should be send to the
 | 
			
		||||
`cdist mailing list <https://groups.google.com/forum/#!forum/cdist-configuration-management>`_.
 | 
			
		||||
 | 
			
		||||
Linkedin
 | 
			
		||||
~~~~~~~~
 | 
			
		||||
 | 
			
		||||
If you have an account
 | 
			
		||||
at `Linked in <http://www.linkedin.com/>`_,
 | 
			
		||||
you can join the
 | 
			
		||||
`cdist group <http://www.linkedin.com/groups/cdist-configuration-management-3952797>`_.
 | 
			
		||||
 | 
			
		||||
Commercial support
 | 
			
		||||
~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
You can request commercial support for cdist from
 | 
			
		||||
`my company <http://www.ungleich.ch/>`_.
 | 
			
		||||
| 
						 | 
				
			
			@ -1,14 +1,7 @@
 | 
			
		|||
cdist-troubleshooting(7)
 | 
			
		||||
========================
 | 
			
		||||
Troubleshooting
 | 
			
		||||
===============
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-troubleshooting - Common problems and their solutions
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ERROR IN MANIFEST IS NOT CONSIDERED AN ERROR BY CDIST
 | 
			
		||||
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.
 | 
			
		||||
| 
						 | 
				
			
			@ -50,15 +43,3 @@ you write to use the -e flag:
 | 
			
		|||
    % 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).
 | 
			
		||||
| 
						 | 
				
			
			@ -1,31 +1,24 @@
 | 
			
		|||
cdist-type(7)
 | 
			
		||||
=============
 | 
			
		||||
cdist type
 | 
			
		||||
==========
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-type - Functionality bundled
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SYNOPSIS
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
::
 | 
			
		||||
 | 
			
		||||
    __TYPE ID --parameter value [--parameter value ...]
 | 
			
		||||
    __TYPE --parameter value [--parameter value ...] (for singletons)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DESCRIPTION
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
Synopsis
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
HOW TO USE A TYPE
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    __TYPE ID --parameter value [--parameter value ...]
 | 
			
		||||
    __TYPE --parameter value [--parameter value ...] (for singletons)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
How to use a type
 | 
			
		||||
-----------------
 | 
			
		||||
 | 
			
		||||
You can use types from the initial manifest or the type manifest like a
 | 
			
		||||
normal shell command:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -37,10 +30,10 @@ normal shell command:
 | 
			
		|||
    # Ensure tree is installed
 | 
			
		||||
    __package tree --state installed
 | 
			
		||||
 | 
			
		||||
A list of supported types can be found in the cdist-reference(7) manpage.
 | 
			
		||||
A list of supported types can be found in the `cdist reference <cdist-reference.html>`_ manpage.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SINGLETON TYPES
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +51,7 @@ Example:
 | 
			
		|||
    __myfancysingleton --colour green
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
HOW TO WRITE A NEW TYPE
 | 
			
		||||
How to write a new type
 | 
			
		||||
-----------------------
 | 
			
		||||
A type consists of
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +67,7 @@ two underscores (__) to prevent collisions with other executables in $PATH.
 | 
			
		|||
To implement a new type, create the directory **cdist/conf/type/__NAME**.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DEFINING PARAMETERS
 | 
			
		||||
Defining parameters
 | 
			
		||||
-------------------
 | 
			
		||||
Every type consists of required, optional and boolean parameters, which must
 | 
			
		||||
each be declared in a newline separated file in **parameter/required**,
 | 
			
		||||
| 
						 | 
				
			
			@ -102,7 +95,7 @@ Example:
 | 
			
		|||
    echo use_ssl >> cdist/conf/type/__nginx_vhost/parameter/boolean
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
USING PARAMETERS
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -138,7 +131,7 @@ Example: (e.g. in cdist/conf/type/__nginx_vhost/manifest)
 | 
			
		|||
    fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
INPUT FROM STDIN
 | 
			
		||||
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.
 | 
			
		||||
| 
						 | 
				
			
			@ -168,7 +161,7 @@ In the __file type, stdin is used as source for the file, if - is used for sourc
 | 
			
		|||
    ....
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
WRITING THE MANIFEST
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -190,13 +183,13 @@ a shortened version looks like this:
 | 
			
		|||
    __package_$type "$@"
 | 
			
		||||
 | 
			
		||||
As you can see, the type can reference different environment variables,
 | 
			
		||||
which are documented in cdist-reference(7).
 | 
			
		||||
which are documented in `cdist reference <cdist-reference.html>`_.
 | 
			
		||||
 | 
			
		||||
Always ensure the manifest is executable, otherwise cdist will not be able
 | 
			
		||||
to execute it. For more information about manifests see cdist-manifest(7).
 | 
			
		||||
to execute it. For more information about manifests see `cdist manifest <cdist-manifest.html>`_.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SINGLETON - ONE INSTANCE ONLY
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -216,7 +209,7 @@ 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
 | 
			
		||||
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.
 | 
			
		||||
| 
						 | 
				
			
			@ -238,7 +231,7 @@ client, like this (shortened version from the type __file):
 | 
			
		|||
    fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
WRITING THE GENCODE SCRIPT
 | 
			
		||||
Writing the gencode script
 | 
			
		||||
--------------------------
 | 
			
		||||
There are two gencode scripts: **gencode-local** and **gencode-remote**.
 | 
			
		||||
The output of gencode-local is executed locally, whereas
 | 
			
		||||
| 
						 | 
				
			
			@ -259,7 +252,7 @@ script, you can write to stderr:
 | 
			
		|||
    echo "touch /etc/cdist-configured"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
VARIABLE ACCESS FROM THE GENERATED SCRIPTS
 | 
			
		||||
Variable access from the generated scripts
 | 
			
		||||
------------------------------------------
 | 
			
		||||
In the generated scripts, you have access to the following cdist variables
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -280,7 +273,7 @@ So when you generate a script with the following content, it will work:
 | 
			
		|||
    fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
HINTS FOR TYPEWRITERS
 | 
			
		||||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -297,21 +290,8 @@ 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
 | 
			
		||||
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
 | 
			
		||||
current master branch of cdist and have a look at `cdist hacking <cdist-hacker.html>`_ 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).
 | 
			
		||||
							
								
								
									
										8
									
								
								docs/man/cdist-types.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								docs/man/cdist-types.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
cdist types
 | 
			
		||||
===========
 | 
			
		||||
 | 
			
		||||
.. toctree::
 | 
			
		||||
   :titlesonly:
 | 
			
		||||
   :glob:
 | 
			
		||||
 | 
			
		||||
   man7/*
 | 
			
		||||
							
								
								
									
										188
									
								
								docs/man/cdist-update.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										188
									
								
								docs/man/cdist-update.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,188 @@
 | 
			
		|||
How to update cdist
 | 
			
		||||
===================
 | 
			
		||||
 | 
			
		||||
Update the git installation
 | 
			
		||||
---------------------------
 | 
			
		||||
 | 
			
		||||
To upgrade cdist in the current branch use
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    git pull
 | 
			
		||||
 | 
			
		||||
    # Also update the manpages
 | 
			
		||||
    ./build man
 | 
			
		||||
    export MANPATH=$MANPATH:$(pwd -P)/doc/man
 | 
			
		||||
 | 
			
		||||
If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break.
 | 
			
		||||
The master branch on the other hand is the development branch and may not be
 | 
			
		||||
working, break your setup or eat the tree in your garden.
 | 
			
		||||
 | 
			
		||||
Safely upgrading to new versions
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
To upgrade to **any** further cdist version, you can take the
 | 
			
		||||
following procedure to do a safe upgrade:
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    # Create new branch to try out the update
 | 
			
		||||
    git checkout -b upgrade_cdist
 | 
			
		||||
 | 
			
		||||
    # Get latest cdist version in git database
 | 
			
		||||
    git fetch -v
 | 
			
		||||
 | 
			
		||||
    # see what will happen on merge - replace
 | 
			
		||||
    # master with the branch you plan to merge
 | 
			
		||||
    git diff upgrade_cdist..origin/master
 | 
			
		||||
 | 
			
		||||
    # Merge the new version
 | 
			
		||||
    git merge origin/master
 | 
			
		||||
 | 
			
		||||
Now you can ensure all custom types work with the new version.
 | 
			
		||||
Assume that you need to go back to an older version during
 | 
			
		||||
the migration/update, you can do so as follows:
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    # commit changes
 | 
			
		||||
    git commit -m ...
 | 
			
		||||
 | 
			
		||||
    # go back to original branch
 | 
			
		||||
    git checkout master
 | 
			
		||||
 | 
			
		||||
After that, you can go back and continue the upgrade:
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    # git checkout upgrade_cdist
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Update the python package
 | 
			
		||||
-------------------------
 | 
			
		||||
 | 
			
		||||
To upgrade to the lastet version do
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    pip install --upgrade cdist
 | 
			
		||||
 | 
			
		||||
General update instructions
 | 
			
		||||
---------------------------
 | 
			
		||||
 | 
			
		||||
Updating from 3.0 to 3.1
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
The type **\_\_ssh_authorized_keys** now also manages existing keys, 
 | 
			
		||||
not only the ones added by cdist.
 | 
			
		||||
 | 
			
		||||
Updating from 2.3 to 3.0
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
The **changed** attribute of objects has been removed.
 | 
			
		||||
Use `messaging </software/cdist/man/3.0.0/man7/cdist-messaging.html>`_ instead.
 | 
			
		||||
 | 
			
		||||
Updating from 2.2 to 2.3
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
No incompatiblities.
 | 
			
		||||
 | 
			
		||||
Updating from 2.1 to 2.2
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Starting with 2.2, the syntax for requiring a singleton type changed:
 | 
			
		||||
Old format:
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    require="__singleton_type/singleton" ...
 | 
			
		||||
 | 
			
		||||
New format:
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    require="__singleton_type" ...
 | 
			
		||||
 | 
			
		||||
Internally the "singleton" object id was dropped to make life more easy.
 | 
			
		||||
You can probably fix your configuration by running the following code
 | 
			
		||||
snippet (currently untested, please report back if it works for you):
 | 
			
		||||
 | 
			
		||||
.. code-block:: sh
 | 
			
		||||
 | 
			
		||||
    find ~/.cdist/* -type f -exec sed -i 's,/singleton,,' {} \;
 | 
			
		||||
 | 
			
		||||
Updating from 2.0 to 2.1
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 
 | 
			
		||||
Have a look at the update guide for [[2.0 to 2.1|2.0-to-2.1]].
 | 
			
		||||
 | 
			
		||||
 * Type **\_\_package* and \_\_process** use --state **present** or **absent**.
 | 
			
		||||
   The states **removed/installed** and **stopped/running** have been removed.
 | 
			
		||||
   Support for the new states is already present in 2.0.
 | 
			
		||||
 * Type **\_\_directory**: Parameter --parents and --recursive are now boolean
 | 
			
		||||
   The old "yes/no" values need to be removed.
 | 
			
		||||
 * Type **\_\_rvm_ruby**: Parameter --default is now boolean
 | 
			
		||||
   The old "yes/no" values need to be removed.
 | 
			
		||||
 * Type **\_\_rvm_gemset**: Parameter --default is now boolean
 | 
			
		||||
   The old "yes/no" values need to be removed.
 | 
			
		||||
 * Type **\_\_addifnosuchline** and **\_\_removeline** have been replaced by **\_\_line**
 | 
			
		||||
 * The **conf** directory is now located at **cdist/conf**.
 | 
			
		||||
   You need to migrate your types, explorers and manifests
 | 
			
		||||
   manually to the new location.
 | 
			
		||||
 * Replace the variable **\_\_self** by **\_\_object_name**
 | 
			
		||||
   Support for the variable **\_\_object_name** is already present in 2.0.
 | 
			
		||||
 * The types **\_\_autofs**, **\_\_autofs_map** and **\_\_autofs_reload** have been removed
 | 
			
		||||
   (no maintainer, no users)
 | 
			
		||||
 * Type **\_\_user**: Parameter --groups removed (use the new \_\_user_groups type)
 | 
			
		||||
 * Type **\_\_ssh_authorized_key** has been replaced by more flexible type 
 | 
			
		||||
    **\_\_ssh_authorized_keys**
 | 
			
		||||
 | 
			
		||||
Updating from 1.7 to 2.0
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
* Ensure python (>= 3.2) is installed on the source host
 | 
			
		||||
* Use "cdist config host" instead of "cdist-deploy-to host"
 | 
			
		||||
* Use "cdist config -p host1 host2" instead of "cdist-mass-deploy"
 | 
			
		||||
* Use "cdist banner" for fun
 | 
			
		||||
* Use **\_\_object_name** instead of **\_\_self** in manifests
 | 
			
		||||
 | 
			
		||||
Updating from 1.6 to 1.7
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
* If you used the global explorer **hardware_type**, you need to change
 | 
			
		||||
  your code to use **machine** instead.
 | 
			
		||||
 | 
			
		||||
Updating from 1.5 to 1.6
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
* If you used **\_\_package_apt --preseed**, you need to use the new
 | 
			
		||||
  type **\_\_debconf_set_selections** instead.
 | 
			
		||||
* The **\_\_package** types accepted either --state deinstalled or
 | 
			
		||||
  --state uninstaaled. Starting with 1.6, it was made consistently
 | 
			
		||||
  to --state removed.
 | 
			
		||||
 | 
			
		||||
Updating from 1.3 to 1.5
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
No incompatiblities.
 | 
			
		||||
 | 
			
		||||
Updating from 1.2 to 1.3
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Rename **gencode** of every type to **gencode-remote**.
 | 
			
		||||
 | 
			
		||||
Updating from 1.1 to 1.2
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
No incompatiblities.
 | 
			
		||||
 | 
			
		||||
Updating from 1.0 to 1.1
 | 
			
		||||
~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
In 1.1 the type **\_\_file** was split into **\_\_directory**, **\_\_file** and
 | 
			
		||||
**\_\_link**. The parameter **--type** was removed from **\_\_file**. Thus you
 | 
			
		||||
need to replace **\_\_file** calls in your manifests:
 | 
			
		||||
 | 
			
		||||
 * Remove --type from all \_\_file calls
 | 
			
		||||
 * If type was symlink, use \_\_link and --type symbolic
 | 
			
		||||
 * If type was directory, use \_\_directory
 | 
			
		||||
							
								
								
									
										72
									
								
								docs/man/cdist-why.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								docs/man/cdist-why.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,72 @@
 | 
			
		|||
Why should I use cdist?
 | 
			
		||||
=======================
 | 
			
		||||
 | 
			
		||||
There are several motivations to use cdist, these
 | 
			
		||||
are probably the most popular ones.
 | 
			
		||||
 | 
			
		||||
Known language
 | 
			
		||||
--------------
 | 
			
		||||
 | 
			
		||||
Cdist is being configured in
 | 
			
		||||
`shell script <https://en.wikipedia.org/wiki/Shell_script>`_.
 | 
			
		||||
Shell script is used by UNIX system engineers for decades.
 | 
			
		||||
So when cdist is introduced, your staff does not need to learn a new
 | 
			
		||||
`DSL <https://en.wikipedia.org/wiki/Domain-specific_language>`_
 | 
			
		||||
or programming language.
 | 
			
		||||
 | 
			
		||||
Powerful language
 | 
			
		||||
-----------------
 | 
			
		||||
 | 
			
		||||
Not only is shell scripting widely known by system engineers,
 | 
			
		||||
but it is also a very powerful language. Here are some features
 | 
			
		||||
which make daily work easy:
 | 
			
		||||
 | 
			
		||||
 * Configuration can react dynamicly on explored values
 | 
			
		||||
 * High level string manipulation (using sed, awk, grep)
 | 
			
		||||
 * Conditional support (**if, case**)
 | 
			
		||||
 * Loop support (**for, while**)
 | 
			
		||||
 * Support for dependencies between cdist types
 | 
			
		||||
 | 
			
		||||
More than shell scripting
 | 
			
		||||
-------------------------
 | 
			
		||||
 | 
			
		||||
If you compare regular shell scripting with cdist, there is one major
 | 
			
		||||
difference: When using cdist types,
 | 
			
		||||
the results are
 | 
			
		||||
`idempotent <https://en.wikipedia.org/wiki/Idempotence>`_.
 | 
			
		||||
In practise that means it does not matter in which order you
 | 
			
		||||
call cdist types, the result is always the same.
 | 
			
		||||
 | 
			
		||||
Zero dependency configuration management
 | 
			
		||||
----------------------------------------
 | 
			
		||||
 | 
			
		||||
Cdist requires very litte on a target system. Even better,
 | 
			
		||||
in almost all cases all dependencies are usually fulfilled.
 | 
			
		||||
Cdist does not require an agent or a high level programming
 | 
			
		||||
languages on the target host: it will run on any host that
 | 
			
		||||
has a **ssh server running** and a posix compatible shell
 | 
			
		||||
(**/bin/sh**). Compared to other configuration management systems,
 | 
			
		||||
it does not require to open up an additional port.
 | 
			
		||||
 | 
			
		||||
Push based distribution
 | 
			
		||||
-----------------------
 | 
			
		||||
 | 
			
		||||
Cdist uses the push based model for configuration. In this
 | 
			
		||||
scenario, one (or more) computers connect the target hosts
 | 
			
		||||
and apply the configuration. That way the source host has
 | 
			
		||||
very little requirements: Cdist can even run on a sysadmin
 | 
			
		||||
notebook that is loosely connected to the network and has
 | 
			
		||||
limited amount of resources.
 | 
			
		||||
 | 
			
		||||
Furthermore, from a security point of view, only one machine
 | 
			
		||||
needs access to the target hosts. No target hosts will ever
 | 
			
		||||
need to connect back to the source host, which contains the
 | 
			
		||||
full configuration.
 | 
			
		||||
 | 
			
		||||
Highly scalable
 | 
			
		||||
---------------
 | 
			
		||||
 | 
			
		||||
If at some point you manage more hosts than can be handled from
 | 
			
		||||
a single source host, you can simply add more resources: Either
 | 
			
		||||
add more cores to one host or add hosts.
 | 
			
		||||
Cdist will utilise the given resources in parallel.
 | 
			
		||||
| 
						 | 
				
			
			@ -32,6 +32,7 @@ sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(os.path.realpath
 | 
			
		|||
# ones.
 | 
			
		||||
extensions = [
 | 
			
		||||
    'cdist.sphinxext.manpage',
 | 
			
		||||
    'sphinx.ext.extlinks',
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
# Add any paths that contain templates here, relative to this directory.
 | 
			
		||||
| 
						 | 
				
			
			@ -309,3 +310,9 @@ texinfo_documents = [
 | 
			
		|||
 | 
			
		||||
# If true, do not generate a @detailmenu in the "Top" node's menu.
 | 
			
		||||
#texinfo_no_detailmenu = False
 | 
			
		||||
 | 
			
		||||
extlinks = {
 | 
			
		||||
    'cdist_docs':
 | 
			
		||||
        ('http://www.nico.schottelius.org/software/cdist/man/{}/%s.html'.format(
 | 
			
		||||
            release), None),
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,9 +4,28 @@ Welcome to cdist documentation
 | 
			
		|||
Contents:
 | 
			
		||||
 | 
			
		||||
.. toctree::
 | 
			
		||||
   :titlesonly:
 | 
			
		||||
   :maxdepth: 2
 | 
			
		||||
   :glob:
 | 
			
		||||
   :numbered:
 | 
			
		||||
 | 
			
		||||
   man1/*
 | 
			
		||||
   man7/*
 | 
			
		||||
   cdist-intro
 | 
			
		||||
   cdist-why
 | 
			
		||||
   cdist-os
 | 
			
		||||
   cdist-install
 | 
			
		||||
   cdist-update
 | 
			
		||||
   cdist-support
 | 
			
		||||
   cdist-features
 | 
			
		||||
   cdist-quickstart
 | 
			
		||||
   man1/cdist
 | 
			
		||||
   cdist-bootstrap
 | 
			
		||||
   cdist-manifest
 | 
			
		||||
   cdist-type
 | 
			
		||||
   cdist-types
 | 
			
		||||
   cdist-explorer
 | 
			
		||||
   cdist-messaging
 | 
			
		||||
   cdist-reference
 | 
			
		||||
   cdist-best-practice
 | 
			
		||||
   cdist-stages
 | 
			
		||||
   cdist-remote-exec-copy
 | 
			
		||||
   cdist-hacker
 | 
			
		||||
   cdist-troubleshooting
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,8 +5,6 @@ NAME
 | 
			
		|||
----
 | 
			
		||||
cdist - Usable Configuration Management
 | 
			
		||||
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SYNOPSIS
 | 
			
		||||
--------
 | 
			
		||||
| 
						 | 
				
			
			@ -179,9 +177,11 @@ The following exit values shall be returned:
 | 
			
		|||
 | 
			
		||||
SEE ALSO
 | 
			
		||||
--------
 | 
			
		||||
- `cdist-type(7) <../man7/cdist-type.html>`_
 | 
			
		||||
- `cdist-reference(7) <../man7/cdist-reference.html>`_
 | 
			
		||||
Full documentation at: <:cdist_docs:`index`>.
 | 
			
		||||
 | 
			
		||||
AUTHORS
 | 
			
		||||
-------
 | 
			
		||||
Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
			
		||||
 | 
			
		||||
COPYING
 | 
			
		||||
-------
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,58 +0,0 @@
 | 
			
		|||
cdist-tutorial(7)
 | 
			
		||||
=================
 | 
			
		||||
 | 
			
		||||
NAME
 | 
			
		||||
----
 | 
			
		||||
cdist-tutorial - 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).
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue