summaryrefslogtreecommitdiff
path: root/scripts/build-vmware-image
diff options
context:
space:
mode:
authorYuya Kusakabe <yuya.kusakabe@gmail.com>2016-03-08 11:17:56 +0900
committerYuya Kusakabe <yuya.kusakabe@gmail.com>2016-03-08 11:17:56 +0900
commita0a10a1057ceafe7abf6a8da30894c97e5a90a1a (patch)
treea2e2851159364898070f9eeb8009f41c28361920 /scripts/build-vmware-image
parentc5df2dd17dffda133a0c0bb68d6a9a16c10f1c2e (diff)
downloadvyos-build-a0a10a1057ceafe7abf6a8da30894c97e5a90a1a.tar.gz
vyos-build-a0a10a1057ceafe7abf6a8da30894c97e5a90a1a.zip
Add support for signed VMware OVF (ref T14).
Diffstat (limited to 'scripts/build-vmware-image')
-rwxr-xr-xscripts/build-vmware-image78
1 files changed, 78 insertions, 0 deletions
diff --git a/scripts/build-vmware-image b/scripts/build-vmware-image
new file mode 100755
index 00000000..189461eb
--- /dev/null
+++ b/scripts/build-vmware-image
@@ -0,0 +1,78 @@
+#!/bin/sh
+#
+# Copyright (C) 2016 VyOS maintainers and contributors
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 or later as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# File: build-vmware-ovf
+# Purpose:
+# Build VyOS OVF for VMware.
+
+if [ ! $(which vmdk-convert) ]; then
+ echo "Your system doesn't have vmdk-convert. Please install it from https://github.com/vmware/open-vmdk."
+ exit 1
+else
+ echo "Your system has vmdk-convert."
+fi
+
+if [ ! $(which ovftool) ]; then
+ echo "Your system doesn't have ovftool. Please install it from https://www.vmware.com/support/developer/ovf/."
+ exit 1
+else
+ echo "Your system has ovftool."
+fi
+
+export PACKER_BUILD_DIR=packer_build
+export PACKER_LOG_PATH=${PACKER_BUILD_DIR}/build_vmware_ovf.log
+export PACKER_LOG=1
+
+mkdir -p ${PACKER_BUILD_DIR}
+DST_DIR=${PACKER_BUILD_DIR}/vmware
+
+packer build -only=vmware-image scripts/packer.json
+
+# Convert raw image to VMDK
+source_image=${DST_DIR}/vyos_vmware_image.img
+tmp_vmdk=${DST_DIR}/tmp.vmdk
+vmdk=${DST_DIR}/vyos_vmware_image.vmdk
+ovf=${DST_DIR}/vyos_vmware_image.ovf
+qemu-img convert -f raw ${source_image} -O vmdk -o adapter_type=lsilogic ${tmp_vmdk}
+vmdk-convert ${tmp_vmdk} ${vmdk}
+
+# Generate OVF
+echo 'Generating OVF file...'
+vmdk_file_size=$(du --bytes ${vmdk} | cut -f1)
+vmdk_populated_size=$(vmdk-convert -i ${vmdk} | jq .used)
+version=$(cat build/version)
+sed scripts/template.ovf \
+ -e "s/{{vmdk_file_size}}/${vmdk_file_size}/" \
+ -e "s/{{vmdk_populated_size}}/${vmdk_populated_size}/" \
+ -e "s/{{version}}/${version}/" \
+ > ${ovf}
+
+# Generate manifest file
+cd ${DST_DIR}
+openssl sha1 *.vmdk *.ovf > vyos_vmware_image.mf
+
+# Convert the OVF to signed OVA...
+echo 'Converting the OVF to signed OVA...'
+private_key=${PRIVATE_KEY_PATH:-"../../key/privatekey.pem"}
+if [ ! -f ${private_key} ]; then
+ echo 'Please put your key to "key/privatekey.pem" in repository root, or set PRIVATE_KEY_PATH to environment variables.'
+ exit 1
+fi
+ovftool --privateKey=${PRIVATE_KEY_PATH} vyos_vmware_image.ovf vyos_vmware_image-signed.ova
+
+# Convert the OVF to signed OVF...
+echo 'Converting the OVF to signed OVF...'
+ovftool --privateKey=${PRIVATE_KEY_PATH} vyos_vmware_image.ovf vyos_vmware_image-signed.ovf