move around documentation
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								3bbf032b41
							
						
					
				
			
			
				commit
				
					
						c223a4ac5c
					
				
			
		
					 7 changed files with 187 additions and 175 deletions
				
			
		
							
								
								
									
										6
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										6
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -1,3 +1,9 @@ | ||||||
|  | PREFIX=/usr | ||||||
|  | BINDIR=$(PREFIX}/bin | ||||||
|  | 
 | ||||||
|  | install: | ||||||
|  | 	cp bin/* $(BINDIR) | ||||||
|  | 
 | ||||||
| sync: | sync: | ||||||
| 	.rsync lyni@tablett:cdist | 	.rsync lyni@tablett:cdist | ||||||
| 	.rsync nicosc@free.ethz.ch:cdist | 	.rsync nicosc@free.ethz.ch:cdist | ||||||
|  |  | ||||||
							
								
								
									
										171
									
								
								README
									
										
									
									
									
								
							
							
						
						
									
										171
									
								
								README
									
										
									
									
									
								
							|  | @ -46,174 +46,3 @@ and is equipped with manpages. | ||||||
| ## How to use cdist | ## How to use cdist | ||||||
| 
 | 
 | ||||||
|     man cdist |     man cdist | ||||||
| 
 |  | ||||||
| -------------------------------------------------------------------------------- |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## 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*** |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ## What do I need [from puppet?] |  | ||||||
| 
 |  | ||||||
| ### Abstraction of package managers |  | ||||||
| 
 |  | ||||||
| I don't want to care about apt, rpm, yum, pacman, etc. I just |  | ||||||
| want to ensure, some package exists or does not exist. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ### Common tasks already done |  | ||||||
| 
 |  | ||||||
|    - [LIBRARY] All the helper types like  |  | ||||||
|       - file |  | ||||||
|       - ssh_keys |  | ||||||
|       - package |  | ||||||
|       - service |  | ||||||
|       - user |  | ||||||
| 
 |  | ||||||
| ### PORTABILITY |  | ||||||
|    - [PORTABILITY] clients for every unix |  | ||||||
|       - mostly ruby + facter in puppet |  | ||||||
| 
 |  | ||||||
| ### Other |  | ||||||
|    - Modules: Nice to put stuff together |  | ||||||
|       - and reuse |  | ||||||
|    - [CONDITIONS] facter is cool |  | ||||||
|    - the DSL |  | ||||||
|       - with many bugs |  | ||||||
|    - templates |  | ||||||
|    - Client/Server approach is nice to have |  | ||||||
|       - Clients only get the part of the documentation, that's |  | ||||||
|         relevant to them |  | ||||||
|    - detect impossible/unsafe things: |  | ||||||
|       - creating a file twice |  | ||||||
|       - installing and removing a package |  | ||||||
|       - and report location of occurence |  | ||||||
|          - parse afterwards? |  | ||||||
| 
 |  | ||||||
| -------------------------------------------------------------------------------- |  | ||||||
| what is puppet? [FOR ME] |  | ||||||
| 
 |  | ||||||
|    A configuration deployment assistant, |  | ||||||
|    a DSL that allows you define the objectives. |  | ||||||
|    A webserver with fileserver capabilities. |  | ||||||
|    A client based scheduled polling infrastructure. |  | ||||||
| 
 |  | ||||||
| -------------------------------------------------------------------------------- |  | ||||||
| What do I miss from puppet? |  | ||||||
| 
 |  | ||||||
|    - speed |  | ||||||
|    - elegance |  | ||||||
|    - clean design |  | ||||||
|    - documentation |  | ||||||
|    - the "no surprise" factor |  | ||||||
|    - easy to use "data memory" (i.e. external ressources) |  | ||||||
|    - easy integration into installation process |  | ||||||
|       - copy identity to master |  | ||||||
|    - multi master setups |  | ||||||
|    - development configurations / tests |  | ||||||
|    - editing of configuration files |  | ||||||
|       - similar to cfengine |  | ||||||
|    - replace bug squasher with bug avoidance |  | ||||||
|       - qmail did not need one either |  | ||||||
|    - push infrastructure |  | ||||||
|    - real / meaningful error messages |  | ||||||
| 
 |  | ||||||
| -------------------------------------------------------------------------------- |  | ||||||
| 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" |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								TODO
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								TODO
									
										
									
									
									
								
							|  | @ -1,2 +1,8 @@ | ||||||
| - find out where I left work :-) | - doc: | ||||||
| - create real todo |    - readme (cleanup, define) | ||||||
|  |    - cdist manpage (main manpage) | ||||||
|  |    - create todos from doc/internal/puppet-analysis | ||||||
|  | - cdist-deply-to | ||||||
|  |    - sync conf/{lib/,modules,host/$name} | ||||||
|  | - cdist-build-explorer| ssh localhost | ||||||
|  | -  | ||||||
|  |  | ||||||
|  | @ -26,7 +26,6 @@ | ||||||
| [ $# -eq 1 ] || __cdist_usage "target" | [ $# -eq 1 ] || __cdist_usage "target" | ||||||
| 
 | 
 | ||||||
| set -e | set -e | ||||||
| set -x |  | ||||||
| 
 | 
 | ||||||
| . cdist-preprocess "$1" | . cdist-preprocess "$1" | ||||||
| . cdist-compile "$1" | . cdist-compile "$1" | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| !/bin/sh | #!/bin/sh | ||||||
| # | # | ||||||
| # 2010 Nico Schottelius (nico-cdist at schottelius.org) | # 2010 Nico Schottelius (nico-cdist at schottelius.org) | ||||||
| # | # | ||||||
|  |  | ||||||
							
								
								
									
										66
									
								
								doc/internal/puppet-analysis
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								doc/internal/puppet-analysis
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,66 @@ | ||||||
|  | ## What do I need [from puppet?] | ||||||
|  | 
 | ||||||
|  | ### Abstraction of package managers | ||||||
|  | 
 | ||||||
|  | I don't want to care about apt, rpm, yum, pacman, etc. I just | ||||||
|  | want to ensure, some package exists or does not exist. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ### Common tasks already done | ||||||
|  | 
 | ||||||
|  |    - [LIBRARY] All the helper types like  | ||||||
|  |       - file | ||||||
|  |       - ssh_keys | ||||||
|  |       - package | ||||||
|  |       - service | ||||||
|  |       - user | ||||||
|  | 
 | ||||||
|  | ### PORTABILITY | ||||||
|  |    - [PORTABILITY] clients for every unix | ||||||
|  |       - mostly ruby + facter in puppet | ||||||
|  | 
 | ||||||
|  | ### Other | ||||||
|  |    - Modules: Nice to put stuff together | ||||||
|  |       - and reuse | ||||||
|  |    - [CONDITIONS] facter is cool | ||||||
|  |    - the DSL | ||||||
|  |       - with many bugs | ||||||
|  |    - templates | ||||||
|  |    - Client/Server approach is nice to have | ||||||
|  |       - Clients only get the part of the documentation, that's | ||||||
|  |         relevant to them | ||||||
|  |    - detect impossible/unsafe things: | ||||||
|  |       - creating a file twice | ||||||
|  |       - installing and removing a package | ||||||
|  |       - and report location of occurence | ||||||
|  |          - parse afterwards? | ||||||
|  | 
 | ||||||
|  | -------------------------------------------------------------------------------- | ||||||
|  | what is puppet? [FOR ME] | ||||||
|  | 
 | ||||||
|  |    A configuration deployment assistant, | ||||||
|  |    a DSL that allows you define the objectives. | ||||||
|  |    A webserver with fileserver capabilities. | ||||||
|  |    A client based scheduled polling infrastructure. | ||||||
|  | 
 | ||||||
|  | -------------------------------------------------------------------------------- | ||||||
|  | What do I miss from puppet? | ||||||
|  | 
 | ||||||
|  |    - speed | ||||||
|  |    - elegance | ||||||
|  |    - clean design | ||||||
|  |    - documentation | ||||||
|  |    - the "no surprise" factor | ||||||
|  |    - easy to use "data memory" (i.e. external ressources) | ||||||
|  |    - easy integration into installation process | ||||||
|  |       - copy identity to master | ||||||
|  |    - multi master setups | ||||||
|  |    - development configurations / tests | ||||||
|  |    - editing of configuration files | ||||||
|  |       - similar to cfengine | ||||||
|  |    - replace bug squasher with bug avoidance | ||||||
|  |       - qmail did not need one either | ||||||
|  |    - push infrastructure | ||||||
|  |    - real / meaningful error messages | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @ -31,3 +31,109 @@ COPYING | ||||||
| ------- | ------- | ||||||
| Copyright \(C) 2010 Nico Schottelius. Free use of this software is | Copyright \(C) 2010 Nico Schottelius. Free use of this software is | ||||||
| granted under the terms of the GNU General Public License version 3 (GPLv3). | 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue