113 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| cdist-types(7)
 | |
| ===============
 | |
| Nico Schottelius <nico-cdist--@--schottelius.org>
 | |
| 
 | |
| 
 | |
| NAME
 | |
| ----
 | |
| cdist-types - Functionality bundled
 | |
| 
 | |
| 
 | |
| DESCRIPTION
 | |
| -----------
 | |
| A cdist type describes some kind of functionality.
 | |
| Types can be run from manifests.
 | |
| It is recommeneded to prefix all types with two
 | |
| underscores, because types will be executed and
 | |
| thus you prevent collisions with real binaries
 | |
| (like "file").
 | |
| 
 | |
| This document is a brainstorming document, on how to integrate types.
 | |
| 
 | |
| Proposed/discussed structures:
 | |
| 
 | |
| 1) 2010-11-02
 | |
|    $basedir/$type/
 | |
|       properties/
 | |
|          name/
 | |
|             required # required | optional
 | |
|          choices  # \n liste
 | |
|             
 | |
| 
 | |
|       meta/
 | |
|          default (shell script)
 | |
|       types/
 | |
|          pukman/
 | |
| 
 | |
| 2) 2010-11-09
 | |
| 
 | |
| How to write my own type named "coffee":
 | |
| 
 | |
|    Create the directory /etc/cdist/types/coffee/
 | |
|    Create the file /etc/cdist/types/coffee/README containing a description of the 
 | |
| type.
 | |
|    If your type supports attributes, create the directory /etc/cdist/types/coffee/
 | |
| attributes.
 | |
|    For each attribute, create the file
 | |
|       /etc/cdist/types/coffee/attributes/$attribute_name which contains
 | |
| 
 | |
|       a short description on the first line
 | |
|       then a blank line
 | |
|       then a long description (probably over several lines)
 | |
| 
 | |
|    If you think your type may be useful for others, submit it for inclusion
 | |
|    into cdist at cdist -- at -- l.schottelius.org.
 | |
| 
 | |
|    Create /etc/cdist/types/coffee/init which reads $configinput
 | |
|    (either via cconfig or via environment) and outputs a block of
 | |
|    shell code suitable for running on the client.
 | |
| 
 | |
| 
 | |
| 
 | |
| --------------------------------------------------------------------------------
 | |
| type layout:
 | |
| 
 | |
|    <name>/
 | |
|       config   # binary that is called to adjust cconfig tree
 | |
|       change   # binary that is called on the remote host?
 | |
| --------------------------------------------------------------------------------
 | |
| Scope of code execution on the client
 | |
| 
 | |
|    It should be assumed that the clients are pretty dumb
 | |
|    and thus do not have high level tools like python
 | |
|    installed.
 | |
| 
 | |
|    If a type requires specific tools to be present
 | |
|    on the target, there must be another type that
 | |
|    provides this tool and the first type must create
 | |
|    an object of the specific type.
 | |
| 
 | |
|    If the generated code fails on the client, it must
 | |
|    print diagnostistic messages on stderr and call
 | |
|    "exit 1", so the configuration is aborted.
 | |
| 
 | |
| --------------------------------------------------------------------------------
 | |
|    - have required and optional arguments
 | |
|    - are independent of hosts
 | |
|    - may make use of other types to realise a new type
 | |
|       - how to overwrite stuff?
 | |
|       - overwrite in own tree?
 | |
|          - needs knowledge of inherited provider
 | |
|             - similar to current situation in puppet,
 | |
|               but more like reusable defines
 | |
|    - or may implement some functionality on their own 
 | |
| 
 | |
| --------------------------------------------------------------------------------
 | |
| Differences manifests vs. types
 | |
| 
 | |
| 
 | |
|                      manifests               types
 | |
| 
 | |
| main purpose         map config to host      provide functionality
 | |
| can change config    no (prevent conflicts)  yes (allow inheritance)
 | |
| specificness         site specific           (globally) reusable
 | |
| 
 | |
| 
 | |
| SEE ALSO
 | |
| --------
 | |
| 
 | |
| 
 | |
| COPYING
 | |
| -------
 | |
| Copyright \(C) 2010-2011 Nico Schottelius. Free use of this software is
 | |
| granted under the terms of the GNU General Public License version 3 (GPLv3).
 |