github.com/vmware/govmomi@v0.37.1/scripts/devbox/create.sh (about) 1 #!/bin/bash -e 2 3 # Deploy Vagrant box to esx 4 5 if [ "$(uname -s)" = "Darwin" ]; then 6 PATH="/Applications/VMware Fusion.app/Contents/Library:$PATH" 7 fi 8 9 export GOVC_DATASTORE=${GOVC_DATASTORE-"datastore1"} 10 export GOVC_NETWORK=${GOVC_NETWORK-"VM Network"} 11 export GOVC_INSECURE=1 12 13 echo "Deploying to $(govc object.collect -s - content.about.fullName) @ $(govc env -x GOVC_URL_HOST)..." 14 15 box=bento/ubuntu-16.04 16 provider=$(dirname $box) 17 name=$(basename $box) 18 disk="${name}.vmdk" 19 20 vm_name=${VM_NAME-"${USER}-${name}"} 21 vm_memory=${VM_MEMORY-4096} 22 23 pushd "$(dirname "$0")" >/dev/null 24 25 if ! govc datastore.ls "${name}/${disk}" 1>/dev/null 2>&1 ; then 26 if [ ! -e "$disk" ] ; then 27 src=$(echo ~/.vagrant.d/boxes/"${provider}"-*-"${name}"/*.*.*/vmware_desktop/disk.vmdk) 28 29 if [ ! -e "$src" ] ; then 30 echo "$box not found, install via: vagrant box add --provider vmware_desktop $box" 31 exit 1 32 fi 33 34 echo "Converting vagrant box for use with ESXi..." 35 vmware-vdiskmanager -r "$src" -t 5 "$disk" 36 fi 37 38 echo "Importing vmdk to datastore ${GOVC_DATASTORE}..." 39 govc import.vmdk "$disk" "$name" 40 fi 41 42 if [ -z "$(govc ls "vm/$vm_name")" ] ; then 43 echo "Creating VM ${vm_name}..." 44 45 govc vm.create -m "$vm_memory" -c 2 -g ubuntu64Guest -disk.controller=pvscsi -on=false "$vm_name" 46 47 govc vm.disk.attach -vm "$vm_name" -link=true -disk "$name/$disk" 48 49 govc device.cdrom.add -vm "$vm_name" >/dev/null 50 51 govc vm.change -e disk.enableUUID=1 -vm "$vm_name" 52 53 govc vm.power -on "$vm_name" 54 reboot=true 55 fi 56 57 ip=$(govc vm.ip -a -v4 "$vm_name") 58 me=$(ip route get "$ip" | head -1 | awk '{print $NF}') 59 60 ssh-keygen -R "$ip" 1>/dev/null 2>&1 61 ssh-keyscan -H "$ip" 2>/dev/null >> ~/.ssh/known_hosts 62 63 echo "Installing dependencies..." 64 ssh -i ~/.vagrant.d/insecure_private_key "vagrant@$ip" sudo bash -s - < ./provision.sh 65 66 if [ -n "$reboot" ] ; then 67 govc vm.power -r "$vm_name" 68 ip=$(govc vm.ip -a -v4 "$vm_name") 69 fi 70 71 echo "# For SSH access:" 72 echo % ssh-add \~/.vagrant.d/insecure_private_key 73 echo % ssh "vagrant@$ip" 74 75 GOPATH=${GOPATH-"$HOME"} 76 echo "# To NFS export \$GOPATH on this host:" 77 echo "% echo \"\$GOPATH $ip(rw,no_subtree_check,sync,all_squash,anonuid=\$UID,anongid=\$UID)\" | sudo tee -a /etc/exports" 78 echo "% sudo service nfs-kernel-server restart" 79 80 echo "# To NFS mount \$GOPATH in the VM:" 81 echo % ssh "vagrant@$ip" sudo mkdir -p "\$GOPATH" 82 echo % ssh "vagrant@$ip" sudo mount "$me:\$GOPATH" "\$GOPATH"