merge lp:~utlemming/livecd-rootfs/additional-cloud-targets to add Vagrant, OVA, VMDK and squashfs cloud image generation to livecd-rootfs
commit
6a39712da0
@ -1,3 +1,9 @@
|
|||||||
#!/bin/bash -ex
|
#!/bin/bash -ex
|
||||||
|
# vi: ts=4 noexpandtab
|
||||||
|
#
|
||||||
|
# Generate the rootfs.tar.gz and manifest
|
||||||
|
|
||||||
|
dpkg-query --admindir=binary/boot/filesystem.dir/var/lib/dpkg -W > livecd.ubuntu-cpc.rootfs.manifest
|
||||||
|
|
||||||
(cd "binary/boot/filesystem.dir/" && tar -c *) | \
|
(cd "binary/boot/filesystem.dir/" && tar -c *) | \
|
||||||
xz > "livecd.ubuntu-cpc.rootfs.tar.xz"
|
xz > "livecd.ubuntu-cpc.rootfs.tar.xz"
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash -eux
|
||||||
|
# vi: ts=4 noexpandtab
|
||||||
|
#
|
||||||
|
# Generate a squashfs root and manifest
|
||||||
|
|
||||||
|
apt-get -qqy install squashfs-tools
|
||||||
|
|
||||||
|
squashfs_f="${PWD}/livecd.ubuntu-cpc.squashfs"
|
||||||
|
squashfs_f_manifest="${squashfs_f}.manifest"
|
||||||
|
|
||||||
|
dpkg-query --admindir=binary/boot/filesystem.dir/var/lib/dpkg -W > ${squashfs_f_manifest}
|
||||||
|
|
||||||
|
(cd "binary/boot/filesystem.dir/" &&
|
||||||
|
mksquashfs . ${squashfs_f} \
|
||||||
|
-no-progress -xattrs -comp xz )
|
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash -eux
|
||||||
|
# vi: ts=4 expandtab
|
||||||
|
#
|
||||||
|
# Generate VMDK files
|
||||||
|
|
||||||
|
architecture=$(chroot chroot dpkg --print-architecture)
|
||||||
|
|
||||||
|
extension="disk1.vmdk"
|
||||||
|
case ${architecture} in
|
||||||
|
i386) image_target="binary/boot/disk.ext4";;
|
||||||
|
amd64) image_target="binary/boot/disk-uefi.ext4"; extension="uefi1.vmdk";;
|
||||||
|
*) echo "VMDK images are not supported for ${architecture} yet.";
|
||||||
|
exit 0;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
. /build/config/functions
|
||||||
|
|
||||||
|
create_vmdk binary/boot/disk.ext4 livecd.ubuntu-cpc.disk1.vmdk
|
||||||
|
|
||||||
|
if [ -e binary/boot/disk-uefi.ext4 ]; then
|
||||||
|
create_vmdk binary/boot/disk-uefi.ext4 livecd.ubuntu-cpc.uefi.vmdk
|
||||||
|
fi
|
@ -0,0 +1,88 @@
|
|||||||
|
#!/bin/bash -eux
|
||||||
|
# vi: ts=4 expandtab
|
||||||
|
#
|
||||||
|
# Generate OVA images
|
||||||
|
#
|
||||||
|
# OVA images are, by defintiion a tarball consisting of a disk image, OVF file
|
||||||
|
# and checksums. This step produces an OVA that is suitable for use with
|
||||||
|
# Cloud's that support the OVF specification.
|
||||||
|
#
|
||||||
|
# For this step, we re-use the VMDK's made in 040-vmdk-image.binary
|
||||||
|
|
||||||
|
cur_d=${PWD}
|
||||||
|
my_d=$(dirname $(readlink -f ${0}))
|
||||||
|
|
||||||
|
architecture=$(chroot chroot dpkg --print-architecture)
|
||||||
|
|
||||||
|
base_vmdk="livecd.ubuntu-cpc.disk1.vmdk"
|
||||||
|
case ${architecture} in
|
||||||
|
amd64) base_vmdk="livecd.ubuntu-cpc.uefi.vmdk";;
|
||||||
|
*) echo "OVA images are not supported for ${architecture} yet.";
|
||||||
|
exit 0;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ ! -e ${base_vmdk} ]; then
|
||||||
|
find . | grep vmdk
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Lets be safe about this
|
||||||
|
scratch_d=$(mktemp -d)
|
||||||
|
trap "rm -rf ${scratch_d}" EXIT
|
||||||
|
|
||||||
|
# Used to identify bits
|
||||||
|
suite=$(chroot chroot lsb_release -c -s)
|
||||||
|
version=$(chroot chroot lsb_release --release --short)
|
||||||
|
distro=$(chroot chroot lsb_release --id --short | tr [:upper:] [:lower:])
|
||||||
|
|
||||||
|
# Put our vmdk in place for OVA conversion
|
||||||
|
prefix="${distro}-${suite}-${version}-cloudimg"
|
||||||
|
vmdk_f="${scratch_d}/${prefix}.vmdk"
|
||||||
|
cp ${base_vmdk} ${vmdk_f}
|
||||||
|
|
||||||
|
# Get information about the VMDK
|
||||||
|
vmdk_size=$(du -b "${vmdk_f}" | cut -f1)
|
||||||
|
vmdk_capacity=$(qemu-img info "${vmdk_f}" | awk '-F[\( ]' '$1 ~ /virtual/ && $NF ~ /bytes.*/ {print$(NF-1)}')
|
||||||
|
|
||||||
|
# Populate the OVF template
|
||||||
|
ovf="${scratch_d}/${prefix}.ovf"
|
||||||
|
cp ${my_d}/ovf/ubuntu-ova-v1-vmdk.tmpl ${ovf}
|
||||||
|
serial_stamp=$(date +%Y%m%d)
|
||||||
|
sed -i "${ovf}" \
|
||||||
|
-e "s/@@NAME@@/${prefix}-${serial_stamp}/g" \
|
||||||
|
-e "s/@@FILENAME@@/${vmdk_f##*/}/g" \
|
||||||
|
-e "s/@@VMDK_FILE_SIZE@@/${vmdk_size}/g" \
|
||||||
|
-e "s/@@VMDK_CAPACITY@@/${vmdk_capacity}/g" \
|
||||||
|
-e "s/@@NUM_CPUS@@/2/g" \
|
||||||
|
-e "s/@@VERSION@@/${version}/g" \
|
||||||
|
-e "s/@@DATE@@/${serial_stamp}/g" \
|
||||||
|
-e "s/@@MEM_SIZE@@/1024/g"
|
||||||
|
|
||||||
|
# Get the checksums
|
||||||
|
vmdk_sha256=$(sha256sum ${vmdk_f} | cut -d' ' -f1)
|
||||||
|
ovf_sha256=$(sha256sum ${ovf} | cut -d' ' -f1)
|
||||||
|
|
||||||
|
# Generate the manifest
|
||||||
|
manifest="${scratch_d}/${prefix}.mf"
|
||||||
|
cat > "${manifest}" <<EOF
|
||||||
|
SHA256(${vmdk_f##*/})= ${vmdk_sha256}
|
||||||
|
SHA256(${ovf##*/}.ovf)= ${ovf_sha256}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Now create the OVA
|
||||||
|
echo "Creating OVA with the following attributes:"
|
||||||
|
cat <<EOM
|
||||||
|
OVA information:
|
||||||
|
Name: ${prefix}
|
||||||
|
Size: ${vmdk_size}
|
||||||
|
Capacity: ${vmdk_capacity}
|
||||||
|
VMDK Name: ${vmdk_f##*/}
|
||||||
|
VMDK SHA256: ${vmdk_sha256}
|
||||||
|
OVF SHA256: ${ovf_sha256}
|
||||||
|
EOM
|
||||||
|
|
||||||
|
tar -C ${scratch_d} \
|
||||||
|
-cf ${cur_d}/livecd.ubuntu-cpc.ova \
|
||||||
|
${prefix}.ovf \
|
||||||
|
${prefix}.mf \
|
||||||
|
${vmdk_f##*/}
|
@ -0,0 +1,185 @@
|
|||||||
|
#!/bin/bash -eux
|
||||||
|
# vi: ts=4 noexpandtab
|
||||||
|
#
|
||||||
|
# Generate a generic Vagrant Box.
|
||||||
|
#
|
||||||
|
# Vagrant images are essentially nothing more than OVA's with extra-metadata.
|
||||||
|
#
|
||||||
|
# We can't use the OVA's for Vagrant since Vagrant uses SSH to modify the instance.
|
||||||
|
# This build step creates a cloud-config ISO so that Cloud-Init will configure
|
||||||
|
# the initial user, creates meta-data that tells Vagrant how to interact with
|
||||||
|
# the cloud-init created users, and finally create the OVA.
|
||||||
|
#
|
||||||
|
# For this step, we re-use the VMDK's made in 040-vmdk-image.binary
|
||||||
|
|
||||||
|
cur_d=${PWD}
|
||||||
|
my_d=$(dirname $(readlink -f ${0}))
|
||||||
|
|
||||||
|
architecture=$(chroot chroot dpkg --print-architecture)
|
||||||
|
base_vmdk="livecd.ubuntu-cpc.disk1.vmdk"
|
||||||
|
|
||||||
|
if [[ ! "${architecture}" =~ (amd64|i386) ]]; then
|
||||||
|
echo "Vagrant images are not supported for ${architecutre}"
|
||||||
|
exit 0
|
||||||
|
elif [ ! -e ${base_vmdk} ]; then
|
||||||
|
echo "Did not find VMDK to produce Vagrant images."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
. /build/config/functions
|
||||||
|
|
||||||
|
# Virtualbox is needed for making a small VMDK
|
||||||
|
apt-get -qqy install genisoimage qemu-utils
|
||||||
|
|
||||||
|
# Lets be safe about this
|
||||||
|
box_d=$(mktemp -d)
|
||||||
|
seed_d=$(mktemp -d)
|
||||||
|
trap "rm -rf ${box_d} ${seed_d}" EXIT
|
||||||
|
|
||||||
|
# Used to identify bits
|
||||||
|
suite=$(chroot chroot lsb_release -c -s)
|
||||||
|
version=$(chroot chroot lsb_release --release --short)
|
||||||
|
distro=$(chroot chroot lsb_release --id --short | tr [:upper:] [:lower:])
|
||||||
|
|
||||||
|
# Get the VMDK in place
|
||||||
|
prefix="${distro}-${suite}-${version}-cloudimg"
|
||||||
|
vmdk_f="${box_d}/${prefix}.vmdk"
|
||||||
|
cp ${base_vmdk} ${vmdk_f}
|
||||||
|
|
||||||
|
# Vagrant needs a base user. We either inject the well-known SSH key
|
||||||
|
# or use password authentication. Both are ugly. So we'll use a password
|
||||||
|
# and make it random. This obviously is insecure...but at least its
|
||||||
|
# better than the alternatives.
|
||||||
|
ubuntu_user_pass=$(openssl rand -hex 12)
|
||||||
|
|
||||||
|
####################################
|
||||||
|
# Create the ConfigDrive
|
||||||
|
# This is a cloud-init piece that instructs cloud-init to configure
|
||||||
|
# a default user at first boot.
|
||||||
|
|
||||||
|
cdrom_vmdk_f="${box_d}/${prefix}-configdrive.vmdk"
|
||||||
|
|
||||||
|
# Create the user-data. This is totally insecure, but so is Vagrant. To
|
||||||
|
# mitigate this insecurity, the vagrant instance is not accessible
|
||||||
|
# except via local host.
|
||||||
|
cat > ${seed_d}/user-data <<END
|
||||||
|
#cloud-config
|
||||||
|
password: ${ubuntu_user_pass}
|
||||||
|
chpasswd: { expire: False }
|
||||||
|
ssh_pwauth: True
|
||||||
|
END
|
||||||
|
|
||||||
|
# Create the fake meta-data
|
||||||
|
cat > ${seed_d}/meta-data <<END
|
||||||
|
instance-id: iid-$(openssl rand -hex 8)
|
||||||
|
local-hostname: ubuntu-${suite}
|
||||||
|
END
|
||||||
|
|
||||||
|
# Pad the cdrom, otherwise the VMDK will be invalid
|
||||||
|
dd if=/dev/zero of=${seed_d}/bloat_file bs=1M count=10
|
||||||
|
|
||||||
|
# Create the ISO
|
||||||
|
genisoimage \
|
||||||
|
-output ${seed_d}/seed.iso \
|
||||||
|
-volid cidata \
|
||||||
|
-joliet -rock \
|
||||||
|
-input-charset utf-8 \
|
||||||
|
${seed_d}/user-data \
|
||||||
|
${seed_d}/meta-data
|
||||||
|
|
||||||
|
# Make a VMDK out of the seed file.
|
||||||
|
create_vmdk ${seed_d}/seed.iso ${cdrom_vmdk_f} 10
|
||||||
|
|
||||||
|
### END Create ConfigDrive
|
||||||
|
##########################
|
||||||
|
|
||||||
|
##########################
|
||||||
|
# VAGRANT meta-data
|
||||||
|
|
||||||
|
# Create the Vagrant file. This file is used by Vagrant to define how
|
||||||
|
# Vagrant uses Virtualbox and how Vagrant interacts with the host.
|
||||||
|
macaddr="02$(openssl rand -hex 5 | tr [:lower:] [:upper:])"
|
||||||
|
cat > ${box_d}/Vagrantfile <<EOF
|
||||||
|
# Front load the includes
|
||||||
|
include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__)
|
||||||
|
load include_vagrantfile if File.exist?(include_vagrantfile)
|
||||||
|
|
||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
config.vm.base_mac = "${macaddr}"
|
||||||
|
config.ssh.username = "ubuntu"
|
||||||
|
config.ssh.password = "${ubuntu_user_pass}"
|
||||||
|
config.vm.synced_folder '.', '/vagrant', disabled: true
|
||||||
|
end
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Tag it as a Virtualbox Vagrant
|
||||||
|
cat > ${box_d}/metadata.json <<EOF
|
||||||
|
{
|
||||||
|
"provider": "virtualbox"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# END
|
||||||
|
##########################
|
||||||
|
|
||||||
|
##########################
|
||||||
|
# Create the actual box
|
||||||
|
|
||||||
|
# Get information about the disks for the OVF
|
||||||
|
vmdk_size=$(du -b "${vmdk_f}" | cut -f1)
|
||||||
|
vmdk_capacity=$(qemu-img info "${vmdk_f}" | awk '-F[\( ]' '$1 ~ /virtual/ && $NF ~ /bytes.*/ {print$(NF-1)}')
|
||||||
|
vmdk_sha256=$(sha256sum ${vmdk_f} | cut -d' ' -f1)
|
||||||
|
|
||||||
|
cdrom_size=$(du -b "${cdrom_vmdk_f}" | cut -f1)
|
||||||
|
cdrom_capacity=$(qemu-img info "${cdrom_vmdk_f}" | awk '-F[\( ]' '$1 ~ /virtual/ && $NF ~ /bytes.*/ {print$(NF-1)}')
|
||||||
|
cdrom_sha256=$(sha256sum ${cdrom_vmdk_f} | cut -d' ' -f1)
|
||||||
|
|
||||||
|
# Populate the OVF template
|
||||||
|
ovf="${box_d}/box.ovf"
|
||||||
|
cp ${my_d}/ovf/ubuntu-ova-v1-cloudcfg-vmdk.tmpl ${ovf}
|
||||||
|
serial_stamp=$(date +%Y%m%d)
|
||||||
|
sed -i "${ovf}" \
|
||||||
|
-e "s/@@NAME@@/${prefix}-${serial_stamp}/g" \
|
||||||
|
-e "s/@@FILENAME1@@/${vmdk_f##*/}/g" \
|
||||||
|
-e "s/@@VMDK_FILE_SIZE@@/${vmdk_size}/g" \
|
||||||
|
-e "s/@@VMDK_CAPACITY@@/${vmdk_capacity}/g" \
|
||||||
|
-e "s/@@FILENAME2@@/${cdrom_vmdk_f##*/}/g" \
|
||||||
|
-e "s/@@VMDK_FILE_SIZE2@@/${cdrom_size}/g" \
|
||||||
|
-e "s/@@VMDK_CAPACITY2@@/${cdrom_capacity}/g" \
|
||||||
|
-e "s/@@NUM_CPUS@@/2/g" \
|
||||||
|
-e "s/@@VERSION@@/${version}/g" \
|
||||||
|
-e "s/@@DATE@@/${serial_stamp}/g" \
|
||||||
|
-e "s/@@MEM_SIZE@@/1024/g"
|
||||||
|
|
||||||
|
ovf_sha256=$(sha256sum ${ovf} | cut -d' ' -f1)
|
||||||
|
|
||||||
|
# Generate the manifest
|
||||||
|
manifest="${box_d}/${prefix}.mf"
|
||||||
|
cat > "${manifest}" <<EOF
|
||||||
|
SHA256(${vmdk_f##*/})= ${vmdk_sha256}
|
||||||
|
SHA256(${cdrom_vmdk_f##*/})= ${cdrom_sha256}
|
||||||
|
SHA256(${ovf##*/}.ovf)= ${ovf_sha256}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Now create the box
|
||||||
|
echo "Creating OVA with the following attributes:"
|
||||||
|
cat <<EOM
|
||||||
|
OVA information:
|
||||||
|
Name: ${prefix}
|
||||||
|
Size: ${vmdk_size}
|
||||||
|
VMDK Name: ${vmdk_f##*/}
|
||||||
|
VMDK Capacity: ${vmdk_capacity}
|
||||||
|
VMDK SHA256: ${vmdk_sha256}
|
||||||
|
CDROM Name: ${cdrom_vmdk_f##*/}
|
||||||
|
CDROM Capacity: ${cdrom_capacity}
|
||||||
|
CDROM SHA256: ${cdrom_sha256}
|
||||||
|
EOM
|
||||||
|
|
||||||
|
tar -C ${box_d} \
|
||||||
|
-cf ${cur_d}/livecd.ubuntu-cpc.vagrant.box \
|
||||||
|
box.ovf \
|
||||||
|
Vagrantfile \
|
||||||
|
metadata.json \
|
||||||
|
${prefix}.mf \
|
||||||
|
${vmdk_f##*/} \
|
||||||
|
${cdrom_vmdk_f##*/}
|
@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Execute extra binary hooks.
|
||||||
|
|
||||||
|
my_dir=$(dirname $(readlink -f ${0}))
|
||||||
|
extra_d=${my_dir}/extra
|
||||||
|
|
||||||
|
if [ ! -d ${my_dir}/extra ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Execute extra binary hooks
|
||||||
|
for recipe in $(find ${extra_d} -type f -executable);
|
||||||
|
do
|
||||||
|
bash ${recipe}
|
||||||
|
done
|
@ -0,0 +1,179 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Envelope 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="@@FILENAME1@@" ovf:id="file1" ovf:size="@@VMDK_FILE_SIZE@@"/>
|
||||||
|
<File ovf:href="@@FILENAME2@@" ovf:id="file2" ovf:size="@@VMDK_FILE_SIZE2@@"/>
|
||||||
|
</References>
|
||||||
|
<DiskSection>
|
||||||
|
<Info>Virtual disk information</Info>
|
||||||
|
<Disk ovf:capacity="@@VMDK_CAPACITY@@" ovf:capacityAllocationUnits="byte" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:populatedSize="0"/>
|
||||||
|
<Disk ovf:capacity="@@VMDK_CAPACITY2@@" ovf:capacityAllocationUnits="byte" ovf:diskId="vmdisk2" ovf:fileRef="file2" 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="@@NAME@@">
|
||||||
|
<Info>A virtual machine</Info>
|
||||||
|
<Name>@@NAME@@</Name>
|
||||||
|
<OperatingSystemSection ovf:id="100" vmw:osType="other3xLinux64Guest">
|
||||||
|
<Info>The kind of installed guest operating system</Info>
|
||||||
|
</OperatingSystemSection>
|
||||||
|
|
||||||
|
<ProductSection ovf:required="false">
|
||||||
|
<Info>Cloud-Init customization</Info>
|
||||||
|
<Product>Ubuntu @@VERSION@@ Server (@@DATE@@)</Product>
|
||||||
|
<Property ovf:key="instance-id" ovf:type="string" ovf:userConfigurable="true" ovf:value="id-ovf">
|
||||||
|
<Label>A Unique Instance ID for this instance</Label>
|
||||||
|
<Description>Specifies the instance id. This is required and used to determine if the machine should take "first boot" actions</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="hostname" ovf:type="string" ovf:userConfigurable="true" ovf:value="ubuntuguest">
|
||||||
|
<Description>Specifies the hostname for the appliance</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="seedfrom" ovf:type="string" ovf:userConfigurable="true">
|
||||||
|
<Label>Url to seed instance data from</Label>
|
||||||
|
<Description>This field is optional, but indicates that the instance should 'seed' user-data and meta-data from the given url. If set to 'http://tinyurl.com/sm-' is given, meta-data will be pulled from http://tinyurl.com/sm-meta-data and user-data from http://tinyurl.com/sm-user-data. Leave this empty if you do not want to seed from a url.</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="public-keys" ovf:type="string" ovf:userConfigurable="true" ovf:value="">
|
||||||
|
<Label>ssh public keys</Label>
|
||||||
|
<Description>This field is optional, but indicates that the instance should populate the default user's 'authorized_keys' with this value</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="user-data" ovf:type="string" ovf:userConfigurable="true" ovf:value="">
|
||||||
|
<Label>Encoded user-data</Label>
|
||||||
|
<Description>In order to fit into a xml attribute, this value is base64 encoded . It will be decoded, and then processed normally as user-data.</Description>
|
||||||
|
<!-- The following represents '#!/bin/sh\necho "hi world"'
|
||||||
|
ovf:value="IyEvYmluL3NoCmVjaG8gImhpIHdvcmxkIgo="
|
||||||
|
-->
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="password" ovf:type="string" ovf:userConfigurable="true" ovf:value="">
|
||||||
|
<Label>Default User's password</Label>
|
||||||
|
<Description>If set, the default user's password will be set to this value to allow password based login. The password will be good for only a single login. If set to the string 'RANDOM' then a random password will be generated, and written to the console.</Description>
|
||||||
|
</Property>
|
||||||
|
</ProductSection>
|
||||||
|
|
||||||
|
<VirtualHardwareSection ovf:transport="iso">
|
||||||
|
<Info>Virtual hardware requirements</Info>
|
||||||
|
<System>
|
||||||
|
<vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
|
||||||
|
<vssd:InstanceID>0</vssd:InstanceID>
|
||||||
|
<vssd:VirtualSystemIdentifier>@@NAME@@</vssd:VirtualSystemIdentifier>
|
||||||
|
<vssd:VirtualSystemType>vmx-10</vssd:VirtualSystemType>
|
||||||
|
</System>
|
||||||
|
<Item>
|
||||||
|
<rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
|
||||||
|
<rasd:Description>Number of Virtual CPUs</rasd:Description>
|
||||||
|
<rasd:ElementName>@@NUM_CPUS@@ virtual CPU(s)</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>1</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>3</rasd:ResourceType>
|
||||||
|
<rasd:VirtualQuantity>@@NUM_CPUS@@</rasd:VirtualQuantity>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
|
||||||
|
<rasd:Description>Memory Size</rasd:Description>
|
||||||
|
<rasd:ElementName>@@MEM_SIZE@@MB of memory</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>2</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>4</rasd:ResourceType>
|
||||||
|
<rasd:VirtualQuantity>@@MEM_SIZE@@</rasd:VirtualQuantity>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:Address>0</rasd:Address>
|
||||||
|
<rasd:Description>SCSI Controller</rasd:Description>
|
||||||
|
<rasd:ElementName>SCSI Controller 0</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>3</rasd:InstanceID>
|
||||||
|
<rasd:ResourceSubType>VirtualSCSI</rasd:ResourceSubType>
|
||||||
|
<rasd:ResourceType>6</rasd:ResourceType>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:Address>1</rasd:Address>
|
||||||
|
<rasd:Description>IDE Controller</rasd:Description>
|
||||||
|
<rasd:ElementName>VirtualIDEController 1</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>4</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>5</rasd:ResourceType>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:Address>0</rasd:Address>
|
||||||
|
<rasd:Description>IDE Controller</rasd:Description>
|
||||||
|
<rasd:ElementName>VirtualIDEController 0</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>5</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>5</rasd:ResourceType>
|
||||||
|
</Item>
|
||||||
|
<Item ovf:required="false">
|
||||||
|
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||||
|
<rasd:ElementName>VirtualVideoCard</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>6</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>24</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="enable3DSupport" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="enableMPTSupport" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="use3dRenderer" vmw:value="automatic"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="useAutoDetect" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="videoRamSizeInKB" vmw:value="4096"/>
|
||||||
|
</Item>
|
||||||
|
<Item ovf:required="false">
|
||||||
|
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||||
|
<rasd:ElementName>VirtualVMCIDevice</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>7</rasd:InstanceID>
|
||||||
|
<rasd:ResourceSubType>vmware.vmci</rasd:ResourceSubType>
|
||||||
|
<rasd:ResourceType>1</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="allowUnrestrictedCommunication" vmw:value="false"/>
|
||||||
|
</Item>
|
||||||
|
<Item ovf:required="false">
|
||||||
|
<rasd:AddressOnParent>0</rasd:AddressOnParent>
|
||||||
|
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||||
|
<rasd:ElementName>CD-ROM 1</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>8</rasd:InstanceID>
|
||||||
|
<rasd:Parent>4</rasd:Parent>
|
||||||
|
<rasd:ResourceSubType>vmware.cdrom.remotepassthrough</rasd:ResourceSubType>
|
||||||
|
<rasd:ResourceType>15</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="backing.exclusive" vmw:value="false"/>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:AddressOnParent>0</rasd:AddressOnParent>
|
||||||
|
<rasd:ElementName>Hard Disk 1</rasd:ElementName>
|
||||||
|
<rasd:HostResource>ovf:/disk/vmdisk1</rasd:HostResource>
|
||||||
|
<rasd:InstanceID>9</rasd:InstanceID>
|
||||||
|
<rasd:Parent>3</rasd:Parent>
|
||||||
|
<rasd:ResourceType>17</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="backing.writeThrough" vmw:value="false"/>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:AddressOnParent>1</rasd:AddressOnParent>
|
||||||
|
<rasd:ElementName>ConfigDriveDisk</rasd:ElementName>
|
||||||
|
<rasd:HostResource>ovf:/disk/vmdisk2</rasd:HostResource>
|
||||||
|
<rasd:InstanceID>10</rasd:InstanceID>
|
||||||
|
<rasd:Parent>3</rasd:Parent>
|
||||||
|
<rasd:ResourceType>17</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="backing.writeThrough" vmw:value="false"/>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:AddressOnParent>7</rasd:AddressOnParent>
|
||||||
|
<rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
|
||||||
|
<rasd:Connection>VM Network</rasd:Connection>
|
||||||
|
<rasd:Description>VmxNet3 ethernet adapter on "VM Network"</rasd:Description>
|
||||||
|
<rasd:ElementName>Ethernet 1</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>11</rasd:InstanceID>
|
||||||
|
<rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType>
|
||||||
|
<rasd:ResourceType>10</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
|
||||||
|
</Item>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="cpuHotAddEnabled" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="cpuHotRemoveEnabled" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="firmware" vmw:value="bios"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="virtualICH7MPresent" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="virtualSMCPresent" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="memoryHotAddEnabled" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="nestedHVEnabled" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.powerOffType" vmw:value="preset"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.resetType" vmw:value="preset"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.standbyAction" vmw:value="checkpoint"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.suspendType" vmw:value="preset"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.afterPowerOn" vmw:value="true"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.afterResume" vmw:value="true"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.beforeGuestShutdown" vmw:value="true"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.beforeGuestStandby" vmw:value="true"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.syncTimeWithHost" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.toolsUpgradePolicy" vmw:value="manual"/>
|
||||||
|
</VirtualHardwareSection>
|
||||||
|
</VirtualSystem>
|
||||||
|
</Envelope>
|
@ -0,0 +1,177 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Envelope 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="@@FILENAME@@" ovf:id="file1" ovf:size="@@VMDK_FILE_SIZE@@"/>
|
||||||
|
</References>
|
||||||
|
<DiskSection>
|
||||||
|
<Info>Virtual disk information</Info>
|
||||||
|
<Disk ovf:capacity="@@VMDK_CAPACITY@@" ovf:capacityAllocationUnits="byte" 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="@@NAME@@">
|
||||||
|
<Info>A virtual machine</Info>
|
||||||
|
<Name>@@NAME@@</Name>
|
||||||
|
<OperatingSystemSection ovf:id="100" vmw:osType="other3xLinux64Guest">
|
||||||
|
<Info>The kind of installed guest operating system</Info>
|
||||||
|
</OperatingSystemSection>
|
||||||
|
|
||||||
|
<ProductSection ovf:required="false">
|
||||||
|
<Info>Cloud-Init customization</Info>
|
||||||
|
<Product>Ubuntu @@VERSION@@ Server (@@DATE@@)</Product>
|
||||||
|
<Property ovf:key="instance-id" ovf:type="string" ovf:userConfigurable="true" ovf:value="id-ovf">
|
||||||
|
<Label>A Unique Instance ID for this instance</Label>
|
||||||
|
<Description>Specifies the instance id. This is required and used to determine if the machine should take "first boot" actions</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="hostname" ovf:type="string" ovf:userConfigurable="true" ovf:value="ubuntuguest">
|
||||||
|
<Description>Specifies the hostname for the appliance</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="seedfrom" ovf:type="string" ovf:userConfigurable="true">
|
||||||
|
<Label>Url to seed instance data from</Label>
|
||||||
|
<Description>This field is optional, but indicates that the instance should 'seed' user-data and meta-data from the given url. If set to 'http://tinyurl.com/sm-' is given, meta-data will be pulled from http://tinyurl.com/sm-meta-data and user-data from http://tinyurl.com/sm-user-data. Leave this empty if you do not want to seed from a url.</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="public-keys" ovf:type="string" ovf:userConfigurable="true" ovf:value="">
|
||||||
|
<Label>ssh public keys</Label>
|
||||||
|
<Description>This field is optional, but indicates that the instance should populate the default user's 'authorized_keys' with this value</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="user-data" ovf:type="string" ovf:userConfigurable="true" ovf:value="">
|
||||||
|
<Label>Encoded user-data</Label>
|
||||||
|
<Description>In order to fit into a xml attribute, this value is base64 encoded . It will be decoded, and then processed normally as user-data.</Description>
|
||||||
|
<!-- The following represents '#!/bin/sh\necho "hi world"'
|
||||||
|
ovf:value="IyEvYmluL3NoCmVjaG8gImhpIHdvcmxkIgo="
|
||||||
|
-->
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="password" ovf:type="string" ovf:userConfigurable="true" ovf:value="">
|
||||||
|
<Label>Default User's password</Label>
|
||||||
|
<Description>If set, the default user's password will be set to this value to allow password based login. The password will be good for only a single login. If set to the string 'RANDOM' then a random password will be generated, and written to the console.</Description>
|
||||||
|
</Property>
|
||||||
|
</ProductSection>
|
||||||
|
|
||||||
|
<VirtualHardwareSection ovf:transport="iso">
|
||||||
|
<Info>Virtual hardware requirements</Info>
|
||||||
|
<System>
|
||||||
|
<vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
|
||||||
|
<vssd:InstanceID>0</vssd:InstanceID>
|
||||||
|
<vssd:VirtualSystemIdentifier>@@NAME@@</vssd:VirtualSystemIdentifier>
|
||||||
|
<vssd:VirtualSystemType>vmx-10</vssd:VirtualSystemType>
|
||||||
|
</System>
|
||||||
|
<Item>
|
||||||
|
<rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
|
||||||
|
<rasd:Description>Number of Virtual CPUs</rasd:Description>
|
||||||
|
<rasd:ElementName>@@NUM_CPUS@@ virtual CPU(s)</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>1</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>3</rasd:ResourceType>
|
||||||
|
<rasd:VirtualQuantity>@@NUM_CPUS@@</rasd:VirtualQuantity>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
|
||||||
|
<rasd:Description>Memory Size</rasd:Description>
|
||||||
|
<rasd:ElementName>@@MEM_SIZE@@MB of memory</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>2</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>4</rasd:ResourceType>
|
||||||
|
<rasd:VirtualQuantity>@@MEM_SIZE@@</rasd:VirtualQuantity>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:Address>0</rasd:Address>
|
||||||
|
<rasd:Description>SCSI Controller</rasd:Description>
|
||||||
|
<rasd:ElementName>SCSI Controller 0</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>3</rasd:InstanceID>
|
||||||
|
<rasd:ResourceSubType>VirtualSCSI</rasd:ResourceSubType>
|
||||||
|
<rasd:ResourceType>6</rasd:ResourceType>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:Address>1</rasd:Address>
|
||||||
|
<rasd:Description>IDE Controller</rasd:Description>
|
||||||
|
<rasd:ElementName>VirtualIDEController 1</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>4</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>5</rasd:ResourceType>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:Address>0</rasd:Address>
|
||||||
|
<rasd:Description>IDE Controller</rasd:Description>
|
||||||
|
<rasd:ElementName>VirtualIDEController 0</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>5</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>5</rasd:ResourceType>
|
||||||
|
</Item>
|
||||||
|
<Item ovf:required="false">
|
||||||
|
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||||
|
<rasd:ElementName>VirtualVideoCard</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>6</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>24</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="enable3DSupport" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="enableMPTSupport" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="use3dRenderer" vmw:value="automatic"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="useAutoDetect" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="videoRamSizeInKB" vmw:value="4096"/>
|
||||||
|
</Item>
|
||||||
|
<Item ovf:required="false">
|
||||||
|
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||||
|
<rasd:ElementName>VirtualVMCIDevice</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>7</rasd:InstanceID>
|
||||||
|
<rasd:ResourceSubType>vmware.vmci</rasd:ResourceSubType>
|
||||||
|
<rasd:ResourceType>1</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="allowUnrestrictedCommunication" vmw:value="false"/>
|
||||||
|
</Item>
|
||||||
|
<Item ovf:required="false">
|
||||||
|
<rasd:AddressOnParent>0</rasd:AddressOnParent>
|
||||||
|
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||||
|
<rasd:ElementName>CD-ROM 1</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>8</rasd:InstanceID>
|
||||||
|
<rasd:Parent>4</rasd:Parent>
|
||||||
|
<rasd:ResourceSubType>vmware.cdrom.remotepassthrough</rasd:ResourceSubType>
|
||||||
|
<rasd:ResourceType>15</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="backing.exclusive" vmw:value="false"/>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:AddressOnParent>0</rasd:AddressOnParent>
|
||||||
|
<rasd:ElementName>Hard Disk 1</rasd:ElementName>
|
||||||
|
<rasd:HostResource>ovf:/disk/vmdisk1</rasd:HostResource>
|
||||||
|
<rasd:InstanceID>9</rasd:InstanceID>
|
||||||
|
<rasd:Parent>3</rasd:Parent>
|
||||||
|
<rasd:ResourceType>17</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="backing.writeThrough" vmw:value="false"/>
|
||||||
|
</Item>
|
||||||
|
<Item ovf:required="false">
|
||||||
|
<rasd:AddressOnParent>0</rasd:AddressOnParent>
|
||||||
|
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||||
|
<rasd:Description>Floppy Drive</rasd:Description>
|
||||||
|
<rasd:ElementName>Floppy 1</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>10</rasd:InstanceID>
|
||||||
|
<rasd:ResourceSubType>vmware.floppy.remotedevice</rasd:ResourceSubType>
|
||||||
|
<rasd:ResourceType>14</rasd:ResourceType>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:AddressOnParent>7</rasd:AddressOnParent>
|
||||||
|
<rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
|
||||||
|
<rasd:Connection>VM Network</rasd:Connection>
|
||||||
|
<rasd:Description>VmxNet3 ethernet adapter on "VM Network"</rasd:Description>
|
||||||
|
<rasd:ElementName>Ethernet 1</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>11</rasd:InstanceID>
|
||||||
|
<rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType>
|
||||||
|
<rasd:ResourceType>10</rasd:ResourceType>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="wakeOnLanEnabled" vmw:value="true"/>
|
||||||
|
</Item>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="cpuHotAddEnabled" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="cpuHotRemoveEnabled" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="firmware" vmw:value="bios"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="virtualICH7MPresent" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="virtualSMCPresent" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="memoryHotAddEnabled" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="nestedHVEnabled" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.powerOffType" vmw:value="preset"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.resetType" vmw:value="preset"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.standbyAction" vmw:value="checkpoint"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="powerOpInfo.suspendType" vmw:value="preset"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.afterPowerOn" vmw:value="true"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.afterResume" vmw:value="true"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.beforeGuestShutdown" vmw:value="true"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.beforeGuestStandby" vmw:value="true"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.syncTimeWithHost" vmw:value="false"/>
|
||||||
|
<vmw:Config ovf:required="false" vmw:key="tools.toolsUpgradePolicy" vmw:value="manual"/>
|
||||||
|
</VirtualHardwareSection>
|
||||||
|
</VirtualSystem>
|
||||||
|
</Envelope>
|
@ -0,0 +1,130 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Envelope 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: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="$FILE_DISK_HREF" ovf:id="file1" ovf:size="$FILE_DISK_SIZE" />
|
||||||
|
</References>
|
||||||
|
<DiskSection>
|
||||||
|
<Info>Virtual disk information</Info>
|
||||||
|
<Disk ovf:capacity="$DISK_CAPACITY" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://wiki.qemu.org/download/qcow2-spec.html"/>
|
||||||
|
</DiskSection>
|
||||||
|
<NetworkSection>
|
||||||
|
<Info>The list of logical networks</Info>
|
||||||
|
<Network ovf:name="bridged">
|
||||||
|
<Description>The bridged network</Description>
|
||||||
|
</Network>
|
||||||
|
</NetworkSection>
|
||||||
|
<VirtualSystem ovf:id="vm">
|
||||||
|
<Info>A virtual machine</Info>
|
||||||
|
<Name>$VIRTUAL_SYSTEM_NAME</Name>
|
||||||
|
<OperatingSystemSection ovf:id="93">
|
||||||
|
<Info>$VIRTUAL_SYSTEM_OS_INFO</Info>
|
||||||
|
</OperatingSystemSection>
|
||||||
|
<ProductSection>
|
||||||
|
<Info>Cloud-Init customization</Info>
|
||||||
|
<Product>$VIRTUAL_SYSTEM_OS_INFO</Product>
|
||||||
|
<Property ovf:key="instance-id" ovf:type="string" ovf:userConfigurable="true" ovf:value="id-ovf">
|
||||||
|
<Label>A Unique Instance ID for this instance</Label>
|
||||||
|
<Description>Specifies the instance id. This is required and used to determine if the machine should take "first boot" actions</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="hostname" ovf:type="string" ovf:userConfigurable="true" ovf:value="ubuntuguest">
|
||||||
|
<Description>Specifies the hostname for the appliance</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="seedfrom" ovf:type="string" ovf:userConfigurable="true">
|
||||||
|
<Label>Url to seed instance data from</Label>
|
||||||
|
<Description>This field is optional, but indicates that the instance should 'seed' user-data and meta-data from the given url. If set to 'http://tinyurl.com/sm-' is given, meta-data will be pulled from http://tinyurl.com/sm-meta-data and user-data from http://tinyurl.com/sm-user-data. Leave this empty if you do not want to seed from a url.</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="public-keys" ovf:type="string" ovf:userConfigurable="true" ovf:value="">
|
||||||
|
<Label>ssh public keys</Label>
|
||||||
|
<Description>This field is optional, but indicates that the instance should populate the default user's 'authorized_keys' with this value</Description>
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="user-data" ovf:type="string" ovf:userConfigurable="true" ovf:value="">
|
||||||
|
<Label>Encoded user-data</Label>
|
||||||
|
<Description>In order to fit into a xml attribute, this value is base64 encoded . It will be decoded, and then processed normally as user-data.</Description>
|
||||||
|
<!-- The following represents '#!/bin/sh\necho "hi world"'
|
||||||
|
ovf:value="IyEvYmluL3NoCmVjaG8gImhpIHdvcmxkIgo="
|
||||||
|
-->
|
||||||
|
</Property>
|
||||||
|
<Property ovf:key="password" ovf:type="string" ovf:userConfigurable="true" ovf:value="">
|
||||||
|
<Label>Default User's password</Label>
|
||||||
|
<Description>If set, the default user's password will be set to this value to allow password based login. The password will be good for only a single login. If set to the string 'RANDOM' then a random password will be generated, and written to the console.</Description>
|
||||||
|
</Property>
|
||||||
|
</ProductSection>
|
||||||
|
<VirtualHardwareSection ovf:transport="iso">
|
||||||
|
<Info>Virtual hardware requirements</Info>
|
||||||
|
<System>
|
||||||
|
<vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
|
||||||
|
<vssd:InstanceID>0</vssd:InstanceID>
|
||||||
|
<vssd:VirtualSystemIdentifier>$VIRTUAL_SYSTEM_IDENTIFIER</vssd:VirtualSystemIdentifier>
|
||||||
|
<vssd:VirtualSystemType>$VIRTUAL_SYSTEM_TYPES</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>256MB of memory</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>2</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>4</rasd:ResourceType>
|
||||||
|
<rasd:VirtualQuantity>256</rasd:VirtualQuantity>
|
||||||
|
</Item>
|
||||||
|
<Item ovf:required="false">
|
||||||
|
<rasd:Address>0</rasd:Address>
|
||||||
|
<rasd:Description>USB Controller</rasd:Description>
|
||||||
|
<rasd:ElementName>usb</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>3</rasd:InstanceID>
|
||||||
|
<rasd:ResourceType>23</rasd:ResourceType>
|
||||||
|
</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:AddressOnParent>0</rasd:AddressOnParent>
|
||||||
|
<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
|
||||||
|
<rasd:ElementName>cdrom1</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>6</rasd:InstanceID>
|
||||||
|
<rasd:Parent>5</rasd:Parent>
|
||||||
|
<rasd:ResourceType>15</rasd:ResourceType>
|
||||||
|
</Item>
|
||||||
|
<Item>
|
||||||
|
<rasd:AddressOnParent>0</rasd:AddressOnParent>
|
||||||
|
<rasd:ElementName>disk1</rasd:ElementName>
|
||||||
|
<rasd:HostResource>ovf:/disk/vmdisk1</rasd:HostResource>
|
||||||
|
<rasd:InstanceID>7</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>bridged</rasd:Connection>
|
||||||
|
<rasd:Description>ethernet adapter on "bridged"</rasd:Description>
|
||||||
|
<rasd:ElementName>ethernet0</rasd:ElementName>
|
||||||
|
<rasd:InstanceID>8</rasd:InstanceID>
|
||||||
|
<rasd:ResourceSubType>E1000</rasd:ResourceSubType>
|
||||||
|
<rasd:ResourceType>10</rasd:ResourceType>
|
||||||
|
</Item>
|
||||||
|
</VirtualHardwareSection>
|
||||||
|
<AnnotationSection ovf:required="false">
|
||||||
|
<Info>$ANNOTATION_INFO</Info>
|
||||||
|
<Annotation>$ANNOTATION</Annotation>
|
||||||
|
</AnnotationSection>
|
||||||
|
</VirtualSystem>
|
||||||
|
</Envelope>
|
Loading…
Reference in new issue