#!/bin/bash # $HeadURL$ $LastChangedRevision$ # Properties MY_ID=system_preseed PARENT_ID=system MY_PRIVATE_ATTRIBUTES="uname root_pw status autoanswer_flag admin_emailaddr nisclient_flag nisclient_domain nisclient_mode ntpclient_flag ntpclient_servers gangliaclient_flag gangliaclient_server syslogclient_flag syslogclient_server mailclient_flag mailclient_server dyndnsclient_flag dyndnsclient_service dyndnsclient_noip_login dyndnsclient_noip_password loginserver_flag webserver_flag mailserver_flag backup_software rdwclient_server amandaclient_server timezone nics trustclient_flag trustclient_key autoupdate_flag repoconfigurator_cmd nagiosclient_flag nagiosclient_key" MY_PUBLIC_ATTRIBUTES="" MY_HELPER_IDS= # My attributes MY_ATTRIBUTES="$MY_PRIVATE_ATTRIBUTES $MY_PUBLIC_ATTRIBUTES" for MY_ATTRIBUTE in ${MY_ATTRIBUTES^^}; do eval "$MY_ATTRIBUTE="; done # Defaults for the questions we ask (should only used here) DFLT_AUTOANSWER_FLAG=true DFLT_ADMIN_EMAILADDR=root DFLT_NISCLIENT_FLAG=true DFLT_NISCLIENT_DOMAIN=$(dnsdomainname) DFLT_NISCLIENT_MODE=broadcast DFLT_NTPCLIENT_FLAG=true DFLT_NTPCLIENT_SERVERS=time.$(dnsdomainname) DFLT_GANGLIACLIENT_FLAG=false DFLT_GANGLIACLIENT_SERVER=ganglia.$(dnsdomainname) DFLT_SYSLOGCLIENT_FLAG=false DFLT_SYSLOGCLIENT_SERVER=syslog.$(dnsdomainname) DFLT_MAILCLIENT_FLAG=true DFLT_MAILCLIENT_SERVER=smtp.$(dnsdomainname) DFLT_DYNDNSCLIENT_FLAG=false DFLT_DYNDNSCLIENT_SERVICE=no-ip DFLT_DYNDNSCLIENT_NOIP_LOGIN= DFLT_DYNDNSCLIENT_NOIP_PASSWORD= DFLT_BACKUP_SOFTWARE=rdw DFLT_RDWCLIENT_SERVER=backup.$(dnsdomainname) DFLT_AMANDACLIENT_SERVER=backup.$(dnsdomainname) DFLT_TIMEZONE=Europe/Berlin DFLT_NICS="eth0,lo" DFLT_TRUSTCLIENT_FLAG=true DFLT_TRUSTCLIENT_KEY="ssh-dss AAAAB3NzaC1kc3MAAACBAP1jw6/7XQ3YUyUTS+l60EHSigniiuiaDZ13Ai0mEj93c/VdzJxQ3UpPBkzVnwEzDSyYV+5O9LfSPzSwV5+zvC+6D502WNgnLtcb1DTiMyWvHMm591OWCICE1VWeif25CteZn8MlE7PsVEu2qmhRFL5ocRMtR/CL1s6KRkvhP3FXAAAAFQDR/5Y24CHfElYD6B74xj4pkJvLgwAAAIAKQSxJ7y9XzoAayPARYy/QT402051dV0RrGUG2a6wGfCshWdv05luuAM5omCrTxRexH6VlO0lY6au/JfNHcCWehk6xEoHYyc9ZBfHwTzRaSFoDDKtbtIANJwJ5ZxNN3gCcmch15bHllH6zaHRN/ctCk+VEMF3DpG4kVreLziij3AAAAIEAxK4m77QizD395YNp5Lh+DHnf3DO3BS49/kAR4HHE+4vyvrGWmeNWEVoBG96lZWmOolQz1sFBMJG1r+B2xdfkWKRPlupSGsdDdiP7TS5YBLhdd6Y+KAgznPFyFie5BS2Ro1iB91qHO1T0uxW72jz0dxWY+DqAfqGWnpcnsWTnRGE= root@rotini-and-mandala-and-chifferi" DFLT_AUTOUPDATE_FLAG=true DFLT_LOGINSERVER_FLAG=false DFLT_WEBSERVER_FLAG=false DFLT_MAILSERVER_FLAG=false DFLT_REPOCONFIGURATOR_CMD="cd /usr/share/doc/paa/examples && AUTOPAA_MODE=client ./autopaa" DFLT_NAGIOSCLIENT_FLAG=true DFLT_NAGIOSCLIENT_KEY="ssh-dss AAAAB3NzaC1kc3MAAACBALewGvXQqPICGF6XxFL+1ha0x3KEOJ2Mm1Bkn7S6kHv0Bzic1vJLDQ8GkMwgxzlR7hR9n4EjK3Pw/W6VcJ5OItaqJw7HbJnowgp2T4/p625YzNNgsdb3HQtPO15H9kbrbxGL2tUuzGmOMJ2O69xVOw4vz12D6fVcbxkaBWAnfL2nAAAAFQDa9QqaXK7j3BA28zcQ72TMyN2UDwAAAIBO4zJjkmBzy9971ELRwx+wy9WaOjjeKHS2YFHl7ChYlAW5Jj+Ps8CITk3CdUsN0cIFQQIA2PgyA+ToTmPAm7PcJ58oN4zeHBsriMWoKR6izbkDMpNIiTTInfKqQpE75LENPmOrV0rILWgmFVIE5lesW21fd/ywveEBjpvLwT451wAAAIBlc/JT3xqabmboP6WoYYNgecJMZSMmnne3GrG4cNsnh4LNcAFzbApbH2k7KEKhKEGN3PLnbdW7kTR6srFp2FMXf4qdn54oXuOjWKnFeT/yNl7fmSQU8qWH8mebo5gbsCD1AZhXCZK1qCW5TL6Q3myBtcs1Nc0vdomFm+SbNilqvQ== nagios@spirali" DFLT_ROOT_PW='$1$Ar6R7/pC$7IS5ZfhlTNeHvzaloLV9J1' # Other configuration stuff that we don't ask about and is not (currently) stored in the database. NETBOOTSERVER_IPADDR=$(host $(uname -n) 2> /dev/null | sed 's/.*has address //') RELEASESERVER_IPADDR=$(host $(uname -n) 2> /dev/null | sed 's/.*has address //') MDITGZSERVER_IPADDR=$(host $(uname -n) 2> /dev/null | sed 's/.*has address //') # Hooks edit_prologue() { # my attributes inherit ${MY_ATTRIBUTES^^} # my inherited attributes : # real locals debug 10 "edit_prologue: prompting for changes ..." question --force-ask=true AUTOANSWER_FLAG "pre-seed pdi with mdi's answers" "$DFLT_AUTOANSWER_FLAG" help_nohelpavailable validate_logical rationalise_logical question --force-ask=true ADMIN_EMAILADDR "admin email" "$DFLT_ADMIN_EMAILADDR" help_nohelpavailable true echo # NIS question --force-ask=true NISCLIENT_FLAG "NIS client" "$DFLT_NISCLIENT_FLAG" help_nohelpavailable validate_logical rationalise_logical if $NISCLIENT_FLAG; then question --force-ask=true NISCLIENT_DOMAIN "NIS domain" "$DFLT_NISCLIENT_DOMAIN" help_nohelpavailable validate_nisdomain echo question --force-ask=true NISCLIENT_MODE "specify server or broadcast for it" "$DFLT_NISCLIENT_MODE" help_nohelpavailable "validate_string \"^(specify|broadcast)\$\"" echo else NISCLIENT_MODE=not-used NISCLIENT_DOMAIN=not-used fi # NTP question --force-ask=true NTPCLIENT_FLAG "NTP client" "$DFLT_NTPCLIENT_FLAG" help_nohelpavailable validate_logical rationalise_logical if $NTPCLIENT_FLAG; then question --force-ask=true NTPCLIENT_SERVERS "NTP server(s)" "$DFLT_NTPCLIENT_SERVERS" help_nohelpavailable true echo else NTPCLIENT_SERVERS=not-used fi # Ganglia question --force-ask=true GANGLIACLIENT_FLAG "Ganglia client" "$DFLT_GANGLIACLIENT_FLAG" help_nohelpavailable validate_logical rationalise_logical if $GANGLIACLIENT_FLAG; then question --force-ask=true GANGLIACLIENT_SERVER "Ganglia server" "$DFLT_GANGLIACLIENT_SERVER" help_nohelpavailable true echo else GANGLIACLIENT_SERVER=not-used fi # Syslog question --force-ask=true SYSLOGCLIENT_FLAG "relaying syslog client" "$DFLT_SYSLOGCLIENT_FLAG" help_nohelpavailable validate_logical rationalise_logical if $SYSLOGCLIENT_FLAG; then question --force-ask=true SYSLOGCLIENT_SERVER "syslog server" "$DFLT_SYSLOGCLIENT_SERVER" help_nohelpavailable true echo else SYSLOGCLIENT_SERVER=not-used fi # Mail question --force-ask=true MAILCLIENT_FLAG "mail client" "$DFLT_MAILCLIENT_FLAG" help_nohelpavailable validate_logical rationalise_logical if $MAILCLIENT_FLAG; then question --force-ask=true MAILCLIENT_SERVER "mail server" "$DFLT_MAILCLIENT_SERVER" help_nohelpavailable true echo else MAILCLIENT_SERVER=not-used fi question --force-ask=true MAILSERVER_FLAG "mail server" "$DFLT_MAILSERVER_FLAG" help_nohelpavailable validate_logical rationalise_logical # Web question --force-ask=true WEBSERVER_FLAG "web server" "$DFLT_WEBSERVER_FLAG" help_nohelpavailable validate_logical rationalise_logical # Dyndns question --force-ask=true DYNDNSCLIENT_FLAG "dyndns client" "$DFLT_DYNDNSCLIENT_FLAG" help_nohelpavailable validate_logical rationalise_logical if $DYNDNSCLIENT_FLAG; then question --force-ask=true DYNDNSCLIENT_SERVICE "dyndns service provider" "no-ip" help_nohelpavailable "validate_string \"^(no-ip)\$\"" echo if [ "$DYNDNSCLIENT_SERVICE" = "no-ip" ]; then question --force-ask=true DYNDNSCLIENT_NOIP_LOGIN "no-ip login" "$DFLT_DYNDNSCLIENT_NOIP_LOGIN" help_nohelpavailable validate_emailaddr echo question --force-ask=true DYNDNSCLIENT_NOIP_PASSWORD "no-ip password" "$DFLT_DYNDNSCLIENT_NOIP_PASSWORD" help_nohelpavailable "validate_string \"[^ ].*[^ ]\$\"" echo fi else DYNDNSCLIENT_SERVICE=not-used fi # Login server question --force-ask=true LOGINSERVER_FLAG "login server" "$DFLT_LOGINSERVER_FLAG" help_nohelpavailable validate_logical rationalise_logical # Backups question --force-ask=true BACKUP_SOFTWARE "backup software" "$DFLT_BACKUP_SOFTWARE" "rdw, amanda or none" "validate_string \"^(rdw|none|amanda)\$\"" echo if [ $BACKUP_SOFTWARE = rdw ]; then question --force-ask=true RDWCLIENT_SERVER "RDW server" "$DFLT_RDWCLIENT_SERVER" help_nohelpavailable true echo AMANDACLIENT_SERVER=not-used elif [ $BACKUP_SOFTWARE = amanda ]; then question --force-ask=true AMANDACLIENT_SERVER "Amanda server" "$DFLT_AMANDACLIENT_SERVER" help_nohelpavailable true echo RDWCLIENT_SERVER=not-used else RDWCLIENT_SERVER=not-used AMANDACLIENT_SERVER=not-used fi question --force-ask=true TIMEZONE "timezone" "$DFLT_TIMEZONE" help_nohelpavailable validate_timezone echo question --force-ask=true NICS "NICs" "$DFLT_NICS" help_nohelpavailable validate_nic_list_and_lo rationalise_nic_list # Trust question --force-ask=true TRUSTCLIENT_FLAG "trust client" "$DFLT_TRUSTCLIENT_FLAG" help_nohelpavailable validate_logical rationalise_logical if $TRUSTCLIENT_FLAG; then question --force-ask=true TRUSTCLIENT_KEY "trusted key" "$DFLT_TRUSTCLIENT_KEY" help_nohelpavailable true echo else TRUSTCLIENT_KEY=not-used fi # Nagios question --force-ask=true NAGIOSCLIENT_FLAG "Nagios client" "$DFLT_NAGIOSCLIENT_FLAG" help_nohelpavailable validate_logical rationalise_logical if $NAGIOSCLIENT_FLAG; then question --force-ask=true NAGIOSCLIENT_KEY "Nagios key" "$DFLT_NAGIOSCLIENT_KEY" help_nohelpavailable true echo else NAGIOSCLIENT_KEY=not-used fi # Update-related stuff question --force-ask=true AUTOUPDATE_FLAG "auto-update" "$DFLT_AUTOUPDATE_FLAG" help_nohelpavailable validate_logical rationalise_logical question --force-ask=true REPOCONFIGURATOR_CMD "paa configurator script" "$DFLT_REPOCONFIGURATOR_CMD" help_nohelpavailable validate_command echo # Stuff we (possibly only for now) don't ask about. ROOT_PW="$DFLT_ROOT_PW" map_an_attribute_to_my_helpers } create_prologue() { inherit ${MY_ATTRIBUTES^^} inherit MY_INHERITED_ATTRIBUTES ${MY_INHERITED_ATTRIBUTES^^} PRESEEDSERVER_DIR UNAME PDI SERIAL_CONSOLE_FLAG debug 10 "create_prologue: MY_INHERITED_ATTRIBUTES=\"$MY_INHERITED_ATTRIBUTES\"" generate_preseed_file_to_stdout > $PRESEEDSERVER_DIR/$UNAME.cfg map_an_attribute_to_my_helpers return 0 } delete_epilogue() { inherit ${MY_ATTRIBUTES^^} PRESEEDSERVER_DIR UNAME local RM_OUTPUT RM_OUTPUT=$(rm $PRESEEDSERVER_DIR/$UNAME.cfg 2>&1) || warning "rm: failed (output was: $RM_OUTPUT)" map_an_attribute_to_my_helpers return 0 } list_prologue() { : } # Support functions map_an_attribute_to_my_helpers() { # my properties inherit MY_HELPER_IDS MY_ATTRIBUTES # my attributes inherit ${MY_ATTRIBUTES^^} # those inherited attributes i will use inherit # real local # Sanity checks # Guts return 0 } generate_preseed_file_to_stdout() { inherit UNAME RELEASE ARCH VM_FLAG HVM_FLAG ENGINE DNSCLIENT_FLAG DNSCLIENT_DOMAIN DNSCLIENT_SERVERS SERIAL_CONSOLE_FLAG LOGINSERVER_FLAG WEBSERVER_FLAG MAILSERVER_FLAG local DEBIAN_URL_PROT DEBIAN_URL_HOST DEBIAN_URL_PATH DEBIAN_URL # Process arguments [ $# = 0 ] || internal "generate_preseed_file_to_stdout: $#: invalid argument count" # Sanity checks and derivations if $AUTOANSWER_FLAG; then DEBIAN_URL=http://$NETBOOTSERVER_IPADDR$(sed -n 's/.* Alias \(.*\) .*/\1/p' $(paa-config paa_state_prefix)/debian-$RELEASE.$UNAME.conf) [[ $DEBIAN_URL =~ (http|file)://([^/]*)(/.*) ]] || { error "$DEBIAN_URL: invalid URL"; return 1; } DEBIAN_URL_PROT=${BASH_REMATCH[1]} # The uname may not be resolvable during installation because the # Debian installer does not refer to /etc/resolv.conf but always goes # directly to the root name servers, which have no info on the local # domain if that local domain is private. Therefore we use the IP. DEBIAN_URL_HOST=$(getent hosts ${BASH_REMATCH[2]} | sed 's/ .*//') DEBIAN_URL_PATH=${BASH_REMATCH[3]} debug 10 "generate_preseed_file_to_stdout: DEBIAN_URL_PROT=$DEBIAN_URL_PROT, DEBIAN_URL_HOST=$DEBIAN_URL_HOST, DEBIAN_URL_PATH=$DEBIAN_URL_PATH" [ $DEBIAN_URL_PROT = http ] || { error "$DEBIAN_URL: only http is currently supported"; return 1; } fi # Guts if $AUTOANSWER_FLAG; then echo "d-i mirror/country string manual" echo "d-i mirror/http/hostname string $DEBIAN_URL_HOST" echo "d-i mirror/http/directory string ${DEBIAN_URL_PATH%/}" #echo "d-i mirror/suite string $RELEASE" echo "d-i mirror/http/proxy string" # Configure access to dione.no-ip.org's Debian packages; this is in order to be able to install # paa, which is now distributed as a deb, and as such, should not be installed by including it # in the tar.gz file. The package key is installed using a URL. I could put the dione repo key # on dione.no-ip.org but we can also just get it from an external key supplier. echo "d-i apt-setup/local0/repository string http://dione.no-ip.org/debian/ $RELEASE main" echo "d-i apt-setup/local0/comment string local server" echo "d-i apt-setup/local0/key string http://subkeys.pgp.net:11371/pks/lookup?op=get&search=0x9358174B" # I occassionally saw this: # # The installer failed to download the public key used to sign the # local repository at http://dione.no-ip.org/debian/: # # http://subkeys.pgp.net:11371/pks/lookup?op=get&search=0x9358174B # # This may be a problem with your network, or with the server hosting # this key. You can choose to retry the download, or ignore the problem # and continue without all the packages from this repository. # # Downloading local repository key failed: # # Retry # Ignore # # Hopefully this will fix it: echo "d-i apt-setup/local0/key-error string retry" # That didn't work, let's try some other combinations echo "d-i apt-setup/local/key-error string retry" echo "d-i apt-setup/local0/key-error string Retry" echo "d-i apt-setup/local/key-error string Retry" # Don't enable security updates during initial install. echo "d-i apt-setup/services-select multiselect" echo "d-i clock-setup/utc boolean true" echo "d-i time/zone string US/Eastern" # macaroni has multiple NICS echo "d-i netcfg/choose_interface select auto" # PVs boot quicker and therefore make DHCP requests earlier which causes # STP problems on the bridge. ! $VM_FLAG || $HVM_FLAG || echo "d-i netcfg/dhcp_timeout string 60" # Suppress overwrite warnings. echo "d-i partman-partitioning/confirm_write_new_label boolean true" echo "d-i partman/confirm_nooverwrite boolean true" echo "d-i partman-lvm/device_remove_lvm boolean true" echo "d-i partman-lvm/confirm boolean true" echo "d-i partman-lvm/confirm_nooverwrite boolean true" echo "d-i partman-md/device_remove_md boolean true" # regular, lvm or crypto? echo "d-i partman/early_command string debconf-set partman-auto/disk \"\$(list-devices disk | head -n1)\"" echo "d-i partman-auto/method string lvm" echo "d-i partman-auto-lvm/new_vg_name string vg$UNAME" # We want gpt even when the size of the disk is small enough not to require it. echo "d-i partman-partitioning/default_label string gpt" # Grub2 can boot from LVM /boot (see # https://blog.kumina.nl/2011/08/preseeding-a-debian-squeeze-install-putting-all-volumes-in-lvm/) echo "d-i partman-auto-lvm/no_boot boolean true" # Skip question about not having swap partition (see # http://tech.mariusb.com/2009/programming/debian-preseed-with-no-swap.html) echo "d-i partman-basicfilesystems/no_swap boolean false" # Allow partitions to have methods without having filesystems specified. Without this # we get the warning "No filesystem is specified for partition #1 of LVM VG vg0, LV # remainder" because the 'remainder' partition has no filesystem (it is only created # to soak up remaining space and thereby prevent root or swap from soaking it up). echo "d-i partman-basicmethods/method_only boolean false" # My recipe, entitled "boot-root-swap-remainder" is as follows: # root fs: 11.5GB; swap: 4GB on PM, 0.5GB on VM; remainder: none on VM, all remainder # on PM (to be removed later, but stops swap eating all remainder). echo "d-i partman-auto/expert_recipe string boot-root-swap-remainder :: \\" # Only big disks require a BIOS boot partition. But we create one everywhere. # (See https://gist.github.com/lorin/5140029 and # http://cptyesterday.wordpress.com/2012/07/20/get-expert_recipe-mdraid-lvm-gpt-and-grub2-playing-together-on-ubuntu-lucid-and-debian-squeeze/ echo " 1 1 1 free \\" echo " method{ biosgrub } \\" echo " . \\" # Note that, by experimentation, I believe that "all consuming" partition, must be # specified last. if $VM_FLAG; then # Formerly, VMs got no swap, but I see VM login servers running out with 256MB RAM. echo " 500 500 500 linux-swap \\" else echo " 4000 4000 4000 linux-swap \\" fi echo " method{ swap } \$lvmok{ } lv_name{ swap } \\" echo " format{ } \\" echo " . \\" if $VM_FLAG; then echo " 1 1 1000000000 ext4 \\" else echo " 15500 15500 15500 ext4 \\" fi echo " method{ lvm } \$lvmok{ } lv_name{ root } \\" echo " format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } \\" echo " . \\" if ! $VM_FLAG; then # Set ridiculous filesystem type so easier to spot later and delete. echo " 1 1 1000000000 affs1 \\" echo " method{ keep } \$lvmok{ } lv_name{ remainder } \\" echo " . \\" fi # This blank line completes the recipe (which avoids having to decide whether to add # or not add a '\' to the end of a line above, depending on whether there will be # something coming after or not. echo # Don't write UUIDs to /etc/fstab echo "d-i partman/mount_style select traditional" echo "d-i partman/choose_partition select finish" echo "d-i partman/confirm boolean true" echo "d-i passwd/root-password-crypted password $ROOT_PW" # Don't create any normal users echo "d-i passwd/make-user boolean false" echo "popularity-contest popularity-contest/participate boolean false" echo "tasksel tasksel/first multiselect" # From the outset, pdi needs: bridge-utils, vlan, parted, paa, lvm, # mdadm(?). nfs-common is for ???. virt-what was to help a machine # set $VM_FLAG without asking a question. xterm is because it contains # resize, and I'm hoping this will help we increase the PV console # size to the size of the window immediately, instead of using only # the top half of the window. gdisk is needed to clone GPT partition # tables (which macaroni uses). # ethtool is needed because wakeonlan may necessitate having an ethtool # call in /etc/network/interfaces. If ethtool is not installed when the # interface is bounced, which is quite early in pdi, then the bounce # fails (even though it's not doing anything, that at this first boot, # is important). echo "d-i pkgsel/include string bridge-utils vlan parted mdadm nfs-common paa lvm xterm gdisk ethtool openssh-server" echo "d-i grub-installer/only_debian boolean true" echo "d-i grub-installer/with_other_os boolean true" echo "d-i finish-install/reboot_in_progress note" fi # Save all settings, so that pdi and udi can read them. [ "X$CMDS" = X ] || CMDS+="; " CMDS+="mkdir -p /var/local/mdi && echo \"SERIAL_CONSOLE_FLAG=$SERIAL_CONSOLE_FLAG\\nBOOTMEDIA=$BOOTMEDIA\\nUNAME=$UNAME\\nVM_FLAG=$VM_FLAG\\nHVM_FLAG=$HVM_FLAG\\nADMIN_EMAILADDR=$ADMIN_EMAILADDR\\nDNSCLIENT_FLAG=$DNSCLIENT_FLAG\\nDNSCLIENT_DOMAIN=$DNSCLIENT_DOMAIN\\nDNSCLIENT_SERVERS=\\\"$DNSCLIENT_SERVERS\\\"\\nNISCLIENT_FLAG=$NISCLIENT_FLAG\\nNISCLIENT_DOMAIN=$NISCLIENT_DOMAIN\\nNISCLIENT_MODE=$NISCLIENT_MODE\\nNTPCLIENT_FLAG=$NTPCLIENT_FLAG\\nNTPCLIENT_SERVERS=$NTPCLIENT_SERVERS\\nGANGLIACLIENT_FLAG=$GANGLIACLIENT_FLAG\\nGANGLIACLIENT_SERVER=$GANGLIACLIENT_SERVER\\nSYSLOGCLIENT_FLAG=$SYSLOGCLIENT_FLAG\\nSYSLOGCLIENT_SERVER=$SYSLOGCLIENT_SERVER\\nMAILCLIENT_FLAG=$MAILCLIENT_FLAG\\nMAILCLIENT_SERVER=$MAILCLIENT_SERVER\\nDYNDNSCLIENT_FLAG=$DYNDNSCLIENT_FLAG\\nDYNDNSCLIENT_SERVICE=$DYNDNSCLIENT_SERVICE\\nDYNDNSCLIENT_NOIP_LOGIN=$DYNDNSCLIENT_NOIP_LOGIN\\nDYNDNSCLIENT_NOIP_PASSWORD=\\\"$DYNDNSCLIENT_NOIP_PASSWORD\\\"\\nLOGINSERVER_FLAG=$LOGINSERVER_FLAG\\nWEBSERVER_FLAG=$WEBSERVER_FLAG\\nMAILSERVER_FLAG=$MAILSERVER_FLAG\\nBACKUP_SOFTWARE=$BACKUP_SOFTWARE\\nRDWCLIENT_SERVER=$RDWCLIENT_SERVER\\nAMANDACLIENT_SERVER=$AMANDACLIENT_SERVER\\nTIMEZONE=$TIMEZONE\\nTRUSTCLIENT_FLAG=$TRUSTCLIENT_FLAG\\nTRUSTCLIENT_KEY=\\\"$TRUSTCLIENT_KEY\\\"\\nAUTOUPDATE_FLAG=$AUTOUPDATE_FLAG\\nNICS=\\\"$NICS\\\"\\nREPOCONFIGURATOR_CMD=\\\"$REPOCONFIGURATOR_CMD\\\"\\nNAGIOSCLIENT_FLAG=$NAGIOSCLIENT_FLAG\\nNAGIOSCLIENT_KEY=\\\"$NAGIOSCLIENT_KEY\\\"\" > /var/local/mdi/mdi-params" if $PDI; then # If pdi is to be installed, then prepare it (via helper) and preseed # the download and installing of it. [ "X$CMDS" = X ] || CMDS+="; " CMDS+="wget -qO /root/mdi.tar.gz http://$MDITGZSERVER_IPADDR${MDITGZSERVER_DIR#$MDITGZSERVER_DOCROOT}/mdi-$UNAME.tar.gz" fi # Preseed telling install server we're finished. [ "X$CMDS" = X ] || CMDS+="; " CMDS+="echo $UNAME | nc $RELEASESERVER_IPADDR $RELEASESERVER_PORT" # Get sshd running [ "X$CMDS" = X ] || CMDS+="; " CMDS+="perl -pi -e \"s/.*PermitRootLogin.*/PermitRootLogin yes/\" /etc/ssh/sshd_config" echo "d-i preseed/late_command string in-target sh -c '$CMDS'" }