Merge remote branch 'nico/master'
This commit is contained in:
		
				commit
				
					
						abaa79e19a
					
				
			
		
					 21 changed files with 156 additions and 175 deletions
				
			
		| 
						 | 
					@ -3,21 +3,12 @@ cat << eof
 | 
				
			||||||
Hey hackers,
 | 
					Hey hackers,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
this README is for you, for those who want to dig into cdist, hack it or try
 | 
					this README is for you, for those who want to dig into cdist, hack it or try
 | 
				
			||||||
to get a deeper understanding.
 | 
					to get a deeper understanding. Please read doc/man/cdist-hacker.text.
 | 
				
			||||||
 | 
					 | 
				
			||||||
A lot of documentation is still missing, but running cdist-quickstart should
 | 
					 | 
				
			||||||
give you an impression of how cdist works.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
I hope you have a lot of fun with cdist, because it was also a lot of fun to
 | 
					I hope you have a lot of fun with cdist, because it was also a lot of fun to
 | 
				
			||||||
develop it!
 | 
					develop it!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   -- Nico, 20110304
 | 
					   -- Nico, 20110324
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Conventions
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- All variables exported by cdist are prefixed with a double underscore (__)
 | 
					 | 
				
			||||||
- All cdist-internal variables are prefixed with __cdist_ and are generally not exported.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Running cdist when developing
 | 
					## Running cdist when developing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										17
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										17
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
					@ -28,6 +28,7 @@ MANSRC=$(MANDIR)/cdist.text						\
 | 
				
			||||||
   $(MANDIR)/cdist-explorer-run-global.text 	\
 | 
					   $(MANDIR)/cdist-explorer-run-global.text 	\
 | 
				
			||||||
   $(MANDIR)/cdist-deploy-to.text 				\
 | 
					   $(MANDIR)/cdist-deploy-to.text 				\
 | 
				
			||||||
	$(MANDIR)/cdist-explorer.text					\
 | 
						$(MANDIR)/cdist-explorer.text					\
 | 
				
			||||||
 | 
						$(MANDIR)/cdist-hacker.text  					\
 | 
				
			||||||
	$(MANDIR)/cdist-manifest.text 				\
 | 
						$(MANDIR)/cdist-manifest.text 				\
 | 
				
			||||||
	$(MANDIR)/cdist-manifest-run.text			\
 | 
						$(MANDIR)/cdist-manifest-run.text			\
 | 
				
			||||||
   $(MANDIR)/cdist-manifest-run-all.text	 	\
 | 
					   $(MANDIR)/cdist-manifest-run-all.text	 	\
 | 
				
			||||||
| 
						 | 
					@ -62,7 +63,8 @@ all:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
man: doc/man/.marker
 | 
					man: doc/man/.marker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
doc/man/.marker: $(MANDIR)/cdist-reference.text
 | 
					# FIXME: also depends on conf/type/*/man.text!
 | 
				
			||||||
 | 
					doc/man/.marker: manmove
 | 
				
			||||||
	touch $@
 | 
						touch $@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Manual from core
 | 
					# Manual from core
 | 
				
			||||||
| 
						 | 
					@ -74,7 +76,7 @@ mantype:
 | 
				
			||||||
	for man in conf/type/*/man.text; do $(A2XM) $$man; $(A2XH) $$man; done
 | 
						for man in conf/type/*/man.text; do $(A2XM) $$man; $(A2XH) $$man; done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Move into manpath directories
 | 
					# Move into manpath directories
 | 
				
			||||||
manmove: mantype mancore
 | 
					manmove: mantype mancore $(MANGENERATED)
 | 
				
			||||||
	for manpage in $(MANDIR)/*.[1-9] conf/type/*/*.7; do \
 | 
						for manpage in $(MANDIR)/*.[1-9] conf/type/*/*.7; do \
 | 
				
			||||||
		cat=$${manpage##*.}; \
 | 
							cat=$${manpage##*.}; \
 | 
				
			||||||
		mandir=$(MANDIR)/man$$cat; \
 | 
							mandir=$(MANDIR)/man$$cat; \
 | 
				
			||||||
| 
						 | 
					@ -90,15 +92,13 @@ manmove: mantype mancore
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Reference depends on conf/type/*/man.text - HOWTO with posix make?
 | 
					# Reference depends on conf/type/*/man.text - HOWTO with posix make?
 | 
				
			||||||
$(MANDIR)/cdist-reference.text: manmove $(MANDIR)/cdist-reference.text.sh
 | 
					$(MANDIR)/cdist-reference.text: $(MANDIR)/cdist-reference.text.sh
 | 
				
			||||||
	$(MANDIR)/cdist-reference.text.sh
 | 
						$(MANDIR)/cdist-reference.text.sh
 | 
				
			||||||
	$(A2XM) $(MANDIR)/cdist-reference.text
 | 
						$(A2XM) $(MANDIR)/cdist-reference.text
 | 
				
			||||||
	$(A2XH) $(MANDIR)/cdist-reference.text
 | 
						$(A2XH) $(MANDIR)/cdist-reference.text
 | 
				
			||||||
	# Move us to the destination as well
 | 
					 | 
				
			||||||
	make manmove
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	rm -rf doc/man/*.html doc/man/*.[1-9] doc/man/man[1-9] $(MANGENERATED)
 | 
						rm -rf doc/man/html/* doc/man/*.[1-9] doc/man/man[1-9] $(MANGENERATED)
 | 
				
			||||||
	rm -f conf/type/*/man.html
 | 
						rm -f conf/type/*/man.html
 | 
				
			||||||
	rm -rf doc/html
 | 
						rm -rf doc/html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -114,10 +114,11 @@ test:
 | 
				
			||||||
	# gentoo
 | 
						# gentoo
 | 
				
			||||||
	.rsync nicosc@ru3.inf.ethz.ch:cdist
 | 
						.rsync nicosc@ru3.inf.ethz.ch:cdist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#web: manmove
 | 
					web: man
 | 
				
			||||||
web:
 | 
					 | 
				
			||||||
	cp README $(WEBDIR)/$(WEBPAGE)
 | 
						cp README $(WEBDIR)/$(WEBPAGE)
 | 
				
			||||||
 | 
						rm -rf $(WEBDIR)/$(WEBBASE)/man && mkdir $(WEBDIR)/$(WEBBASE)/man
 | 
				
			||||||
	cp -r doc/html/* $(WEBDIR)/$(WEBBASE)/man
 | 
						cp -r doc/html/* $(WEBDIR)/$(WEBBASE)/man
 | 
				
			||||||
 | 
						cd $(WEBDIR) && git add $(WEBBASE)/man
 | 
				
			||||||
	cd $(WEBDIR) && git commit -m "cdist update" $(WEBBASE) $(WEBPAGE)
 | 
						cd $(WEBDIR) && git commit -m "cdist update" $(WEBBASE) $(WEBPAGE)
 | 
				
			||||||
	cd $(WEBDIR) && make pub
 | 
						cd $(WEBDIR) && make pub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										11
									
								
								README
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								README
									
										
									
									
									
								
							| 
						 | 
					@ -120,13 +120,14 @@ how to use cdist.
 | 
				
			||||||
There are at least the following branches available:
 | 
					There are at least the following branches available:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 * master: the development branch
 | 
					 * master: the development branch
 | 
				
			||||||
 * 1.3: Support for local and remote code execution (current stable)
 | 
					 * 1.4: Support for redefiniton of objects (if equal)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Old versions:
 | 
					Old versions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 * 1.0: First official release
 | 
					 * 1.3: Support for local and remote code execution (current stable)
 | 
				
			||||||
 * 1.1: __file to __file, __directory, __link migration
 | 
					 | 
				
			||||||
 * 1.2: Dependencies supported
 | 
					 * 1.2: Dependencies supported
 | 
				
			||||||
 | 
					 * 1.1: __file to __file, __directory, __link migration
 | 
				
			||||||
 | 
					 * 1.0: First official release
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Other branches may be available for features or bugfixes, but they
 | 
					Other branches may be available for features or bugfixes, but they
 | 
				
			||||||
may vanish at any point. To select a specific branch use
 | 
					may vanish at any point. To select a specific branch use
 | 
				
			||||||
| 
						 | 
					@ -156,6 +157,10 @@ If you stay on a version branche (i.e. 1.0, 1.1., ...), nothing should break.
 | 
				
			||||||
The master branch on the other hand is the development branch and may not be
 | 
					The master branch on the other hand is the development branch and may not be
 | 
				
			||||||
working, break your setup or eat the tree in your garden.
 | 
					working, break your setup or eat the tree in your garden.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Upgrading from 1.3 to 1.4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					No incompatiblities.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Upgrading from 1.2 to 1.3
 | 
					### Upgrading from 1.2 to 1.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Rename **gencode** of every type to **gencode-remote**.
 | 
					Rename **gencode** of every type to **gencode-remote**.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,12 +22,9 @@
 | 
				
			||||||
# 
 | 
					# 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
. cdist-config
 | 
					. cdist-config
 | 
				
			||||||
[ $# -eq 3 ] || __cdist_usage "<object dir> <object> <type>"
 | 
					[ $# -eq 2 ] || __cdist_usage "<object> <type>"
 | 
				
			||||||
set -ue
 | 
					set -ue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# This variable MUST be exactly like this - see __cdist_object_dir
 | 
					 | 
				
			||||||
__cdist_out_object_dir="$1"; shift
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
object="$1"; shift
 | 
					object="$1"; shift
 | 
				
			||||||
__cdist_gencode_type="$1"; shift
 | 
					__cdist_gencode_type="$1"; shift
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,7 +47,7 @@ echo "Checking code-${__cdist_gencode_type} for $object ..."
 | 
				
			||||||
if [ -f "$require" ]; then
 | 
					if [ -f "$require" ]; then
 | 
				
			||||||
   while read requirement; do
 | 
					   while read requirement; do
 | 
				
			||||||
      echo "Requiring  dependency $requirement for $object ..."
 | 
					      echo "Requiring  dependency $requirement for $object ..."
 | 
				
			||||||
      cdist-code-run "$__cdist_out_object_dir" "$requirement" "$__cdist_gencode_type"
 | 
					      cdist-code-run "$requirement" "$__cdist_gencode_type"
 | 
				
			||||||
   done < "$require"
 | 
					   done < "$require"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,14 +38,13 @@ while [ $# -ge 1 ]; do
 | 
				
			||||||
   object="$1"; shift
 | 
					   object="$1"; shift
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   # Code local
 | 
					   # Code local
 | 
				
			||||||
   cdist-code-run "$__cdist_out_object_dir" "$object" \
 | 
					   export __cdist_out_object_dir="$__cdist_out_object_dir"
 | 
				
			||||||
      "${__cdist_name_gencode_local}"                 \
 | 
					   cdist-code-run "$object" "${__cdist_name_gencode_local}"                 \
 | 
				
			||||||
         || __cdist_exit_err "Remote code failed for $object"
 | 
					         || __cdist_exit_err "Local code failed for $object"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   # Code remote
 | 
					   # Code remote
 | 
				
			||||||
   cdist-run-remote "$__cdist_target_host"                                 \
 | 
					   cdist-run-remote "$__cdist_target_host"                                       \
 | 
				
			||||||
      "__cdist_out_object_dir=\"$__cdist_remote_out_object_base_dir\""     \
 | 
					      "export __cdist_out_object_dir=\"$__cdist_remote_out_object_base_dir\";"   \
 | 
				
			||||||
      "cdist-code-run" "${__cdist_remote_out_object_base_dir}" "$object"   \
 | 
					      "cdist-code-run" "$object" "${__cdist_name_gencode_remote}"                \
 | 
				
			||||||
      "${__cdist_name_gencode_remote}"                                     \
 | 
					 | 
				
			||||||
      || __cdist_exit_err "Remote code failed for $object"
 | 
					      || __cdist_exit_err "Remote code failed for $object"
 | 
				
			||||||
done < "$__cdist_tmp_file"
 | 
					done < "$__cdist_tmp_file"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,6 +64,7 @@ while [ "$__cdist_new_objects_created" = "y"  ]; do
 | 
				
			||||||
               export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")"
 | 
					               export $__cdist_name_var_type="$(__cdist_type_dir "$__cdist_type")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
               cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest"
 | 
					               cdist-manifest-run "$__cdist_target_host" "$__cdist_manifest"
 | 
				
			||||||
 | 
					               __cdist_new_objects_created=y
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
               __cdist_exit_err "${__cdist_manifest} needs to be executable."
 | 
					               __cdist_exit_err "${__cdist_manifest} needs to be executable."
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,4 +28,4 @@ set -ue
 | 
				
			||||||
__cdist_target_host="$1"; shift
 | 
					__cdist_target_host="$1"; shift
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ssh "${__cdist_remote_user}@${__cdist_target_host}"   \
 | 
					ssh "${__cdist_remote_user}@${__cdist_target_host}"   \
 | 
				
			||||||
   "PATH=\"${__cdist_remote_bin_dir}:\$PATH\"" "$@"
 | 
					   "export PATH=\"${__cdist_remote_bin_dir}:\$PATH\";" "$@"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -71,11 +71,10 @@ __cdist_out_object_dir_orig="$__cdist_out_object_dir"
 | 
				
			||||||
# Store to tmp now
 | 
					# Store to tmp now
 | 
				
			||||||
__cdist_out_object_dir="$__cdist_tmp_dir"
 | 
					__cdist_out_object_dir="$__cdist_tmp_dir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
					__cdist_new_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Record source
 | 
					# Initialise object
 | 
				
			||||||
mkdir -p "${__cdist_object_dir}"
 | 
					mkdir -p "${__cdist_new_object_dir}"
 | 
				
			||||||
__cdist_object_source_add "${__cdist_object_dir}"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Record parameter
 | 
					# Record parameter
 | 
				
			||||||
__cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object_self")"
 | 
					__cdist_parameter_dir="$(__cdist_object_parameter_dir "$__cdist_object_self")"
 | 
				
			||||||
| 
						 | 
					@ -147,15 +146,16 @@ done
 | 
				
			||||||
# Restore original destination
 | 
					# Restore original destination
 | 
				
			||||||
__cdist_out_object_dir="$__cdist_out_object_dir_orig"
 | 
					__cdist_out_object_dir="$__cdist_out_object_dir_orig"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__cdist_new_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
					__cdist_object_dir="$(__cdist_object_dir "$__cdist_object_self")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# If the object already exists and is exactly the same, merge it. Otherwise fail.
 | 
					# If the object already exists and is exactly the same, merge it. Otherwise fail.
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
if [ -e "${__cdist_new_object_dir}" ]; then
 | 
					if [ -e "${__cdist_object_dir}" ]; then
 | 
				
			||||||
   # Allow diff to fail
 | 
					   # Allow diff to fail
 | 
				
			||||||
   set +e
 | 
					   set +e
 | 
				
			||||||
   diff -ru "${__cdist_object_dir}" "${__cdist_new_object_dir}" \
 | 
					   diff -ru "${__cdist_new_object_dir}/${__cdist_name_parameter}" \
 | 
				
			||||||
 | 
					      "${__cdist_object_dir}/${__cdist_name_parameter}" \
 | 
				
			||||||
      > "$__cdist_tmp_file"; ret=$?
 | 
					      > "$__cdist_tmp_file"; ret=$?
 | 
				
			||||||
   set -e
 | 
					   set -e
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
| 
						 | 
					@ -164,14 +164,11 @@ if [ -e "${__cdist_new_object_dir}" ]; then
 | 
				
			||||||
      exec >&2
 | 
					      exec >&2
 | 
				
			||||||
      echo "${__cdist_object_self} already exists differently."
 | 
					      echo "${__cdist_object_self} already exists differently."
 | 
				
			||||||
      echo "Recorded source(s):"
 | 
					      echo "Recorded source(s):"
 | 
				
			||||||
      __cdist_object_source "${__cdist_new_object_dir}"
 | 
					      __cdist_object_source "${__cdist_object_dir}"
 | 
				
			||||||
      echo "Differences:"
 | 
					      echo "Differences:"
 | 
				
			||||||
      cat "$__cdist_tmp_file"
 | 
					      cat "$__cdist_tmp_file"
 | 
				
			||||||
      __cdist_exit_err "Aborting due to object conflict."
 | 
					      __cdist_exit_err "Aborting due to object conflict."
 | 
				
			||||||
   fi
 | 
					   fi
 | 
				
			||||||
 | 
					 | 
				
			||||||
   # Add ourselves, if we're compatible
 | 
					 | 
				
			||||||
   __cdist_object_source_add "${__cdist_new_object_dir}"
 | 
					 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
   #
 | 
					   #
 | 
				
			||||||
   # Move object into tree:
 | 
					   # Move object into tree:
 | 
				
			||||||
| 
						 | 
					@ -179,5 +176,8 @@ else
 | 
				
			||||||
   #
 | 
					   #
 | 
				
			||||||
   __cdist_new_object_base_dir="$(__cdist_object_base_dir "$__cdist_object_self")"
 | 
					   __cdist_new_object_base_dir="$(__cdist_object_base_dir "$__cdist_object_self")"
 | 
				
			||||||
   mkdir -p "$__cdist_new_object_base_dir"
 | 
					   mkdir -p "$__cdist_new_object_base_dir"
 | 
				
			||||||
   mv "$__cdist_object_dir"  "$__cdist_new_object_base_dir"
 | 
					   mv "$__cdist_new_object_dir"  "$__cdist_new_object_base_dir"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add "I was here message"
 | 
				
			||||||
 | 
					__cdist_object_source_add "${__cdist_object_dir}"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
cdist-type__apt_ppa(7)
 | 
					cdist-type__apt_ppa(7)
 | 
				
			||||||
==========================
 | 
					======================
 | 
				
			||||||
Steven Armstrong <steven-cdist--@--armstrong.cc>
 | 
					Steven Armstrong <steven-cdist--@--armstrong.cc>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,8 +27,3 @@ require="__package/python-software-properties" \
 | 
				
			||||||
   --source "$__type/files/remove-apt-repository" \
 | 
					   --source "$__type/files/remove-apt-repository" \
 | 
				
			||||||
   --mode 0755
 | 
					   --mode 0755
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# FIXME: rewrite to use $__self once that exists
 | 
					 | 
				
			||||||
# FIXME: only run if something changed. currently working arround this in
 | 
					 | 
				
			||||||
#    __apt_update_index/gencode-remote
 | 
					 | 
				
			||||||
require="__apt_ppa/$__object_id" __apt_update_index
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,35 +0,0 @@
 | 
				
			||||||
#!/bin/sh
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 2011 Steven Armstrong (steven-cdist at armstrong.cc)
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This file is part of cdist.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
# it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
# the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
# (at your option) any later version.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# cdist is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
# GNU General Public License for more details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# BIG FAT FIXME: there must be a better way to do this!
 | 
					 | 
				
			||||||
tmpdir=$(mktemp -d)
 | 
					 | 
				
			||||||
cleanup() {
 | 
					 | 
				
			||||||
   rm -rf "$tmpdir"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
trap cleanup EXIT
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
should="$tmpdir/should"
 | 
					 | 
				
			||||||
is="$tmpdir/is"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
find "$__global/object/__apt_ppa" -path "*.cdist/parameter/state" | xargs cat > "$should"
 | 
					 | 
				
			||||||
find "$__global/object/__apt_ppa" -path "*.cdist/explorer/state" | xargs cat > "$is"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff -ru "$is" "$should" || echo apt-get update
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,44 +0,0 @@
 | 
				
			||||||
cdist-type__apt_update_index(7)
 | 
					 | 
				
			||||||
==========================
 | 
					 | 
				
			||||||
Steven Armstrong <steven-cdist--@--armstrong.cc>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
NAME
 | 
					 | 
				
			||||||
----
 | 
					 | 
				
			||||||
cdist-type__apt_update_index - resynchronize the apt package index
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DESCRIPTION
 | 
					 | 
				
			||||||
-----------
 | 
					 | 
				
			||||||
This cdist type allows you to resynchronize the package index files from their
 | 
					 | 
				
			||||||
sources. In other words, it runs `apt-get update`.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
FIXME: currently hard coded to work together with the __apt_ppa type
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
REQUIRED PARAMETERS
 | 
					 | 
				
			||||||
-------------------
 | 
					 | 
				
			||||||
None.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
OPTIONAL PARAMETERS
 | 
					 | 
				
			||||||
-------------------
 | 
					 | 
				
			||||||
None.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
EXAMPLES
 | 
					 | 
				
			||||||
--------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
__apt_update_index
 | 
					 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SEE ALSO
 | 
					 | 
				
			||||||
--------
 | 
					 | 
				
			||||||
- cdist-type(7)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
COPYING
 | 
					 | 
				
			||||||
-------
 | 
					 | 
				
			||||||
Copyright \(C) 2011 Steven Armstrong. Free use of this software is
 | 
					 | 
				
			||||||
granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
1.4.0:
 | 
					1.4.0: 2011-03-24
 | 
				
			||||||
	* Add --recursive to __directory
 | 
						* Add --recursive to __directory
 | 
				
			||||||
	* Move cdist generated stuff to .cdist of object
 | 
						* Move cdist generated stuff to .cdist of an object
 | 
				
			||||||
	* Allow objects to be redefined
 | 
						* Allow objects to be redefined
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1.3.2: 2011-03-21
 | 
					1.3.2: 2011-03-21
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										12
									
								
								doc/dev/todo/TAKEME
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								doc/dev/todo/TAKEME
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					The following list of todos has not been assigned to any developer.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Feel free to pick one:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Types to be written/extended:
 | 
				
			||||||
 | 
					   - __ssh-keys (host/user)
 | 
				
			||||||
 | 
					   - Think about __service - necessary?
 | 
				
			||||||
 | 
					   - __file_edit
 | 
				
			||||||
 | 
					      - regexp replace (can probably cover all?)
 | 
				
			||||||
 | 
					         -> aka sed.
 | 
				
			||||||
 | 
					   - __cron
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,23 @@
 | 
				
			||||||
Document redefine behaviour
 | 
					Core:
 | 
				
			||||||
release cdist 1.4.0
 | 
					   - support $__self = relative_type/object_id
 | 
				
			||||||
   perhaps include __self
 | 
					   - cache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Cache:
 | 
				
			||||||
 | 
					   Assume you want to configure stuff one host ("monitor node"),
 | 
				
			||||||
 | 
					   depending on the configuration of other hosts ("cluster nodes").
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   For instance, the monitor host would like to know,
 | 
				
			||||||
 | 
					   which hosts are configured with the provider
 | 
				
			||||||
 | 
					   "apache" and option --start true.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   This requires the monitor node to be able to
 | 
				
			||||||
 | 
					   query all other configured nodes. It can't
 | 
				
			||||||
 | 
					   ask for all hosts, because cdist does not
 | 
				
			||||||
 | 
					   know which hosts are configured or may exist.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Example implementation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   If cdist keeps ("caches") the configuration of every
 | 
				
			||||||
 | 
					   node it configures, each new node can query the
 | 
				
			||||||
 | 
					   cache for existing nodes that acquired the given
 | 
				
			||||||
 | 
					   configuration.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,35 +0,0 @@
 | 
				
			||||||
Core:
 | 
					 | 
				
			||||||
   - allow redefine object, if everything same
 | 
					 | 
				
			||||||
   - support $__self = relative_type/object_id
 | 
					 | 
				
			||||||
   - .cdist
 | 
					 | 
				
			||||||
   - cache
 | 
					 | 
				
			||||||
   - display changes if object cannot be merged to user
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Cache:
 | 
					 | 
				
			||||||
   Assume you want to configure stuff one host ("monitor node"),
 | 
					 | 
				
			||||||
   depending on the configuration of other hosts ("cluster nodes").
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   For instance, the monitor host would like to know,
 | 
					 | 
				
			||||||
   which hosts are configured with the provider
 | 
					 | 
				
			||||||
   "apache" and option --start true.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   This requires the monitor node to be able to
 | 
					 | 
				
			||||||
   query all other configured nodes. It can't
 | 
					 | 
				
			||||||
   ask for all hosts, because cdist does not
 | 
					 | 
				
			||||||
   know which hosts are configured or may exist.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   Example implementation
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   If cdist keeps ("caches") the configuration of every
 | 
					 | 
				
			||||||
   node it configures, each new node can query the
 | 
					 | 
				
			||||||
   cache for existing nodes that acquired the given
 | 
					 | 
				
			||||||
   configuration.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Types to be written/extended:
 | 
					 | 
				
			||||||
   - __ssh-keys (host/user)
 | 
					 | 
				
			||||||
   - __service
 | 
					 | 
				
			||||||
   - __file_edit
 | 
					 | 
				
			||||||
      - regexp replace (can probably cover all?)
 | 
					 | 
				
			||||||
         -> aka sed.
 | 
					 | 
				
			||||||
   - __cron
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@ in csh variants (csh, tcsh):
 | 
				
			||||||
eval `./bin/cdist-env`
 | 
					eval `./bin/cdist-env`
 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For bourne shell, the is also a shorter version:
 | 
					For bourne shell, there is also a shorter version:
 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
. ./bin/cdist-env
 | 
					. ./bin/cdist-env
 | 
				
			||||||
--------------------------------------------------------------------------------
 | 
					--------------------------------------------------------------------------------
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										73
									
								
								doc/man/cdist-hacker.text
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								doc/man/cdist-hacker.text
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,73 @@
 | 
				
			||||||
 | 
					cdist-hacker(7)
 | 
				
			||||||
 | 
					===============
 | 
				
			||||||
 | 
					Nico Schottelius <nico-cdist--@--schottelius.org>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-hacker - How to get (stuff) into cdist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WELCOME
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Welcome dear hacker! I invite you to a tour of pointers to
 | 
				
			||||||
 | 
					get into the usable configuration mangament system, cdist.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The first thing to know is probably that cdist is brought to
 | 
				
			||||||
 | 
					you by people who care about how code looks like and who think
 | 
				
			||||||
 | 
					twice before merging or implementing a feature: Less features
 | 
				
			||||||
 | 
					with good usability are far better than the opposite.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UNDERSTANDING CDIST INTERNALS
 | 
				
			||||||
 | 
					-----------------------------
 | 
				
			||||||
 | 
					IF you are interested in how cdist internally works, you can open
 | 
				
			||||||
 | 
					bin/cdist-config and bin/cdist-deploy-to in your favorite editor and
 | 
				
			||||||
 | 
					read the scripts bin/cdist-deploy-to calls. The magnificent HACKERS_README
 | 
				
			||||||
 | 
					may be of great help as well.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CODING CONVENTIONS (CORE)
 | 
				
			||||||
 | 
					-------------------------
 | 
				
			||||||
 | 
					- All variables exported by cdist are prefixed with a double underscore (__)
 | 
				
			||||||
 | 
					- All cdist-internal variables are prefixed with __cdist_ and are generally not exported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HOW TO SUBMIT STUFF FOR INCLUSION INTO UPSTREAM CDIST
 | 
				
			||||||
 | 
					-----------------------------------------------------
 | 
				
			||||||
 | 
					If you did some cool changes to cdist, which you value as a benefit for
 | 
				
			||||||
 | 
					everybody using cdist, you're welcome to propose inclusion into upstream.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					There are though some requirements to ensure your changes don't break others
 | 
				
			||||||
 | 
					work nor kill the authors brain:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Code submission must be done via git
 | 
				
			||||||
 | 
					- Code to be included should be branched of the upstream "master" branch
 | 
				
			||||||
 | 
					   - Exception: Bugfixes to a version branch
 | 
				
			||||||
 | 
					- Code submissions must be in your master branch
 | 
				
			||||||
 | 
					   - Exception: If you only want a comment on your code, but not an inclusion.
 | 
				
			||||||
 | 
					- Do not add conf/manifest/init - This file should only be touched in your
 | 
				
			||||||
 | 
					  private branch!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					As soon as your work meets these requirements, you can contact me
 | 
				
			||||||
 | 
					(IRC, Mailinglist, Phone, RFC 1149) and I'll check your code before
 | 
				
			||||||
 | 
					including it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HOW TO SUBMIT A NEW TYPE
 | 
				
			||||||
 | 
					------------------------
 | 
				
			||||||
 | 
					Submitting a type works as described above, with the additional requirement
 | 
				
			||||||
 | 
					that a corresponding manpage named man.text in asciidoc format with
 | 
				
			||||||
 | 
					the manpage-name "cdist-type__NAME" is included in the type directory
 | 
				
			||||||
 | 
					AND asciidoc is able to compile it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					- cdist(7)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2011 Nico Schottelius. Free use of this software is
 | 
				
			||||||
 | 
					granted under the terms of the GNU General Public License version 3 (GPLv3).
 | 
				
			||||||
| 
						 | 
					@ -15,8 +15,8 @@ host as well as to define which configurations should be applied within a
 | 
				
			||||||
type. Manifests are executed locally and the resulting objects are stored in
 | 
					type. Manifests are executed locally and the resulting objects are stored in
 | 
				
			||||||
an internal database.
 | 
					an internal database.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The same object can be redefined in multiple different manifests as long as it is
 | 
					The same object can be redefined in multiple different manifests as long as
 | 
				
			||||||
exactly the same, that is, all its parameters are equal.
 | 
					the parameters are exactly the same.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
In general, manifests are used to define which types are used depending
 | 
					In general, manifests are used to define which types are used depending
 | 
				
			||||||
on given conditions.
 | 
					on given conditions.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,6 +32,7 @@ SEE ALSO
 | 
				
			||||||
- Website: http://www.nico.schottelius.org/cdist/[]
 | 
					- Website: http://www.nico.schottelius.org/cdist/[]
 | 
				
			||||||
- cdist-best-practise(7)
 | 
					- cdist-best-practise(7)
 | 
				
			||||||
- cdist-deploy-to(1)
 | 
					- cdist-deploy-to(1)
 | 
				
			||||||
 | 
					- cdist-hacker(7)
 | 
				
			||||||
- cdist-manifest(7)
 | 
					- cdist-manifest(7)
 | 
				
			||||||
- cdist-quickstart(1)
 | 
					- cdist-quickstart(1)
 | 
				
			||||||
- cdist-type(7)
 | 
					- cdist-type(7)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue