terom@0: #!/bin/bash terom@0: terom@7: ### Initialize terom@7: set -u terom@7: set -e terom@0: terom@7: TESTING= terom@7: terom@7: DO_VIRTINSTALL= terom@7: terom@7: scripts=$(dirname $0)/scripts terom@7: . $scripts/lib.sh terom@7: terom@7: ### Command-line input terom@7: ## Command-line options terom@7: function _help () { terom@7: cat < /dev/null; then terom@1: die "Virtual machine already exists: ${GUEST_NAME}" terom@1: fi terom@1: terom@1: # Installer exists? terom@1: if cmd test ! -f ${INSTALLER_ISO}; then terom@1: die "Installer not found: ${INSTALLER_ISO}" terom@1: fi terom@0: terom@7: ### Prepare install terom@7: ## Extract .iso terom@1: if [ -f ${INSTALLER_FLAG} ]; then terom@7: log_info "Installer already unpacked: ${INSTALLER_TREE}" terom@1: terom@1: else terom@7: log_info "Unpacking installer: ${INSTALLER_ISO}" terom@1: cmd extract_iso ${INSTALLER_ISO} ${INSTALLER_TREE} terom@1: cmd touch ${INSTALLER_FLAG} terom@1: fi terom@1: terom@1: # Copy to customized tree terom@1: cmd cp -r ${INSTALLER_TREE} ${INSTALL_TREE} terom@1: cmd chmod -R u=rwX,og=rX ${INSTALL_TREE} terom@1: terom@7: log_info "Installer extracted: $INSTALL_TREE" terom@7: terom@7: ## Customize preseed terom@7: cmd expand_template ${PRESEED_TEMPLATE} ${PRESEED_FILE} terom@1: terom@1: # md5sum terom@7: PRESEED_CHECKSUM=$(my_md5sum $PRESEED_FILE) terom@1: terom@1: # Isolinux .cfg terom@1: cmd expand_template ${PRESEED_ISOLINUX} ${INSTALL_TREE}/isolinux/isolinux.cfg terom@1: terom@1: # Others terom@4: for file in ${PRESEED_INCLUDES[@]}; do terom@1: name=$(basename $file) terom@1: terom@1: cmd expand_template $file ${INSTALL_TREE}/${name} terom@1: done terom@1: terom@7: log_info "Preseed generated: $PRESEED_FILE" terom@0: terom@7: ## Create .iso terom@7: [ -f ${INSTALL_ISO} ] && cmd rm -f ${INSTALL_ISO} terom@0: terom@7: # generates a lot of output terom@7: cmd ${GENISOIMAGE} -o ${INSTALL_ISO} -quiet ${GENISOIMAGE_OPTS} ${INSTALL_TREE} terom@7: terom@7: log_info "Install ISO generated: $INSTALL_ISO" terom@7: terom@7: ### Create virtual machine terom@7: if [ $DO_VIRTINSTALL ]; then terom@7: ## Disk terom@7: # Create LV (unless it already exists) terom@7: [ -e $DISK_PATH ] || cmd_confirm sudo $LVM lvcreate -L $DISK_SIZE -n $DISK_NAME $DISK_VG terom@7: terom@7: ## SELinux? terom@7: #$SEMANAGE fcontext -a -t virt_image_t $DISK terom@7: #$RESTORECON -v $DISK terom@7: terom@7: ## virt-install terom@7: cmd_confirm $VIRT_INSTALL \ terom@7: --connect $LIBVIRT \ terom@7: --name $GUEST_NAME \ terom@7: --ram $(expand_MB $GUEST_RAM) --vcpus $GUEST_VCPUS \ terom@7: --cdrom "$INSTALL_ISO" \ terom@7: --os-variant $GUEST_OS_VARIANT \ terom@7: --disk path=$DISK_PATH,bus=$DISK_BUS \ terom@7: --network bridge:$NET_BRIDGE \ terom@7: --vnc \ terom@7: --virt-type $LIBVIRT_TYPE \ terom@7: --accelerate --hvm \ terom@7: --serial pty terom@7: fi terom@7: