--- 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}