cdist/doc/man/cdist-design.text

87 lines
2.8 KiB
Text
Raw Permalink Normal View History

cdist-design(7)
===============
Nico Schottelius <nico-cdist--@--schottelius.org>
NAME
----
cdist-design - Design ideas for cdist
DESCRIPTION
-----------
When using cdist with the push principle, the execution tree looks likes this:
--------------------------------------------------------------------------------
% server
cdist-deploy-to(1) # main tool for deployment
cdist-config(1) # setup environment
cdist-build(1) # coordinates build process / dummy otherwise
cdist-preprocess(1) # fills up variables with content
cdist-explore(1) % client # explores client configuration
cdist-compile(1) # parses configuration,
# creates internal state in cconfig format,
# verifies configuration
cdist-link(1) # uses cconfig output, creates executable
cdist-remote-exec(1) # coordinates remote execution, dummy otherwise
cdist-transfer(1) # transfer executable to client
cdist-execute(1) % client # execute resulting executable
--------------------------------------------------------------------------------
Operation on the server is run as "cdist" user.
Operation on the client is run as "root" user.
When using cdist with the pull principle (configuration triggered by client):
--------------------------------------------------------------------------------
% client
cdist-trigger(1) <server-hostname> # connects to server
cdist-deploy-to(1) <client-hostname> % server: see above
--------------------------------------------------------------------------------
MERGE INTO ABOVE.....
## 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.
- 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,
=>=>>>>>>>>>>>>>>>> via cconfig
SEE ALSO
--------
cdist(7), 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).