134 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
#
 | 
						|
# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org)
 | 
						|
#
 | 
						|
# 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/>.
 | 
						|
#
 | 
						|
#
 | 
						|
# Give the user an introduction into cdist
 | 
						|
#
 | 
						|
 | 
						|
. cdist-config
 | 
						|
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()
 | 
						|
{
 | 
						|
   echo -n "$banner" "$@"
 | 
						|
   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}. 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).
 | 
						|
 | 
						|
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 -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
 | 
						|
#
 |