Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>remotes/origin/1.0
parent
950fdc9e1a
commit
5d65ca460b
@ -0,0 +1,139 @@ |
||||
cdist(7) |
||||
======== |
||||
Nico Schottelius <nico-cdist--@--schottelius.org> |
||||
|
||||
|
||||
NAME |
||||
---- |
||||
cdist - Configuration distribution system |
||||
|
||||
|
||||
DESCRIPTION |
||||
----------- |
||||
Cdist allows you to define centrally a configurations for |
||||
all systems and apply them. Cdist generally uses the push |
||||
approach (a server pushes out the configuration to the clients), |
||||
but can also be used the pull way (see cdist-push-pull(7)). |
||||
|
||||
Cdist is configured in shell syntax, which is "compiled" to an |
||||
internal configuration representation (cconfig), which again |
||||
is used to generate an executable, which is run on the client |
||||
(see cdist-language(7), cdist-design(7)). |
||||
|
||||
|
||||
|
||||
SEE ALSO |
||||
-------- |
||||
cdist-deploy-to(1), website: http://www.nico.schottelius.org/cdist/[] |
||||
|
||||
|
||||
COPYING |
||||
------- |
||||
Copyright \(C) 2010 Nico Schottelius. Free use of this software is |
||||
granted under the terms of the GNU General Public License version 3 (GPLv3). |
||||
|
||||
-------------------------------------------------------------------------------- |
||||
|
||||
|
||||
## How cdist works |
||||
|
||||
### Exploring your system |
||||
|
||||
cdist analyses the system to apply the configuration on and |
||||
selects the right backends. You can use ***cdist-explore*** to |
||||
the results of the explore functions. |
||||
|
||||
### Applying the configuration |
||||
|
||||
cdist looks for the configuration to apply on the local host |
||||
and applies it using ***cdist-apply***. |
||||
|
||||
### Managing many hosts |
||||
|
||||
Whereas ***cdist-apply*** manages one host, ***cdist-deploy*** |
||||
applies the configuration on enabled hosts. |
||||
|
||||
## How to use cdist? |
||||
|
||||
0. Create a host specification (/etc/cdist/hosts/**hostname**) |
||||
0. Add functionalilty to add |
||||
0. Run ***cdist-apply*** |
||||
|
||||
|
||||
-------------------------------------------------------------------------------- |
||||
Simple stuff done by Unix[notm] |
||||
|
||||
- DSL: Shell! |
||||
- gives if, else and EVEN elsif for free! |
||||
- and case |
||||
- and and and |
||||
- and there's no os (solaris doesn't count) without a usable /bin/sh |
||||
- cdist defines what you can use |
||||
- you _can_ use os specific stuff |
||||
- but it's ugly and you shoot into your own foot |
||||
- "manifests" (use the same name here?) will be run/sourced |
||||
- inheritance possible via sourcing |
||||
- cdist-lib always preloaded |
||||
- library == functions? |
||||
- version control via git |
||||
- file distribution via ssh |
||||
- authentication via ssh |
||||
- dumb clients, similar to manifest compile in puppet |
||||
- clients just execute commands |
||||
- dependencies via make? |
||||
- how to ensure sigletons / conflicting definitions? |
||||
file { "/a": |
||||
ensure => present, |
||||
file { "/a": |
||||
ensure => absent, |
||||
- matching on explored items, not only on host name? |
||||
- match function in host? [optional] |
||||
- file source: |
||||
- relative to specification |
||||
- or absolute |
||||
|
||||
|
||||
-------------------------------------------------------------------------------- |
||||
Implementation |
||||
|
||||
"cdist-server" |
||||
-> called by cron? |
||||
-> no need to reimplement scheduling |
||||
"cdist-explore" (facter replacement) |
||||
-> running on the client |
||||
-------------------------------------------------------------------------------- |
||||
Requirements: |
||||
It MUST be incredible easy/dumb to add new types. |
||||
=> growable default types |
||||
|
||||
|
||||
-------------------------------------------------------------------------------- |
||||
|
||||
## TO DOC |
||||
|
||||
Before initial release, document: |
||||
|
||||
- how to add package backends |
||||
- how to write a minimal host manifest |
||||
- create library with all functions (and their parameters) |
||||
- cdist_package |
||||
- cdist_file |
||||
- cdist_dir |
||||
|
||||
- only do necessary work |
||||
- install packages only if not existent |
||||
- copy file only if different |
||||
|
||||
- how to write a module |
||||
- module function autoloading via *.sh |
||||
- module "manifest"? |
||||
- create functions in *.sh |
||||
- name functions "modulename_function" |
||||
module hellow |
||||
function kitty |
||||
=> hellow_kitty |
||||
- you are advised (not forced) to put files |
||||
to a subdirectory named "files" |
||||
|
||||
|
||||
|
Loading…
Reference in new issue