mirror of
https://github.com/vyos/vyos-build.git
synced 2025-10-01 20:28:40 +02:00
Add build scripts for VMware OVF (ref T14)
This commit is contained in:
parent
c3a238ff20
commit
7ba48ff801
7
Makefile
7
Makefile
@ -44,6 +44,13 @@ qemu:
|
||||
@scripts/check-vm-build-env
|
||||
@scripts/build-qemu-image
|
||||
|
||||
.PHONY: vmware-ovf
|
||||
.ONESHELL:
|
||||
vmware-ovf:
|
||||
@set -e
|
||||
@scripts/check-vm-build-env
|
||||
@scripts/build-vmware-ovf
|
||||
|
||||
.PHONY: clean
|
||||
.ONESHELL:
|
||||
clean:
|
||||
|
||||
@ -27,4 +27,4 @@ export PACKER_LOG=1
|
||||
|
||||
mkdir -p ${PACKER_BUILD_DIR}
|
||||
|
||||
packer build -only=qemu scripts/packer.json
|
||||
packer build -only=qemu-image scripts/packer.json
|
||||
|
||||
45
scripts/build-vmware-ovf
Executable file
45
scripts/build-vmware-ovf
Executable file
@ -0,0 +1,45 @@
|
||||
#!/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
|
||||
|
||||
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}
|
||||
|
||||
packer build -only=vmware-image scripts/packer.json
|
||||
|
||||
# Convert raw image to VMDK
|
||||
source_image=${PACKER_BUILD_DIR}/vmware/vyos_vmware_image.img
|
||||
tmp_vmdk=${PACKER_BUILD_DIR}/vmware/tmp.vmdk
|
||||
vmdk=${PACKER_BUILD_DIR}/vmware/vyos_vmware_image.vmdk
|
||||
qemu-img convert -f raw ${source_image} -O vmdk -o adapter_type=lsilogic ${tmp_vmdk}
|
||||
vmdk-convert ${tmp_vmdk} ${vmdk}
|
||||
|
||||
# Generate OVF
|
||||
vmdk_file_size=$(du --bytes ${vmdk} | awk '{print $1}')
|
||||
cat scripts/template.ovf | sed "s/{{vmdk_file_size}}/${vmdk_file_size}/" > packer_build/vmware/vyos_vmware_image.ovf
|
||||
29
scripts/packer-scripts/vmware.sh
Normal file
29
scripts/packer-scripts/vmware.sh
Normal file
@ -0,0 +1,29 @@
|
||||
#!/bin/vbash
|
||||
source /opt/vyatta/etc/functions/script-template
|
||||
|
||||
# Add Debian Jessie repository
|
||||
set system package repository jessie url 'http://ftp.nl.debian.org/debian/'
|
||||
set system package repository jessie distribution 'jessie'
|
||||
set system package repository jessie components 'main contrib non-free'
|
||||
commit
|
||||
save
|
||||
|
||||
# Install open-vm-tools
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install open-vm-tools
|
||||
|
||||
# Delete Debian Jessie repository
|
||||
delete system package repository jessie
|
||||
commit
|
||||
save
|
||||
|
||||
# Removing leftover leases and persistent rules
|
||||
sudo rm -f /var/lib/dhcp3/*
|
||||
|
||||
# Removing apt caches
|
||||
sudo rm -rf /var/cache/apt/*
|
||||
|
||||
# Removing hw-id
|
||||
delete interfaces ethernet eth0 hw-id
|
||||
commit
|
||||
save
|
||||
@ -7,6 +7,7 @@
|
||||
"builders":
|
||||
[
|
||||
{
|
||||
"name": "qemu-image",
|
||||
"type": "qemu",
|
||||
"iso_url": "{{user `iso_url`}}",
|
||||
"iso_checksum": "{{user `iso_checksum`}}",
|
||||
@ -57,6 +58,38 @@
|
||||
"save<enter><wait5>",
|
||||
"exit<enter><wait5>"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "vmware-image",
|
||||
"type": "qemu",
|
||||
"iso_url": "{{user `output_directory`}}/qemu/vyos_qemu_image.img",
|
||||
"iso_checksum_type": "none",
|
||||
"output_directory": "{{user `output_directory`}}/vmware",
|
||||
"shutdown_command": "sudo halt -p",
|
||||
"disk_image": true,
|
||||
"disk_size": 4096,
|
||||
"format": "raw",
|
||||
"headless": false,
|
||||
"accelerator": "tcg",
|
||||
"ssh_host_port_min": 2222,
|
||||
"ssh_host_port_max": 2229,
|
||||
"ssh_username": "vyos",
|
||||
"ssh_password": "vyos",
|
||||
"ssh_port": 22,
|
||||
"ssh_wait_timeout": "300s",
|
||||
"vm_name": "vyos_vmware_image.img",
|
||||
"net_device": "virtio-net",
|
||||
"disk_interface": "virtio",
|
||||
"boot_wait": "5s"
|
||||
}
|
||||
],
|
||||
"provisioners": [
|
||||
{
|
||||
"type": "shell",
|
||||
"only": ["vmware-image"],
|
||||
"scripts": [
|
||||
"scripts/packer-scripts/vmware.sh"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
131
scripts/template.ovf
Normal file
131
scripts/template.ovf
Normal file
@ -0,0 +1,131 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Envelope vmw:buildId="build-3018522" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<References>
|
||||
<File ovf:href="vyos_vmware_image.vmdk" ovf:id="file1" ovf:size="{{vmdk_file_size}}"/>
|
||||
</References>
|
||||
<DiskSection>
|
||||
<Info>Virtual disk information</Info>
|
||||
<Disk ovf:capacity="4" ovf:capacityAllocationUnits="byte * 2^30" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:populatedSize="0"/>
|
||||
</DiskSection>
|
||||
<NetworkSection>
|
||||
<Info>The list of logical networks</Info>
|
||||
<Network ovf:name="VM Network">
|
||||
<Description>The VM Network network</Description>
|
||||
</Network>
|
||||
</NetworkSection>
|
||||
<VirtualSystem ovf:id="vm">
|
||||
<Info>A virtual machine</Info>
|
||||
<Name>vyos</Name>
|
||||
<OperatingSystemSection ovf:id="1" vmw:osType="*other3xLinux64Guest">
|
||||
<Info>The kind of installed guest operating system</Info>
|
||||
</OperatingSystemSection>
|
||||
<VirtualHardwareSection>
|
||||
<Info>Virtual hardware requirements</Info>
|
||||
<System>
|
||||
<vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
|
||||
<vssd:InstanceID>0</vssd:InstanceID>
|
||||
<vssd:VirtualSystemIdentifier>vyos</vssd:VirtualSystemIdentifier>
|
||||
<vssd:VirtualSystemType>vmx-08</vssd:VirtualSystemType>
|
||||
</System>
|
||||
<Item>
|
||||
<rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
|
||||
<rasd:Description>Number of Virtual CPUs</rasd:Description>
|
||||
<rasd:ElementName>1 virtual CPU(s)</rasd:ElementName>
|
||||
<rasd:InstanceID>1</rasd:InstanceID>
|
||||
<rasd:ResourceType>3</rasd:ResourceType>
|
||||
<rasd:VirtualQuantity>1</rasd:VirtualQuantity>
|
||||
</Item>
|
||||
<Item>
|
||||
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
|
||||
<rasd:Description>Memory Size</rasd:Description>
|
||||
<rasd:ElementName>512MB of memory</rasd:ElementName>
|
||||
<rasd:InstanceID>2</rasd:InstanceID>
|
||||
<rasd:ResourceType>4</rasd:ResourceType>
|
||||
<rasd:VirtualQuantity>512</rasd:VirtualQuantity>
|
||||
</Item>
|
||||
<Item ovf:required="false">
|
||||
<rasd:Address>0</rasd:Address>
|
||||
<rasd:Description>USB Controller (EHCI)</rasd:Description>
|
||||
<rasd:ElementName>usb</rasd:ElementName>
|
||||
<rasd:InstanceID>3</rasd:InstanceID>
|
||||
<rasd:ResourceSubType>vmware.usb.ehci</rasd:ResourceSubType>
|
||||
<rasd:ResourceType>23</rasd:ResourceType>
|
||||
<vmw:Config ovf:required="false" vmw:key="ehciEnabled" vmw:value="true"/>
|
||||
</Item>
|
||||
<Item>
|
||||
<rasd:Address>0</rasd:Address>
|
||||
<rasd:Description>SCSI Controller</rasd:Description>
|
||||
<rasd:ElementName>scsiController0</rasd:ElementName>
|
||||
<rasd:InstanceID>4</rasd:InstanceID>
|
||||
<rasd:ResourceSubType>lsilogic</rasd:ResourceSubType>
|
||||
<rasd:ResourceType>6</rasd:ResourceType>
|
||||
</Item>
|
||||
<Item>
|
||||
<rasd:Address>1</rasd:Address>
|
||||
<rasd:Description>IDE Controller</rasd:Description>
|
||||
<rasd:ElementName>ideController1</rasd:ElementName>
|
||||
<rasd:InstanceID>5</rasd:InstanceID>
|
||||
<rasd:ResourceType>5</rasd:ResourceType>
|
||||
</Item>
|
||||
<Item ovf:required="false">
|
||||
<rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
|
||||
<rasd:ElementName>serial0</rasd:ElementName>
|
||||
<rasd:InstanceID>6</rasd:InstanceID>
|
||||
<rasd:ResourceType>21</rasd:ResourceType>
|
||||
<vmw:Config ovf:required="false" vmw:key="yieldOnPoll" vmw:value="false"/>
|
||||
</Item>
|
||||
<Item ovf:required="false">
|
||||
<rasd:AddressOnParent>0</rasd:AddressOnParent>
|
||||
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||
<rasd:ElementName>cdrom0</rasd:ElementName>
|
||||
<rasd:InstanceID>7</rasd:InstanceID>
|
||||
<rasd:Parent>5</rasd:Parent>
|
||||
<rasd:ResourceType>15</rasd:ResourceType>
|
||||
</Item>
|
||||
<Item>
|
||||
<rasd:AddressOnParent>0</rasd:AddressOnParent>
|
||||
<rasd:ElementName>disk0</rasd:ElementName>
|
||||
<rasd:HostResource>ovf:/disk/vmdisk1</rasd:HostResource>
|
||||
<rasd:InstanceID>8</rasd:InstanceID>
|
||||
<rasd:Parent>4</rasd:Parent>
|
||||
<rasd:ResourceType>17</rasd:ResourceType>
|
||||
</Item>
|
||||
<Item>
|
||||
<rasd:AddressOnParent>2</rasd:AddressOnParent>
|
||||
<rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
|
||||
<rasd:Connection>VM Network</rasd:Connection>
|
||||
<rasd:Description>VMXNET3 ethernet adapter on "nat"</rasd:Description>
|
||||
<rasd:ElementName>ethernet0</rasd:ElementName>
|
||||
<rasd:InstanceID>9</rasd:InstanceID>
|
||||
<rasd:ResourceSubType>VMXNET3</rasd:ResourceSubType>
|
||||
<rasd:ResourceType>10</rasd:ResourceType>
|
||||
<vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="false"/>
|
||||
</Item>
|
||||
<Item ovf:required="false">
|
||||
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||
<rasd:ElementName>sound</rasd:ElementName>
|
||||
<rasd:InstanceID>10</rasd:InstanceID>
|
||||
<rasd:ResourceSubType>vmware.soundcard.ensoniq1371</rasd:ResourceSubType>
|
||||
<rasd:ResourceType>1</rasd:ResourceType>
|
||||
</Item>
|
||||
<Item ovf:required="false">
|
||||
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||
<rasd:ElementName>video</rasd:ElementName>
|
||||
<rasd:InstanceID>11</rasd:InstanceID>
|
||||
<rasd:ResourceType>24</rasd:ResourceType>
|
||||
</Item>
|
||||
<Item ovf:required="false">
|
||||
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||
<rasd:ElementName>vmci</rasd:ElementName>
|
||||
<rasd:InstanceID>12</rasd:InstanceID>
|
||||
<rasd:ResourceSubType>vmware.vmci</rasd:ResourceSubType>
|
||||
<rasd:ResourceType>1</rasd:ResourceType>
|
||||
</Item>
|
||||
<vmw:Config ovf:required="false" vmw:key="cpuHotAddEnabled" vmw:value="true"/>
|
||||
<vmw:Config ovf:required="false" vmw:key="memoryHotAddEnabled" vmw:value="true"/>
|
||||
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.powerOffType" vmw:value="soft"/>
|
||||
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.resetType" vmw:value="soft"/>
|
||||
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.suspendType" vmw:value="soft"/>
|
||||
</VirtualHardwareSection>
|
||||
</VirtualSystem>
|
||||
</Envelope>
|
||||
Loading…
x
Reference in New Issue
Block a user