Skip to content

Instantly share code, notes, and snippets.

@masaki
Created October 10, 2011 17:18
Show Gist options
  • Save masaki/1275841 to your computer and use it in GitHub Desktop.
Save masaki/1275841 to your computer and use it in GitHub Desktop.
VMware ESXi 4.0 VM Cloning script w/ SSH enabled
#!/bin/sh
# usage: vmclone.sh SOURCE TARGET
SOURCE_NAME=$1
TARGET_NAME=$2
VMSTORE=/vmfs/volumes/datastore1
VMID=`vim-cmd vmsvc/getallvms | awk '/'"$SOURCE_NAME"'/ {print $1;}'`
SOURCE_DIR=$VMSTORE/$SOURCE_NAME
TARGET_DIR=$VMSTORE/$TARGET_NAME
NAME=$SOURCE_NAME
BASE=$SOURCE_DIR/$NAME
vim-cmd vmsvc/power.off $VMID
# NOTE: if not allow shutdown, create snapshot for hotcopying
#vim-cmd vmsvc/snapshot.create $VMID forBackup
mkdir $TARGET_DIR
vmkfstools -i $BASE.vmdk -d monosparse $TARGET_DIR/$NAME.vmdk
cp $BASE.vmx $BASE.vmxf $BASE.vmsd $BASE.nvram $TARGET_DIR
#vim-cmd vmsvc/snapshot.remove $VMID
# edit vmx
sed -i 's/displayName.*//g' $TARGET_DIR/$NAME.vmx
sed -i 's/vmci0\.id.*//g' $TARGET_DIR/$NAME.vmx
sed -i 's/vc\.uuid.*//g' $TARGET_DIR/$NAME.vmx
sed -i 's/sched\.swap\..*//g' $TARGET_DIR/$NAME.vmx
sed -i 's/uuid.*//g' $TARGET_DIR/$NAME.vmx
sed -i 's/ethernet0\.address.*//g' $TARGET_DIR/$NAME.vmx
sed -i 's/ethernet0\.generatedAddress.*//g' $TARGET_DIR/$NAME.vmx
echo uuid.action = \"create\" >> $TARGET_DIR/$NAME.vmx
NEW_VMID=`vim-cmd solo/registervm $TARGET_DIR/$NAME.vmx $TARGET_NAME`
vim-cmd vmsvc/power.on $NEW_VMID
#vim-cmd vmsvc/power.off $NEW_VMID
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment