modularize puppet preseed conf files
authorTero Marttila <terom@fixme.fi>
Mon, 30 Jan 2012 13:35:12 +0200
changeset 20 ee16d147a06c
parent 19 b50c8571a067
child 21 e26b3773ae0e
modularize puppet preseed conf files
pkvlm-create
preseed/files/etc/default/puppet
preseed/files/etc/puppet/puppet.conf
preseed/puppet/files/etc/default/puppet
preseed/puppet/files/etc/puppet/puppet.conf
--- a/pkvlm-create	Mon Jan 30 13:18:49 2012 +0200
+++ b/pkvlm-create	Mon Jan 30 13:35:12 2012 +0200
@@ -269,7 +269,7 @@
 
 ### Preseed setup
 ## preseed.cfg templating
-PRESEED_SOURCE_DIR="preseed"
+PRESEED_DIR="preseed"
 
 # Preseed output file in install tree
 PRESEED_NAME="preseed.cfg"
@@ -282,7 +282,7 @@
 #PRESEED_TARGET_PREFIX=""
 
 # Main preseed source template
-PRESEED_TEMPLATE="${PRESEED_SOURCE_DIR}/${PRESEED_NAME}"
+PRESEED_TEMPLATE="${PRESEED_DIR}/${PRESEED_NAME}"
 
 # Target path for preseed in install tree
 PRESEED_FILE="${INSTALL_TREE}/${PRESEED_NAME}"
@@ -321,15 +321,20 @@
 
 ## preseed-files
 # template source
-CONF_FILES_SOURCE='preseed/files'
+PRESEED_FILES_SOURCES=( 'preseed/files' )
 
 # template output into install tree
-CONF_FILES_TARGET_NAME='preseed-files'
-CONF_FILES_TARGET="${INSTALL_TREE}/${CONF_FILES_TARGET_NAME}"
+PRESEED_FILES_TARGET_NAME='preseed-files'
+PRESEED_FILES_TARGET="${INSTALL_TREE}/${PRESEED_FILES_TARGET_NAME}"
 
 # paths within installer runtime
-CONF_FILES_CP_SRC="${PRESEED_MOUNT}/${CONF_FILES_TARGET_NAME}"
-CONF_FILES_CP_DST='/target'
+PRESEED_FILES_INSTALLER_SOURCE="${PRESEED_MOUNT}/${PRESEED_FILES_TARGET_NAME}"
+PRESEED_FILES_INSTALLER_TARGET='/target'
+
+# Add a tree of configuration files to template into the installer
+function preseed_conf_files () {
+    PRESEED_FILES_SOURCES=( "${PRESEED_FILES_SOURCES[@]:-}" "$@" )
+}
 
 # Add a file to install in preseed, without templating
 # preseed_file <src> <dst>/
@@ -338,7 +343,7 @@
     local src=$1
     local dst=$2
     local dir=$(dirname $dst)
-    local tgt=${CONF_FILES_TARGET}
+    local tgt=${PRESEED_FILES_TARGET}
 
     local tgt_dir="$tgt/$dir"
 
@@ -356,8 +361,10 @@
 if [ $opt_puppet ]; then
     log_info "Puppetizing preseed"
     PUPPET=yes
+    
+    PUPPET_PRESEED_DIR="${PRESEED_DIR}/puppet"
 
-    # install package
+    ## Packages
     preseed_packages puppet
 
     ## Vars for preseed-files
@@ -366,12 +373,17 @@
 
     # path ssl data (ssldir)
     PUPPET_SSLDIR=/etc/puppet/ssl
+   
+    ## Preseed files 
+    # add to list of conf files to copy
+    preseed_conf_files "${PUPPET_PRESEED_DIR}/files"
+
 fi
 
 # Invoked during image-customizing process
 function puppet_config () {
     ## Preseed ssl certs?
-    PUPPET_SOURCE_SSLDIR="${PRESEED_SOURCE_DIR}/puppet/ssl"
+    PUPPET_SOURCE_SSLDIR="${PUPPET_PRESEED_DIR}/ssl"
 
     # copy file to preseed if exists
     function puppet_preseed_ssl_file () {
@@ -426,10 +438,10 @@
 
 
 # copy at end of install
-preseed_late_commands "cp -rd -- ${CONF_FILES_CP_SRC}/* ${CONF_FILES_CP_DST}"
+preseed_late_commands "cp -rd -- ${PRESEED_FILES_INSTALLER_SOURCE}/* ${PRESEED_FILES_INSTALLER_TARGET}"
 
 # Additional files to copy
-PRESEED_INCLUDE_FILES=( $(for preseed in ${PRESEED_INCLUDES[@]}; do echo "${PRESEED_SOURCE_DIR}/${preseed}"; done) )
+PRESEED_INCLUDE_FILES=( $(for preseed in ${PRESEED_INCLUDES[@]}; do echo "${PRESEED_DIR}/${preseed}"; done) )
 #PRESEED_INCLUDE_FILES=("preseed/passwords.cfg" "preseed/host.cfg")
 
 # preseed.cfg 'includes' line
@@ -441,7 +453,7 @@
 
 ## Isolinux
 # Source for install tree isolinux file
-PRESEED_ISOLINUX="${PRESEED_SOURCE_DIR}/isolinux.cfg"
+PRESEED_ISOLINUX="${PRESEED_DIR}/isolinux.cfg"
 
 # Automagics for serial boot :)
 #      virt-install assumes we have an X $DISPLAY if given --vnc
@@ -560,6 +572,8 @@
 
 
 ### Prepare install
+log_info "Extract installer..."
+
 ## Extract .iso
 if [ -f ${INSTALLER_FLAG} ]; then
     log_info "Installer already unpacked: ${INSTALLER_TREE}"
@@ -580,15 +594,19 @@
 
 
 ### Customize preseed
+log_info "Generate preseed..."
+
 ## preseed.cfg
 cmd expand_template ${PRESEED_TEMPLATE} ${PRESEED_FILE}
 
 # md5sum
 PRESEED_CHECKSUM=$(my_md5sum $PRESEED_FILE)
 
+
 ## Isolinux
 cmd expand_template ${PRESEED_ISOLINUX} ${INSTALL_TREE}/isolinux/isolinux.cfg
 
+
 ## Includes
 for file in ${PRESEED_INCLUDE_FILES[@]}; do
     name=$(basename $file)
@@ -596,11 +614,17 @@
     cmd expand_template $file ${INSTALL_TREE}/${name}
 done
 
-log_info "Preseed generated: $PRESEED_FILE"
+log_debug "Preseed generated: $PRESEED_FILE"
+
 
 ## Config preseed-files
-log_info "Copy preseed-files"...
-cmd expand_tree ${CONF_FILES_SOURCE} ${CONF_FILES_TARGET}
+log_info "Copy preseed-files..."
+
+for tree in "${PRESEED_FILES_SOURCES[@]}"; do
+    log_info "preseed-files: $tree"
+
+    cmd expand_tree $tree ${PRESEED_FILES_TARGET}
+done
 
 ## Modules
 # Puppet
@@ -611,6 +635,8 @@
 
 
 ### Create .iso
+log_info "Generate ISO..."
+
 [ -f ${INSTALL_ISO} ] && cmd rm -f ${INSTALL_ISO}
 
 # generates a lot of output
@@ -625,6 +651,8 @@
 
 ### Create virtual machine
 if [ $DO_VIRTINSTALL ]; then
+    log_info "Create VM..."
+
     ## Check
     # VM exists?
     if cmd virsh domid ${GUEST_NAME} > /dev/null 2> /dev/null; then
--- a/preseed/files/etc/default/puppet	Mon Jan 30 13:18:49 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-# Defaults for puppet - sourced by /etc/init.d/puppet
-
-# Start puppet on boot?
-START=yes
-
-# Startup options
-DAEMON_OPTS=""
--- a/preseed/files/etc/puppet/puppet.conf	Mon Jan 30 13:18:49 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-[main]
-logdir=/var/log/puppet
-vardir=/var/lib/puppet
-ssldir={PUPPET_SSLDIR}
-rundir=/var/run/puppet
-factpath=$vardir/lib/facter
-templatedir=$confdir/templates
-
-[agent]
-server = {PUPPET_MASTER}
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/preseed/puppet/files/etc/default/puppet	Mon Jan 30 13:35:12 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/puppet/files/etc/puppet/puppet.conf	Mon Jan 30 13:35:12 2012 +0200
@@ -0,0 +1,11 @@
+[main]
+logdir=/var/log/puppet
+vardir=/var/lib/puppet
+ssldir={PUPPET_SSLDIR}
+rundir=/var/run/puppet
+factpath=$vardir/lib/facter
+templatedir=$confdir/templates
+
+[agent]
+server = {PUPPET_MASTER}
+