Add support for signed VMware OVA (ref T14).

This commit is contained in:
Yuya Kusakabe 2016-03-08 09:08:36 +09:00
parent 01083886e1
commit c5df2dd17d
2 changed files with 26 additions and 7 deletions

View File

@ -44,12 +44,12 @@ qemu:
@scripts/check-vm-build-env
@scripts/build-qemu-image
.PHONY: vmware-ovf
.PHONY: vmware-ova
.ONESHELL:
vmware-ovf:
vmware-ova:
@set -e
@scripts/check-vm-build-env
@scripts/build-vmware-ovf
@scripts/build-vmware-ova
.PHONY: clean
.ONESHELL:

View File

@ -25,6 +25,13 @@ 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
@ -43,13 +50,25 @@ qemu-img convert -f raw ${source_image} -O vmdk -o adapter_type=lsilogic ${tmp_v
vmdk-convert ${tmp_vmdk} ${vmdk}
# Generate OVF
vmdk_file_size=$(vmdk-convert -i ${vmdk} | jq .capacity)
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)
cat scripts/template.ovf | sed "s/{{vmdk_file_size}}/${vmdk_file_size}/" > ${ovf}
sed -i "s/{{vmdk_populated_size}}/${vmdk_populated_size}/" ${ovf}
sed -i "s/{{version}}/${version}/" ${ovf}
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" directory 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.ova