From 097e2cb303139d281e6ae4b3f8e6c61871460136 Mon Sep 17 00:00:00 2001
From: Nico Schottelius <nico@kr.ethz.ch>
Date: Sun, 27 Feb 2011 14:27:23 +0100
Subject: [PATCH] continue on cdist-quickstart

Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
---
 bin/cdist-quickstart  | 91 +++++++++++++++++++++++++++++++++++++------
 doc/dev/todo/niconext |  1 +
 2 files changed, 81 insertions(+), 11 deletions(-)

diff --git a/bin/cdist-quickstart b/bin/cdist-quickstart
index 9fc65641..08122a39 100755
--- a/bin/cdist-quickstart
+++ b/bin/cdist-quickstart
@@ -26,6 +26,7 @@ set -eu
 
 banner="cdist-quickstart>"
 continue="Press enter to continue or ctrl-c to abort."
+create_continue="Press enter to create the described files/directories"
 
 __prompt()
 {
@@ -33,33 +34,101 @@ __prompt()
    read answer
 }
 
+################################################################################
+# Intro
+#
 cat << eof
 $banner cdist version $__cdist_version
 
 Welcome to the interactive guide to cdist!
 This is the interactive tutorial and beginners help for cdist.
 
+If you would like to run this tutorial completly without root priveliges,
+setup the variables __cdist_conf_dir to point to a writable locaction
+(i.e. $HOME/cdist-config).
 
 eof
 __prompt "$continue"
 
+################################################################################
+# /etc/cdist via root
+#
 cat << eof
-
 To make any use of cdist, we need to create the configuration base, which
-can normally be found below ${__cdist_conf_dir}:
+can normally be found below ${__cdist_conf_dir}. As cdist does not need
+any root priveliges normally, it is recommended that you create this
+directory as root and change the owner to a dedicated user (for instance
+cdist).
 
-${__cdist_explorer_dir}: Contains explorer, which explore the target
-${__cdist_manifest_dir}: Contains manifests which define types being used
-${__cdist_manifest_init}: The first manifest executed (i.e. cdist entry point)
-${__cdist_type_dir}: Contains types
+MANUAL STEP:
+
+   - Become root: su -
+   - Create ${__cdist_conf_dir}: mkdir ${__cdist_conf_dir}
+   - Change owner to $USER: chown $USER ${__cdist_conf_dir}
 
 eof
 __prompt "$continue"
 
+################################################################################
+# Basic directories
+#
+cat << eof
+Now we need to create some basic directories:
+
+   - ${__cdist_explorer_dir}: Contains explorer, which explore the target
+   - ${__cdist_manifest_dir}: Contains manifests which define types being used
+   - ${__cdist_type_dir}: Contains types
+
+eof
+__prompt "$create_continue"
+
 set -x
-mkdir ${__cdist_conf_dir}
-mkdir ${__cdist_explorer_dir}
-mkdir ${__cdist_manifest_dir}
-touch ${__cdist_manifest_init}
-mkdir ${__cdist_type_dir}
+mkdir -p ${__cdist_explorer_dir}
+mkdir -p ${__cdist_manifest_dir}
+mkdir -p ${__cdist_type_dir}
 set +x
+
+################################################################################
+# create manifest/init
+#
+cat << eof
+At the beginning of a configuration deployment the first file cdist reads is
+${__cdist_manifest_init}, which defines the types to be created on
+a specific host.
+
+We'll create the initial manifest and add some example types to it.
+
+eof
+__prompt "$create_continue"
+
+set -x
+cat << eof > "${__cdist_manifest_init}"
+# Always create a marker
+__file /etc/cdist-configured --type file
+
+case "\$__target_host" in
+   $(hostname)*)
+      __file /tmp/cdist-quickstart --type file
+   ;;
+esac
+
+eof
+set +x
+
+################################################################################
+# show generated manifest/niit
+#
+cat << eof
+Let's have a look how the initial manifest looks like currently:
+--------------------------------------------------------------------------------
+eof
+cat "${__cdist_manifest_init}"
+cat << eof
+--------------------------------------------------------------------------------
+eof
+
+__prompt "$continue"
+
+################################################################################
+# add type file
+#
diff --git a/doc/dev/todo/niconext b/doc/dev/todo/niconext
index d92277c8..ccfaf288 100644
--- a/doc/dev/todo/niconext
+++ b/doc/dev/todo/niconext
@@ -2,3 +2,4 @@ Prepare documentation for 1.0.0.
    - Check all references in manpages
       - cdist.text, cdist-quickstart
          - write cdist-quickstart
+            - redefine installation + configuration base?