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
				
			
		|  | @ -2,6 +2,7 @@ Changelog | |||
| --------- | ||||
| 
 | ||||
| next: | ||||
| 	* Documentation: Restructure and fix and improve docs and manpages (Darko Poljak) | ||||
| 	* Core: Add files directory for static files (Darko Poljak) | ||||
| 	* Core: Fix conflicting requirements (Darko Poljak) | ||||
| 	* Custom: Add bash and zsh completions (Darko Poljak) | ||||
|  |  | |||
|  | @ -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