From 55062ec90272e262418f5ac2466c780848c5df8b Mon Sep 17 00:00:00 2001 From: Alex Polvi Date: Tue, 6 Aug 2013 10:58:18 -0700 Subject: [PATCH 1/2] feat(vagrant): vmware fusion support --- build_library/virtualbox_ovf.sh | 9 ++--- build_library/vm_image_util.sh | 58 +++++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/build_library/virtualbox_ovf.sh b/build_library/virtualbox_ovf.sh index dc25db872f..0228a299ad 100755 --- a/build_library/virtualbox_ovf.sh +++ b/build_library/virtualbox_ovf.sh @@ -24,11 +24,6 @@ if [[ ! -e "${FLAGS_disk_vmdk}" ]]; then exit 1 fi -if [[ -z "${FLAGS_output_ovf}" ]]; then - echo "No ovf file path provided." >&2 - exit 1 -fi - DISK_NAME=$(basename "${FLAGS_disk_vmdk}") DISK_UUID=$(uuidgen) DISK_SIZE_BYTES=$(qemu-img info -f vmdk "${FLAGS_disk_vmdk}" \ @@ -68,7 +63,8 @@ end EOF fi -cat >"${FLAGS_output_ovf}" <"${FLAGS_output_ovf}" < @@ -289,3 +285,4 @@ cat >"${FLAGS_output_ovf}" < EOF +fi diff --git a/build_library/vm_image_util.sh b/build_library/vm_image_util.sh index a83e966585..fd66213d0e 100644 --- a/build_library/vm_image_util.sh +++ b/build_library/vm_image_util.sh @@ -10,6 +10,7 @@ VALID_IMG_TYPES=( qemu rackspace vagrant + vagrant_vmware virtualbox vmware xen @@ -64,6 +65,11 @@ IMG_vagrant_DISK_FORMAT=vmdk IMG_vagrant_CONF_FORMAT=vagrant IMG_vagrant_OEM_PACKAGE=oem-vagrant +## vagrant_vmware +IMG_vagrant_vmware_DISK_FORMAT=vmdk +IMG_vagrant_vmware_CONF_FORMAT=vagrant_vmware +IMG_vagrant_vmware_OEM_PACKAGE=oem-vagrant + ## vmware IMG_vmware_DISK_FORMAT=vmdk IMG_vmware_CONF_FORMAT=vmx @@ -345,7 +351,7 @@ sound.virtualDev = "es1371" displayName = "CoreOS" guestOS = "otherlinux" ethernet0.addressType = "generated" -floppy0.present = "FALSE"" +floppy0.present = "FALSE" EOF VM_GENERATED_FILES+=( "${vmx_path}" ) } @@ -439,7 +445,11 @@ _write_vagrant_conf() { --output_ovf "$ovf" \ --output_vagrant "$vfile" - tar -czf "${box}" -C "${VM_TMP_DIR}" "box.ovf" "Vagrantfile" "${dst_name}" + cat > "${VM_TMP_DIR}"/metadata.json < "${VM_README}" <= 1.2 is required. Use something like the following to get started: @@ -456,6 +466,50 @@ EOF VM_GENERATED_FILES=( "${box}" "${VM_README}" ) } +_write_vagrant_vmware_conf() { + local vm_mem="${1:-$(_get_vm_opt MEM)}" + local src_name=$(basename "$VM_SRC_IMG") + local dst_name=$(basename "$VM_DST_IMG") + local dst_dir=$(dirname "$VM_DST_IMG") + local vmx_path="${dst_dir}/$(_src_to_dst_name "${src_name}" ".vmx")" + local vmx_file=$(basename "${vmx_path}") + local vfile="${VM_TMP_DIR}/Vagrantfile" + local box="${dst_dir}/$(_src_to_dst_name "${src_name}" ".box")" + + # Move the disk image to tmp, it won't be a final output file + mv "${VM_DST_IMG}" "${VM_TMP_DIR}/${dst_name}" + + _write_vmx_conf ${vm_mem} + "${BUILD_LIBRARY_DIR}/virtualbox_ovf.sh" \ + --vm_name "$VM_NAME" \ + --disk_vmdk "${VM_TMP_DIR}/${dst_name}" \ + --memory_size "$vm_mem" \ + --output_vagrant "$vfile" + + cat > "${VM_TMP_DIR}"/metadata.json < "${VM_README}" < Date: Tue, 6 Aug 2013 11:14:03 -0700 Subject: [PATCH 2/2] call it --format=vagrant_vmware_fusion --- build_library/vm_image_util.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build_library/vm_image_util.sh b/build_library/vm_image_util.sh index fd66213d0e..5f01ecaf7e 100644 --- a/build_library/vm_image_util.sh +++ b/build_library/vm_image_util.sh @@ -10,7 +10,7 @@ VALID_IMG_TYPES=( qemu rackspace vagrant - vagrant_vmware + vagrant_vmware_fusion virtualbox vmware xen @@ -66,9 +66,9 @@ IMG_vagrant_CONF_FORMAT=vagrant IMG_vagrant_OEM_PACKAGE=oem-vagrant ## vagrant_vmware -IMG_vagrant_vmware_DISK_FORMAT=vmdk -IMG_vagrant_vmware_CONF_FORMAT=vagrant_vmware -IMG_vagrant_vmware_OEM_PACKAGE=oem-vagrant +IMG_vagrant_vmware_fusion_DISK_FORMAT=vmdk +IMG_vagrant_vmware_fusion_CONF_FORMAT=vagrant_vmware_fusion +IMG_vagrant_vmware_fusion_OEM_PACKAGE=oem-vagrant ## vmware IMG_vmware_DISK_FORMAT=vmdk @@ -466,7 +466,7 @@ EOF VM_GENERATED_FILES=( "${box}" "${VM_README}" ) } -_write_vagrant_vmware_conf() { +_write_vagrant_vmware_fusion_conf() { local vm_mem="${1:-$(_get_vm_opt MEM)}" local src_name=$(basename "$VM_SRC_IMG") local dst_name=$(basename "$VM_DST_IMG")