forked from ungleich-public/cdist
		
	a lot of more thoughts
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
		
					parent
					
						
							
								fb3edeaa3d
							
						
					
				
			
			
				commit
				
					
						dbffd1404c
					
				
			
		
					 1 changed files with 76 additions and 0 deletions
				
			
		| 
						 | 
					@ -41,6 +41,9 @@ Style
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   __type <id> --option1 <arg1> 
 | 
					   __type <id> --option1 <arg1> 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   <id> = everything your filesystem permits, but may not start with a period (".").
 | 
				
			||||||
 | 
					   If <id> == ., it setups the standard attributes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
seems to be quite good usable. cdist can easily -----parse--- this.
 | 
					seems to be quite good usable. cdist can easily -----parse--- this.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Nope. We don't parse. We let the shell execute.
 | 
					Nope. We don't parse. We let the shell execute.
 | 
				
			||||||
| 
						 | 
					@ -102,3 +105,76 @@ cdist installation / paths:
 | 
				
			||||||
cdist environment:
 | 
					cdist environment:
 | 
				
			||||||
   $__loaded_from                # path where $type has been loaded from
 | 
					   $__loaded_from                # path where $type has been loaded from
 | 
				
			||||||
   PATH=$CDISTUSERTYPEDIR:$CDISTSYSTYPEDIR:$PATH
 | 
					   PATH=$CDISTUSERTYPEDIR:$CDISTSYSTYPEDIR:$PATH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					Recommendation (not a must):
 | 
				
			||||||
 | 
					   Put helpers for types into the typedir/.$typename
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   All types should be prefixed by "__" to prevent clashes with the system
 | 
				
			||||||
 | 
					   binaries.
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					Type commands (__bla) could get generated by cdist and cdist could use that
 | 
				
			||||||
 | 
					to generate the actual cconfig part.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This leads up to the next section
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cdist exec steps:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   - check for valid types, abort if user (re-)defined system types
 | 
				
			||||||
 | 
					   - generate __type binaries (aliases?), which contains cdist logic
 | 
				
			||||||
 | 
					     to analyse types and check for correct arguments
 | 
				
			||||||
 | 
					   - execute /etc/cdist/config/init (MAIN CONFIG) which in turn
 | 
				
			||||||
 | 
					     calls __type binaries
 | 
				
			||||||
 | 
					   - __type binaries (which are all the same, multicall!) generate
 | 
				
			||||||
 | 
					     cconfig
 | 
				
			||||||
 | 
					   - Run real type/init binaries with respective cconfig dir as path,
 | 
				
			||||||
 | 
					     which must generate shellcode to be executed.
 | 
				
			||||||
 | 
					   - Create the temporary shellscript containing all the code and execute
 | 
				
			||||||
 | 
					     it on the client.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					Support metaargs like --depends?
 | 
				
			||||||
 | 
					   If so, they need to be forbidden for types.
 | 
				
			||||||
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					Shell code generator:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   - use subshells for each shellcodeblock
 | 
				
			||||||
 | 
					   - create one main function (to ensure transfer is complete)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cdist_apply_$hostname()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   # repeat this block for every type/id defined
 | 
				
			||||||
 | 
					   echo "Executing block from $type_$id ..."
 | 
				
			||||||
 | 
					   (
 | 
				
			||||||
 | 
					      code
 | 
				
			||||||
 | 
					   )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cdist_apply_$hostname
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue