From a0a10a1057ceafe7abf6a8da30894c97e5a90a1a Mon Sep 17 00:00:00 2001 From: Yuya Kusakabe Date: Tue, 8 Mar 2016 11:17:56 +0900 Subject: Add support for signed VMware OVF (ref T14). --- scripts/build-vmware-image | 78 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100755 scripts/build-vmware-image (limited to 'scripts/build-vmware-image') 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 . +# +# 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 -- cgit v1.2.3 From b1e716208f9fb92966bda9b7425d6f67911105e4 Mon Sep 17 00:00:00 2001 From: Yuya Kusakabe Date: Sat, 26 Mar 2016 23:23:36 +0900 Subject: remove installing open-vm-tools process from build-vmware-image --- scripts/build-vmware-image | 12 ++++-------- scripts/packer.json | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) (limited to 'scripts/build-vmware-image') diff --git a/scripts/build-vmware-image b/scripts/build-vmware-image index 189461eb..e665e0b5 100755 --- a/scripts/build-vmware-image +++ b/scripts/build-vmware-image @@ -14,9 +14,9 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # -# File: build-vmware-ovf +# File: build-vmware-image # Purpose: -# Build VyOS OVF for VMware. +# Build VyOS OVA and 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." @@ -33,16 +33,12 @@ else 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 +mkdir -p ${DST_DIR} # Convert raw image to VMDK -source_image=${DST_DIR}/vyos_vmware_image.img +source_image=${PACKER_BUILD_DIR}/qemu/vyos_qemu_image.img tmp_vmdk=${DST_DIR}/tmp.vmdk vmdk=${DST_DIR}/vyos_vmware_image.vmdk ovf=${DST_DIR}/vyos_vmware_image.ovf diff --git a/scripts/packer.json b/scripts/packer.json index 52b0b284..b09b9834 100644 --- a/scripts/packer.json +++ b/scripts/packer.json @@ -46,7 +46,7 @@ "", "reboot", "Yes", - "vyos", + "vyos", "vyos", "configure", "set interface ethernet eth0 address dhcp", -- cgit v1.2.3 From bff1f61f47f228fbd8eae18586667779ccb27a31 Mon Sep 17 00:00:00 2001 From: Yuya Kusakabe Date: Fri, 28 Jul 2017 23:17:42 +0900 Subject: Add script for building Vagrant libvirt box --- scripts/Vagrantfile | 12 ++++++++++++ scripts/build-qemu-image | 2 +- scripts/build-vmware-image | 4 ++-- scripts/packer.json | 27 +++++++++++++++++++++++++-- 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 scripts/Vagrantfile (limited to 'scripts/build-vmware-image') diff --git a/scripts/Vagrantfile b/scripts/Vagrantfile new file mode 100644 index 00000000..7c89422d --- /dev/null +++ b/scripts/Vagrantfile @@ -0,0 +1,12 @@ +Vagrant.configure("2") do |config| + config.vm.synced_folder './', '/vagrant', + type: "rsync", + owner: 'vyos', + group: 'users', + mount_options: ['dmode=775,fmode=775'] + config.ssh.username = "vyos" + config.ssh.password = "vyos" + config.vm.provider :libvirt do |libvirt| + libvirt.driver = "kvm" + end +end diff --git a/scripts/build-qemu-image b/scripts/build-qemu-image index 59a42f07..29cb6cf1 100755 --- a/scripts/build-qemu-image +++ b/scripts/build-qemu-image @@ -20,7 +20,7 @@ BUILD_DIR=$(scripts/query-json build/build-config.json build_dir) BUILD_ARCH=$(scripts/query-json build/build-config.json architecture) -VERSION=$(cat $BUILD_DIR/version) +export VERSION=$(cat $BUILD_DIR/version) export ISO_IMAGE=./build/live-image-$BUILD_ARCH.hybrid.iso export ISO_MD5_SUM=$(md5sum ${ISO_IMAGE} | awk '{print $1}') diff --git a/scripts/build-vmware-image b/scripts/build-vmware-image index e665e0b5..1730d7a3 100755 --- a/scripts/build-vmware-image +++ b/scripts/build-vmware-image @@ -37,12 +37,12 @@ export PACKER_BUILD_DIR=packer_build DST_DIR=${PACKER_BUILD_DIR}/vmware mkdir -p ${DST_DIR} -# Convert raw image to VMDK +# Convert qcow2 image to VMDK source_image=${PACKER_BUILD_DIR}/qemu/vyos_qemu_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} +qemu-img convert -f qcow2 ${source_image} -O vmdk -o adapter_type=lsilogic ${tmp_vmdk} vmdk-convert ${tmp_vmdk} ${vmdk} # Generate OVF diff --git a/scripts/packer.json b/scripts/packer.json index 83df10c5..39ab423b 100644 --- a/scripts/packer.json +++ b/scripts/packer.json @@ -2,7 +2,11 @@ "variables": { "iso_url": "{{env `ISO_IMAGE`}}", "iso_checksum": "{{env `ISO_MD5_SUM`}}", - "output_directory": "{{env `PACKER_BUILD_DIR`}}" + "output_directory": "{{env `PACKER_BUILD_DIR`}}", + "box_tag": "{{env `VAGRANT_BOX_NAME`}}", + "cloud_token": "{{env `VAGRANT_CLOUD_ACCESS_TOKEN`}}", + "version": "{{env `VERSION`}}", + "box_base_url": "{{env `BOX_BASE_URL`}}" }, "builders": [ @@ -15,7 +19,7 @@ "output_directory": "{{user `output_directory`}}/qemu", "shutdown_command": "sudo halt -p", "disk_size": 4096, - "format": "raw", + "format": "qcow2", "headless": true, "ssh_host_port_min": 2222, "ssh_host_port_max": 2229, @@ -90,5 +94,24 @@ "scripts/packer-scripts/vmware.sh" ] } + ], + "post-processors": [ + [ + { + "type": "vagrant", + "only": ["qemu-image"], + "vagrantfile_template": "scripts/Vagrantfile", + "output": "{{user `output_directory`}}/vagrant-libvirt/vyos_vagrant_libvirt.box", + "keep_input_artifact": "true" + }, + { + "type": "vagrant-cloud", + "only": ["qemu-image"], + "box_tag": "{{user `box_tag`}}", + "access_token": "{{user `cloud_token`}}", + "version": "{{user `version`}}", + "box_download_url": "{{user `box_base_url`}}/vyos-{{user `version`}}-vagrant-libvirt.box" + } + ] ] } -- cgit v1.2.3