diff options
author | Stefan K. Berg <stefan.k.berg@ericsson.com> | 2015-05-12 15:54:39 +0200 |
---|---|---|
committer | Stefan K. Berg <stefan.k.berg@ericsson.com> | 2015-05-12 15:56:16 +0200 |
commit | 129ffe434c010508f26416983835e80dec0cc1d8 (patch) | |
tree | 7ba38349007080e0825fdcd99936ef452cd120a0 /fuel/prototypes/auto-deploy/deploy/functions | |
parent | 82acf9fc006912f50ca799dee2489b53c712d936 (diff) |
Corrected directory name
It was never meant for the first level to be called anything
else than auto-deploy - really needed to get rid of the
terrible .../deploy/deploy/deploy.sh!
JIRA
Change-Id: Ifa68e5922ca8da9cc72df963e8138a8fc0b8b63b
Signed-off-by: Stefan K. Berg <stefan.k.berg@ericsson.com>
Diffstat (limited to 'fuel/prototypes/auto-deploy/deploy/functions')
8 files changed, 675 insertions, 0 deletions
diff --git a/fuel/prototypes/auto-deploy/deploy/functions/common.sh b/fuel/prototypes/auto-deploy/deploy/functions/common.sh new file mode 100755 index 0000000..6947d79 --- /dev/null +++ b/fuel/prototypes/auto-deploy/deploy/functions/common.sh @@ -0,0 +1,67 @@ +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +# Common functions + +error_exit () { + echo "Error: $@" >&2 + exit 1 +} + +ssh() { + SSHPASS="r00tme" sshpass -e ssh -o UserKnownHostsFile=${tmpdir}/known_hosts \ + -o StrictHostKeyChecking=no -o ConnectTimeout=15 "$@" +} + +scp() { + SSHPASS="r00tme" sshpass -e scp -o UserKnownHostsFile=${tmpdir}/known_hosts \ + -o StrictHostKeyChecking=no -o ConnectTimeout=15 "$@" +} + + +fuel () { + ssh root@`dea getFuelIp` "fuel $@" +} + + +# TODO: Move numberOfNodes into the DEA API +numberOfNodes() { + fuel node | tail -n +3 | grep -v "^$" | wc -l +} + +# TODO: Move numberOfNodesUp into the DEA API +numberOfNodesUp() { + fuel node | tail -n +3 | grep -v "^$" | grep True | wc -l +} + +# Currently not used! +# Wait for node count to increase +waitForNode() { + local cnt + local initCnt + local expectCnt + + initCnt=`numberOfNodesUp` + expectCnt=$[initCnt+1] + while true + do + cnt=`numberOfNodesUp` + if [ $cnt -eq $expectCnt ]; then + break + elif [ $cnt -lt $initCnt ]; then + error_exit "Node count decreased while waiting, $initCnt -> $cnt" + elif [ $cnt -gt $expectCnt ]; then + error_exit "Node count exceeded expect count, $cnt > $expectCnt" + fi + sleep 10 + echo -n "[${cnt}]" + done + echo "[${cnt}]" +} diff --git a/fuel/prototypes/auto-deploy/deploy/functions/dea-api.sh b/fuel/prototypes/auto-deploy/deploy/functions/dea-api.sh new file mode 100755 index 0000000..61d670f --- /dev/null +++ b/fuel/prototypes/auto-deploy/deploy/functions/dea-api.sh @@ -0,0 +1,171 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + + + +######################################################################## +# Internal functions BEGIN + + + +dea_f_err() +{ + local rc + local cmd + + rc=$1 + shift + + if [ -n "$rc" ]; then + echo "Error ($rc): $@" >&2 + else + echo "Error: $@" >&2 + fi +} + +dea_f_run() +{ + $@ + rc=$? + if [ $rc -ne 0 ]; then + dea_f_err $rc "Error running $@" + return $rc + fi +} + +# Internal functions END +######################################################################## + +true=0 +false=1 + +# API: Get the DEA API version supported by this adapter +dea_getApiVersion () +{ + echo "1.0" +} + + +# API: Node numbering is sequential. + + +# API: Get the role for this node +# API: Argument 1: node id +dea_getNodeRole() +{ + $DEAPARSE $DEAFILE getNodeRole $@ + +} + +# API: Get IP address of Fuel master +dea_getFuelIp() +{ + $DEAPARSE $DEAFILE getProperty fuel ADMIN_NETWORK ipaddress +} + +# API: Get netmask Fuel master +dea_getFuelNetmask() +{ + $DEAPARSE $DEAFILE getProperty fuel ADMIN_NETWORK netmask +} + +# API: Get gateway address of Fuel master +# FIXME: This is currently not in the DEA, so make the gatway the ..1 +# FiXME: of the IP +dea_getFuelGateway() +{ + $DEAPARSE $DEAFILE getProperty fuel ADMIN_NETWORK ipaddress | \ + sed 's/.[0-9]*$/.1/' +} + +# API: Get gateway address of Fuel master +dea_getFuelHostname() +{ + $DEAPARSE $DEAFILE getProperty fuel HOSTNAME +} + +# API: Get DNS address of Fuel master +dea_getFuelDns() +{ + $DEAPARSE $DEAFILE getProperty fuel DNS_UPSTREAM +} + +# API: Convert a normal MAC to a Fuel short mac for --node-id +dea_convertMacToShortMac() +{ + echo $1 | sed 's/.*..:..:..:..:\(..:..\).*/\1/' | tr [A-Z] [a-z] +} + + +# API: Get property from DEA file +# API: Argument 1: search path, as e.g. "fuel ADMIN_NETWORK ipaddress" +dea_getProperty() +{ + $DEAPARSE $DEAFILE getProperty $@ +} + +# API: Convert DHA node id to Fuel cluster node id +# API: Look for lowest Fuel node number, this will be DHA node 1 +# API: Argument: node id +dea_getClusterNodeId() +{ + local baseId + local inId + local fuelIp + + inId=$1 + fuelIp=`dea_getFuelIp` + + baseId=`ssh root@${fuelIp} fuel node | tail -n +3 | awk '{ print $1 }'| sed 's/ //g' | sort -n | head -1` + echo "$[inId + baseId - 1]" +} + +# API: Entry point for dea functions +# API: Typically do not call "dea_node_zeroMBR" but "dea node_ZeroMBR" +# API: +# API: Before calling dea, the adapter file must gave been sourced with +# API: the DEA file name as argument +dea() +{ + if [ -z "$DEAFILE" ]; then + error_exit "dea_setup has not been run" + fi + + + if type dea_$1 &>/dev/null; then + cmd=$1 + shift + dea_$cmd $@ + return $? + else + error_exit "No such function dea_$1 defined" + fi +} + +if [ "$1" == "api" ]; then + egrep "^# API: |dea.*\(\)" $0 | sed 's/^# API: /# /' | grep -v dea_f_ | sed 's/)$/)\n/' +else + deatopdir=$(dirname $(readlink -f $BASH_SOURCE)) + DEAPARSE="$deatopdir/deaParse.py" + DEAFILE=$1 + + if [ ! -f $DEAFILE ]; then + error_exit "No such DEA file: $DEAFILE" + else + echo "Adapter init" + echo "$@" + echo "DEAPARSE: $DEAPARSE" + echo "DEAFILE: $DEAFILE" + fi +fi + + + diff --git a/fuel/prototypes/auto-deploy/deploy/functions/deaParse.py b/fuel/prototypes/auto-deploy/deploy/functions/deaParse.py new file mode 100755 index 0000000..7ca6501 --- /dev/null +++ b/fuel/prototypes/auto-deploy/deploy/functions/deaParse.py @@ -0,0 +1,85 @@ +#!/usr/bin/python +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +import yaml +import re +import sys +import os + +def test(arr): + print "Nodes" + nodes = doc["nodes"] + for node in nodes: + print "Node %d " % node["id"] + print " Mac: %s" % node["adminMac"] + print " Role: %s" % node["role"] + +def getNodeRole(arg): + for node in doc["nodes"]: + print node + try: + if node["role"] == arg[0]: + print doc["id"] + except KeyError: + exit(1) + +def getNodes(arg): + for node in doc["nodes"]: + print node["id"] + + +def getProperty(arg): + result = doc + for level in arg: + result = result[level] + print result + +def getNodeRole(arg): + for node in doc["nodes"]: + if int(arg[0]) == node["id"]: + print node["role"] + +def getNode(arg): + id=arg[0] + key=arg[1] + for node in doc["nodes"]: + if int(node["id"]) == int(id): + print node[key] + + # for node in doc["nodes"]: + # if int(node["id"]) == int(arg[0]): + # print node + +infile = sys.argv[1] + +if not os.path.exists(infile): + sys.stderr.write("ERROR: The file "+infile+" could not be opened\n") + sys.exit(1) + + +f1 = open(infile, 'r') +doc = yaml.load(f1) +f1.close() + +cmd = sys.argv[2] +args = sys.argv[3:] + +if cmd == "getProperty": + getProperty(args) +elif cmd == "getNodeRole": + getNodeRole(args) +elif cmd == "getNode": + getNode(args) +elif cmd == "get": + get(args) +else: + print "No such command: %s" % cmd + exit(1) diff --git a/fuel/prototypes/auto-deploy/deploy/functions/deploy_env.sh b/fuel/prototypes/auto-deploy/deploy/functions/deploy_env.sh new file mode 100755 index 0000000..e650f4d --- /dev/null +++ b/fuel/prototypes/auto-deploy/deploy/functions/deploy_env.sh @@ -0,0 +1,140 @@ +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +# Deploy! +scp -q $deafile root@${fuelIp}:. || error_exit "Could not copy DEA file to Fuel" +echo "Uploading build tools to Fuel server" +ssh root@${fuelIp} rm -rf tools || error_exit "Error cleaning old tools structure" +scp -qrp $topdir/tools root@${fuelIp}:. || error_exit "Error copying tools" + +echo "Uploading templating tols to Fuel server" +ssh root@${fuelIp} rm -rf create_templates || error_exit "Error cleaning old create_templates structure" +scp -qrp $topdir/../create_templates root@${fuelIp}:. || error_exit "Error copying create_templates" + +# Refuse to run if environment already present +envcnt=`fuel env | tail -n +3 | grep -v '^$' | wc -l` +if [ $envcnt -ne 0 ]; then + error_exit "Environment count is $envcnt" +fi + +# Refuse to run if any nodes are up +nodeCnt=`numberOfNodesUp` +if [ $nodeCnt -ne 0 ]; then + error_exit "Nodes are up (node count: $nodeCnt)" +fi + +# FIXME: Add support for CentOS creation here +# Extract release ID for Ubuntu environment +ubuntucnt=`fuel release | grep Ubuntu | wc -l` +if [ $ubuntucnt -ne 1 ]; then + error_exit "Not exacly one Ubuntu release found" +fi + +# FIXME: Make release a property in the dea.yaml and use that instead! +ubuntuid=`fuel release | grep Ubuntu | awk '{ print $1 }'` + +# Create environment +envName=`dea getProperty environment_name` || error_exit "Could not get environment name" +envMode=`dea getProperty environment_mode` || error_exit "Could not get environment mode" + +fuel env create --name $envName \ + --rel $ubuntuid \ + --mode $envMode \ + --network-mode neutron \ + --net-segment-type vlan \ + || error_exit "Error creating environment" + +envId=`ssh root@${fuelIp} fuel env | tail -n +3 | awk '{ print $1 }'` \ + || error_exit "Could not get environment id" + +echo "Running transplant #1" +ssh root@${fuelIp} "cd tools; ./transplant1.sh ../`basename $deafile`" \ + || error_exit "Error running transplant sequence #1" + +# Start VMs +strategy=`dha getPowerOnStrategy` || error_exit "Could not get power on strategy" +if [ $strategy == "all" ]; then + echo "Starting all nodes at once" + poweredOn=0 + for id in `dha getAllNodeIds` + do + if [ $id -ne $fuelNodeId ]; then + echo "Setting boot order pxe disk for node $id" + dha nodeSetBootOrder $id "pxe disk" || "Could not set boot order for node" + echo "Powering on node $id" + dha nodePowerOn $id || error_exit "Could not power on node" + poweredOn=$[poweredOn + 1] + fi + done + # Wait for all nodes to be accounted for + echo "Waiting for $poweredOn nodes to come up" + while true + do + nodesUp=`numberOfNodesUp` + echo -n "[${nodesUp}]" + if [ $nodesUp -eq $poweredOn ]; then + break + fi + sleep 10 + done + echo "[${nodesUp}]" +else + # Refuse to run if any nodes are defined + totalNodeCnt=`numberOfNodes` + if [ $totalNodeCnt -ne 0 ]; then + error_exit "There are already ${totalNodeCnt} defined nodes, can not run power on in sequence!" + fi + echo "Starting nodes sequentially, waiting for Fuel detection until proceeding" + for id in `dha getAllNodeIds` + do + if [ $id -ne $fuelNodeId ]; then + echo "Setting boot order pxe disk for node $id" + dha nodeSetBootOrder $id "pxe disk" || "Could not set boot order for node" + echo "Powering on node $id" + dha nodePowerOn $id || error_exit "Could not power on node" + # Wait for node count to increase + waitForNode + fi + done +fi + +# Set roles for detected hosts +for id in `dha getAllNodeIds` +do + # If not a Fuel node + if [ $fuelNodeId -ne $id ]; then + longMac=`dha getNodePxeMac $id` || \ + error_exit "Could not get MAC address for node $id from DHA" + shortMac=`dea convertMacToShortMac $longMac` + role="`dea getNodeRole $id`" + echo "Setting role $role for Fuel node $shortMac (DEA node $id)" + fuel node set --node-id $shortMac --role $role --env $envId \ + || error_exit "Could not set role for $node" + fi +done + +# Run pre-deploy with default input +# Need to set terminal as script does "clear" and needs curses support +ssh root@${fuelIp} "TERM=vt100 /opt/opnfv/pre-deploy.sh < /dev/null" \ + || error_exit "Pre-deploy failed" + +# Inject node network config (will override pre-deploy Astute settings but we +# want to catch pre-deploy provisioning changes) +# TODO: There needs to be a function to adjust the NTP settings for clients +# TODO: to that of the actual set of controllers in this deployment. +echo "Running transplant #2" +ssh root@${fuelIp} "cd tools; ./transplant2.sh ../`basename $deafile`" \ + || error_exit "Error running transplant sequence #2" + + +# Deploy +echo "Deploying!" +ssh root@${fuelIp} "fuel deploy-changes --env $envId" >/dev/null 2>&1 || error_exit "Deploy failed" +echo "Deployment completed" diff --git a/fuel/prototypes/auto-deploy/deploy/functions/install_iso.sh b/fuel/prototypes/auto-deploy/deploy/functions/install_iso.sh new file mode 100755 index 0000000..2ec510b --- /dev/null +++ b/fuel/prototypes/auto-deploy/deploy/functions/install_iso.sh @@ -0,0 +1,91 @@ +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +fuelIp=`dea getFuelIp` || error_exit "Could not get fuel IP" +fuelNodeId=`dha getFuelNodeId` || error_exit "Could not get fuel node id" + + +if dha nodeCanZeroMBR $fuelNodeId; then + echo "Node $fuelNodeId capable of zeroing MBR so doing that..." + dha nodeZeroMBR $fuelNodeId || error_exit "Failed to zero Fuel MBR" + dha nodeSetBootOrder $fuelNodeId "disk iso" +elif dha nodeCanSetBootOrderLive; then + echo "Node can change ISO boot order live" + dha nodeSetBootOrder $fuelNodeId "iso disk" +else + error_exit "No way to install Fuel node" +fi + +sleep 3 +dha nodeEjectIso $fuelNodeId +dha nodeInsertIso $fuelNodeId $isofile + +sleep 3 +dha nodePowerOn $fuelNodeId + +# Switch back boot order to disk, hoping that node is now up + +# FIXME: Can we do a smarter and more generic detection of when the +# FIXME: kickstart procedure has started? Then th dha_waitForIsoBoot +# FIXME: can be removed. Setting and IP already in the kickstart install +# FIXME: and ping-wait for that? +dha waitForIsoBoot + +dha nodeSetBootOrder $fuelNodeId "disk iso" + +# wait for node up +echo "Waiting for Fuel master to accept SSH" +while true +do + ssh root@${fuelIp} date 2>/dev/null + if [ $? -eq 0 ]; then + break + fi + sleep 10 +done + +# Wait until fuelmenu is up +echo "Waiting for fuelmenu to come up" +menuPid="" +while [ -z "$menuPid" ] +do + menuPid=`ssh root@${fuelIp} "ps -ef" 2>&1 | grep fuelmenu | grep -v grep | awk '{ print $2 }'` + sleep 10 +done + +# This is where we inject our own astute.yaml settings +scp -q $deafile root@${fuelIp}:. || error_exit "Could not copy DEA file to Fuel" +echo "Uploading build tools to Fuel server" +ssh root@${fuelIp} rm -rf tools || error_exit "Error cleaning old tools structure" +scp -qrp $topdir/tools root@${fuelIp}:. || error_exit "Error copying tools" +echo "Running transplant #0" +ssh root@${fuelIp} "cd tools; ./transplant0.sh ../`basename $deafile`" \ + || error_exit "Error running transplant sequence #0" + + + +# Let the Fuel deployment continue +echo "Found menu as PID $menuPid, now killing it" +ssh root@${fuelIp} "kill $menuPid" 2>/dev/null + +# Wait until installation complete +echo "Waiting for bootstrap of Fuel node to complete" +while true +do + ssh root@${fuelIp} "ps -ef" 2>/dev/null \ + | grep -q /usr/local/sbin/bootstrap_admin_node + if [ $? -ne 0 ]; then + break + fi + sleep 10 +done + +echo "Waiting for one minute for Fuel to stabilize" +sleep 1m diff --git a/fuel/prototypes/auto-deploy/deploy/functions/isolinux.cfg.patch b/fuel/prototypes/auto-deploy/deploy/functions/isolinux.cfg.patch new file mode 100644 index 0000000..298a057 --- /dev/null +++ b/fuel/prototypes/auto-deploy/deploy/functions/isolinux.cfg.patch @@ -0,0 +1,14 @@ +*** isolinux/isolinux.cfg.orig 2015-04-15 08:29:52.026868322 -0400 +--- isolinux/isolinux.cfg 2015-04-15 08:30:34.350868343 -0400 +*************** +*** 19,22 **** + menu label Fuel Install (^Static IP) + menu default + kernel vmlinuz +! append initrd=initrd.img biosdevname=0 ks=cdrom:/ks.cfg ip=10.20.0.2 gw=10.20.0.1 dns1=10.20.0.1 netmask=255.255.255.0 hostname=fuel.domain.tld showmenu=no +--- 19,22 ---- + menu label Fuel Install (^Static IP) + menu default + kernel vmlinuz +! append initrd=initrd.img biosdevname=0 ks=cdrom:/ks.cfg ip=10.20.0.2 gw=10.20.0.1 dns1=10.20.0.1 netmask=255.255.255.0 hostname=fuel.domain.tld showmenu=yes + diff --git a/fuel/prototypes/auto-deploy/deploy/functions/ks.cfg.patch b/fuel/prototypes/auto-deploy/deploy/functions/ks.cfg.patch new file mode 100644 index 0000000..1896957 --- /dev/null +++ b/fuel/prototypes/auto-deploy/deploy/functions/ks.cfg.patch @@ -0,0 +1,19 @@ +*** ks.cfg.orig Wed Apr 15 21:47:09 2015 +--- ks.cfg Wed Apr 15 21:47:24 2015 +*************** +*** 35,41 **** + default_drive=`echo ${drives} ${removable_drives} | awk '{print $1}'` + + installdrive="undefined" +! forceformat="no" + for I in `cat /proc/cmdline`; do case "$I" in *=*) eval $I;; esac ; done + + set ${drives} ${removable_drives} +--- 35,41 ---- + default_drive=`echo ${drives} ${removable_drives} | awk '{print $1}'` + + installdrive="undefined" +! forceformat="yes" + for I in `cat /proc/cmdline`; do case "$I" in *=*) eval $I;; esac ; done + + set ${drives} ${removable_drives} diff --git a/fuel/prototypes/auto-deploy/deploy/functions/patch-iso.sh b/fuel/prototypes/auto-deploy/deploy/functions/patch-iso.sh new file mode 100755 index 0000000..933281f --- /dev/null +++ b/fuel/prototypes/auto-deploy/deploy/functions/patch-iso.sh @@ -0,0 +1,88 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2015 Ericsson AB and others. +# stefan.k.berg@ericsson.com +# jonas.bjurel@ericsson.com +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +# This is a temporary script - this should be rolled into a separate +# build target "make ci-iso" instead! + +exit_handler() { + rm -Rf $tmpnewdir + fusermount -u $tmporigdir 2>/dev/null + test -d $tmporigdir && mdir $tmporigdir +} + +trap exit_handler exit + +error_exit() { + echo "$@" + exit 1 +} + +if [ $# -ne 8 ]; then + error_exit "Input argument error" +fi + +top=$(cd `dirname $0`; pwd) +origiso=$(cd `dirname $1`; echo `pwd`/`basename $1`) +newiso=$(cd `dirname $2`; echo `pwd`/`basename $2`) +tmpdir=$3 +fuelIp=$4 +fuelNetmask=$5 +fuelGateway=$6 +fuelHostname=$7 +fuelDns=$8 + +tmporigdir=/${tmpdir}/origiso +tmpnewdir=/${tmpdir}/newiso + +test -f $origiso || error_exit "Could not find origiso $origiso" +test -d $tmpdir || error_exit "Could not find tmpdir $tmpdir" + + +if [ "`whoami`" != "root" ]; then + error_exit "You need be root to run this script" +fi + +echo "Copying..." +rm -Rf $tmporigdir $tmpnewdir +mkdir -p $tmporigdir $tmpnewdir +fuseiso $origiso $tmporigdir || error_exit "Failed fuseiso" +cd $tmporigdir +find . | cpio -pd $tmpnewdir +cd $tmpnewdir +fusermount -u $tmporigdir +rmdir $tmporigdir +chmod -R 755 $tmpnewdir + +echo "Patching..." +cd $tmpnewdir +# Patch ISO to make it suitable for automatic deployment +cat $top/ks.cfg.patch | patch -p0 || error_exit "Failed patching ks.cfg" +rm -rf .rr_moved + +# Add dynamic Fuel content +echo "isolinux.cfg before: `grep netmask isolinux/isolinux.cfg`" +sed -i "s/ ip=[^ ]*/ ip=$fuelIp/" isolinux/isolinux.cfg +sed -i "s/ gw=[^ ]*/ gw=$fuelGateway/" isolinux/isolinux.cfg +sed -i "s/ dns1=[^ ]*/ dns1=$fuelDns/" isolinux/isolinux.cfg +sed -i "s/ netmask=[^ ]*/ netmask=$fuelNetmask/" isolinux/isolinux.cfg +sed -i "s/ hostname=[^ ]*/ hostname=$fuelHostname/" isolinux/isolinux.cfg +sed -i "s/ showmenu=[^ ]*/ showmenu=yes/" isolinux/isolinux.cfg +echo "isolinux.cfg after: `grep netmask isolinux/isolinux.cfg`" + +rm -vf $newiso +echo "Creating iso $newiso" +mkisofs -quiet -r \ + -J -R -b isolinux/isolinux.bin \ + -no-emul-boot \ + -boot-load-size 4 -boot-info-table \ + --hide-rr-moved \ + -x "lost+found" -o $newiso . || error_exit "Failed making iso" + |