cdist/bin/cdist-quickstart

135 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
#