--- a/pkvlm-create Fri Jan 27 12:07:32 2012 +0200
+++ b/pkvlm-create Fri Jan 27 14:41:02 2012 +0200
@@ -139,6 +139,7 @@
define_opt dns_domain paivola.fi
define_opt ip
define_opt puppet
+define_opt puppet_master puppet
log_info "Processing ${#@} parameters:"
for param in "$@"; do
@@ -240,21 +241,26 @@
PRESEED_LATE_COMMANDS=( )
PRESEED_INCLUDES=( 'passwords.cfg' 'host.cfg' )
+
+### Extra
+## Puppet
if [ $opt_puppet ]; then
log_info "Puppetizing preseed"
PUPPET_PACKAGES=( puppet )
PUPPET_COMMANDS=( \
- "in-target sed -i 's/START=no/START=yes/' /etc/default/puppet" \
+# "in-target sed -i 's/START=no/START=yes/' /etc/default/puppet" \
+# "echo '[agent]\nserver = ${opt_puppet_master}\n' >> /etc/puppet/puppet.conf" \
)
+ # XXX: we use files in preseed/files/..., should modularize those
+
+ PUPPET_MASTER="${opt_puppet_master}"
+
PACKAGE_INCLUDES=( ${PACKAGE_INCLUDES[@]} ${PUPPET_PACKAGES[@]} )
- PRESEED_LATE_COMMANDS=( ${PRESEED_LATE_COMMANDS[@]:-} ${PUPPET_COMMANDS[@]} )
+ PRESEED_LATE_COMMANDS=( "${PRESEED_LATE_COMMANDS[@]:-}" "${PUPPET_COMMANDS[@]:-}" )
fi
-# full commands
-PRESEED_LATE_COMMAND=$(IFS=$'; \\\n\t' echo "${PRESEED_LATE_COMMANDS[@]}")
-
### Installer setup
## Installation image
# Original Debian Installer image (iso)
@@ -270,7 +276,6 @@
INSTALL_TREE="images/${INSTALL_NAME}"
INSTALL_ISO="iso-out/${INSTALL_NAME}.iso"
-
## Preseed files
# Preseed output file in install tree
PRESEED_NAME="preseed.cfg"
@@ -278,6 +283,9 @@
# Directory containing our source templates
PRESEED_SOURCE_DIR="preseed"
+# Mount path of preseed target in installer
+PRESEED_MOUNT="/cdrom"
+
# Prefix for target files in install tree
# XXX: not implemented
#PRESEED_TARGET_PREFIX=""
@@ -291,6 +299,18 @@
# Checksum of target preseed.cfg
PRESEED_CHECKSUM= # set later
+## Configs
+CONF_FILES_SOURCE='preseed/files'
+CONF_FILES_TARGET_NAME='preseed-files'
+CONF_FILES_TARGET="${INSTALL_TREE}/${CONF_FILES_TARGET_NAME}"
+CONF_FILES_CP_SRC="${PRESEED_MOUNT}/${CONF_FILES_TARGET_NAME}"
+CONF_FILES_CP_DST='/target'
+
+PRESEED_LATE_COMMANDS=( "${PRESEED_LATE_COMMANDS[@]:-}" \
+ "cp -rd -- ${CONF_FILES_CP_SRC}/* ${CONF_FILES_CP_DST}" \
+)
+
+
# Additional files to copy
PRESEED_INCLUDE_FILES=( $(for preseed in ${PRESEED_INCLUDES[@]}; do echo "${PRESEED_SOURCE_DIR}/${preseed}"; done) )
#PRESEED_INCLUDE_FILES=("preseed/passwords.cfg" "preseed/host.cfg")
@@ -298,6 +318,9 @@
# preseed.cfg 'includes' line
PRESEED_INCLUDE=${PRESEED_INCLUDES[@]}
+# preseed command execution
+PRESEED_LATE_COMMAND=$(for cmd in "${PRESEED_LATE_COMMANDS[@]}"; do if [ "$cmd" ]; then echo -n "$cmd;" $'\\\n '; fi; done; echo true)
+
## Isolinux
# Source for install tree isolinux file
@@ -315,7 +338,7 @@
fi
# installer boot args
-INSTALL_BOOT_ARGS="auto=true priority=critical preseed/file=/cdrom/${PRESEED_NAME} preseed/file/checksum=${PRESEED_CHECKSUM} -- quiet ${INSTALL_BOOT_CONSOLE}"
+INSTALL_BOOT_ARGS="auto=true priority=critical preseed/file=${PRESEED_MOUNT}/${PRESEED_NAME} preseed/file/checksum=${PRESEED_CHECKSUM} -- quiet ${INSTALL_BOOT_CONSOLE}"
@@ -449,6 +472,10 @@
log_info "Preseed generated: $PRESEED_FILE"
+# Files
+log_info "Copy preseed-files"...
+cmd expand_tree ${CONF_FILES_SOURCE} ${CONF_FILES_TARGET}
+
## Create .iso
[ -f ${INSTALL_ISO} ] && cmd rm -f ${INSTALL_ISO}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/preseed/files/etc/default/puppet Fri Jan 27 14:41:02 2012 +0200
@@ -0,0 +1,7 @@
+# Defaults for puppet - sourced by /etc/init.d/puppet
+
+# Start puppet on boot?
+START=yes
+
+# Startup options
+DAEMON_OPTS=""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/preseed/files/etc/puppet/puppet.conf Fri Jan 27 14:41:02 2012 +0200
@@ -0,0 +1,11 @@
+[main]
+logdir=/var/log/puppet
+vardir=/var/lib/puppet
+ssldir=/var/lib/puppet/ssl
+rundir=/var/run/puppet
+factpath=$vardir/lib/facter
+templatedir=$confdir/templates
+
+[agent]
+server = {PUPPET_MASTER}
+
--- a/preseed/preseed.cfg Fri Jan 27 12:07:32 2012 +0200
+++ b/preseed/preseed.cfg Fri Jan 27 14:41:02 2012 +0200
@@ -404,8 +404,6 @@
{PRESEED_LATE_COMMAND}
-
-
### Extra preseed files
d-i preseed/include string \
{PRESEED_INCLUDE}
--- a/scripts/lib.sh Fri Jan 27 12:07:32 2012 +0200
+++ b/scripts/lib.sh Fri Jan 27 14:41:02 2012 +0200
@@ -157,6 +157,15 @@
done < $tpl > $out
}
+function expand_file () {
+ local src=$1
+ local dst=$2
+
+ log_info "expand: file $src -> $dst"
+
+ cmd expand_template $src $dst
+}
+
# Recursive expand_template files from src -> dst
# XXX: not used
function expand_tree () {
@@ -164,20 +173,26 @@
local dst=$2
local filter=${3:-'*'}
+ log_info "expand: tree $src/$filter -> $dst"
+
+ [ ! -d $dst ] && cmd mkdir $dst
+
for path in ${src}/${filter}; do
local name=$(basename $path)
local target=$dst/$name
+ log_debug "expand_tree: $src: path=$path, name=$name, target=$target"
+
if [ -d $path ]; then
- log_debug "expand_tree: $path -> $target"
- expand_tree $path $target $filter
+ log_debug "expand_tree: $src: tree $name -> $target"
+ expand_tree $path $target "$filter"
elif [ -f $path ]; then
- log_debug "expand_file: $path -> $target"
+ log_debug "expand_tree: $src: file $name -> $target"
expand_file $path $target
else
- log_warn "ignore weird file: $path"
+ log_warn "expand_tree: $src: ignore $name"
fi
done