This commit is contained in:
Savio D'souza 2023-01-04 12:49:25 +05:30
commit 7cbc236608
61 changed files with 1267 additions and 47 deletions

76
.github/workflows/codeql.yml vendored Normal file
View File

@ -0,0 +1,76 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ "master" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "master" ]
schedule:
- cron: '33 16 * * 0'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'python' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Use only 'java' to analyze code written in Java, Kotlin or both
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
with:
category: "/language:${{matrix.language}}"

22
.whitesource Normal file
View File

@ -0,0 +1,22 @@
{
"scanSettings": {
"configMode": "AUTO",
"configExternalURL": "",
"projectToken": "",
"baseBranches": []
},
"checkRunSettings": {
"vulnerableCheckRunConclusionLevel": "failure",
"displayMode": "diff",
"useMendCheckNames": true
},
"issueSettings": {
"minSeverityLevel": "LOW",
"issueType": "DEPENDENCY"
},
"remediateSettings": {
"workflowRules": {
"enabled": true
}
}
}

View File

@ -21,14 +21,14 @@
"images": [
{
"filename": "c3725-adventerprisek9-mz.124-15.T14.image",
"version": "124-25.T14",
"version": "124-15.T14",
"md5sum": "64f8c427ed48fd21bd02cf1ff254c4eb",
"filesize": 97859480
}
],
"versions": [
{
"name": "124-25.T14",
"name": "124-15.T14",
"idlepc": "0x60c09aa0",
"images": {
"image": "c3725-adventerprisek9-mz.124-15.T14.image"

View File

@ -77,6 +77,13 @@
"md5sum": "4cf5b7fd68075b6f7ee0dd41a4029ca0",
"filesize": 2150017536,
"download_url": "https://software.cisco.com/download/"
},
{
"filename": "Cisco_Firepower_Management_Center_Virtual-6.2.2-81.qcow2",
"version": "6.2.2 (81)",
"md5sum": "2f75c9c6c18a6fbb5516f6f451aef3a4",
"filesize": 2112356352,
"download_url": "https://software.cisco.com/download/"
}
],
"versions": [
@ -121,6 +128,12 @@
"images": {
"hda_disk_image": "Cisco_Firepower_Management_Center_Virtual_VMware-6.2.1-342-disk1.vmdk"
}
},
{
"name": "6.2.2 (81)",
"images": {
"hda_disk_image": "Cisco_Firepower_Management_Center_Virtual-6.2.2-81.qcow2"
}
}
]
}

View File

@ -25,6 +25,14 @@
"kvm": "require"
},
"images": [
{
"filename": "cumulus-linux-5.3.1-vx-amd64-qemu.qcow2",
"version": "5.3.1",
"md5sum": "366b4e5afbfb638244fac4dd6cd092fd",
"filesize": 2147479552,
"download_url": "https://www.nvidia.com/en-us/networking/ethernet-switching/cumulus-vx/download/",
"direct_download_url": "https://d2cd9e7ca6hntp.cloudfront.net/public/CumulusLinux-5.3.1/cumulus-linux-5.3.1-vx-amd64-qemu.qcow2"
},
{
"filename": "cumulus-linux-5.1.0-vx-amd64-qemu.qcow2",
"version": "5.1.0",
@ -239,6 +247,12 @@
}
],
"versions": [
{
"name": "5.3.1",
"images": {
"hda_disk_image": "cumulus-linux-5.3.1-vx-amd64-qemu.qcow2"
}
},
{
"name": "5.1.0",
"images": {

View File

@ -24,12 +24,12 @@
},
"images": [
{
"filename": "debian-11-genericcloud-amd64-20220911-1135.qcow2",
"version": "11.5",
"md5sum": "06e481ddd23682af4326226661c13d8f",
"filesize": 254672896,
"filename": "debian-11-genericcloud-amd64-20221219-1234.qcow2",
"version": "11.6",
"md5sum": "bd6ddbccc89e40deb7716b812958238d",
"filesize": 258801664,
"download_url": "https://cloud.debian.org/images/cloud/bullseye/",
"direct_download_url": "https://cloud.debian.org/images/cloud/bullseye/20220911-1135/debian-11-genericcloud-amd64-20220911-1135.qcow2"
"direct_download_url": "https://cloud.debian.org/images/cloud/bullseye/20221219-1234/debian-11-genericcloud-amd64-20221219-1234.qcow2"
},
{
"filename": "debian-10-genericcloud-amd64-20220911-1135.qcow2",
@ -49,9 +49,9 @@
],
"versions": [
{
"name": "11.5",
"name": "11.6",
"images": {
"hda_disk_image": "debian-11-genericcloud-amd64-20220911-1135.qcow2",
"hda_disk_image": "debian-11-genericcloud-amd64-20221219-1234.qcow2",
"cdrom_image": "debian-cloud-init-data.iso"
}
},

View File

@ -10,7 +10,7 @@
"status": "stable",
"maintainer": "Andras Dosztal",
"maintainer_email": "developers@gns3.net",
"usage": "You can add records by adding entries to the /etc/hosts file in the following format:\n%IP_ADDRESS% %HOSTNAME%.lab %HOSTNAME%\n\nExample:\n192.168.123.10 router1.lab router1",
"usage": "You can add records by adding entries to the /etc/hosts file in the following format:\n%IP_ADDRESS% %HOSTNAME%.lab %HOSTNAME%\n\nExample:\n192.168.123.10 router1.lab router1\n\nIf you require DNS requests to be serviced from a different subnet than the one that the DNS server resides on then do the following:\n\n1. Edit (nano or vim) /ect/init.d/dnsmasq\n2. Find the line DNSMASQ_OPTS=\"$DNSMASQ_OPTS --local-service\"\n3. Remove the --local-service or comment that line out and add DNSMASQ_OPTS=\"\"\n4. Restart dnsmasq - service dnsmaq restart",
"symbol": "linux_guest.svg",
"docker": {
"adapters": 1,

View File

@ -27,6 +27,13 @@
"options": "-nographic"
},
"images": [
{
"filename": "VOSSGNS3.8.8.0.0.qcow2",
"version": "v8.8.0.0",
"md5sum": "caa01094bad8ea5750261924b82ca746",
"filesize": 348389376,
"direct_download_url": "https://akamai-ep.extremenetworks.com/Extreme_P/github-en/Virtual_VOSS/VOSSGNS3.8.8.0.0.qcow2"
},
{
"filename": "VOSSGNS3.8.4.0.0.qcow2",
"version": "v8.4.0.0",
@ -78,6 +85,13 @@
}
],
"versions": [
{
"name": "v8.8.0.0",
"images":
{
"hda_disk_image": "VOSSGNS3.8.8.0.0.qcow2"
}
},
{
"name": "v8.4.0.0",
"images": {

View File

@ -34,6 +34,13 @@
"filesize": 340631552,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FAZ_VM64_KVM-v7.0.5-build0365-FORTINET.out.kvm.qcow2",
"version": "7.0.5",
"md5sum": "6cbc1f865ed285bb3a73323e222f03b8",
"filesize": 334184448,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FAZ_VM64_KVM-v6-build2288-FORTINET.out.kvm.qcow2",
"version": "6.4.5",
@ -191,6 +198,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.0.5",
"images": {
"hda_disk_image": "FAZ_VM64_KVM-v7.0.5-build0365-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "6.4.5",
"images": {

View File

@ -27,6 +27,13 @@
"kvm": "allow"
},
"images": [
{
"filename": "FGT_VM64_KVM-v7.2.3.F-build1262-FORTINET.out.kvm.qcow2",
"version": "7.2.3",
"md5sum": "e8f3c5879f0d6fe238dc2665a3508694",
"filesize": 87490560,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v7.2.1.F-build1254-FORTINET.out.kvm.qcow2",
"version": "7.2.1",
@ -34,6 +41,20 @@
"filesize": 86704128,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v7.0.9.M-build0444-FORTINET.out.kvm.qcow2",
"version": "7.0.9",
"md5sum": "0aee912ab11bf9a4b0e3fc1a62dd0e40",
"filesize": 77135872,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v6.M-build2030-FORTINET.out.kvm.qcow2",
"version": "6.4.11",
"md5sum": "bcd7491ddfa31fec4f618b73792456e4",
"filesize": 69861376,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FGT_VM64_KVM-v6-build1828-FORTINET.out.kvm.qcow2",
"version": "6.4.5",
@ -261,6 +282,13 @@
}
],
"versions": [
{
"name": "7.2.3",
"images": {
"hda_disk_image": "FGT_VM64_KVM-v7.2.3.F-build1262-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.2.1",
"images": {
@ -268,6 +296,20 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.0.9",
"images": {
"hda_disk_image": "FGT_VM64_KVM-v7.0.9.M-build0444-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "6.4.11",
"images": {
"hda_disk_image": "FGT_VM64_KVM-v6.M-build2030-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "6.4.5",
"images": {

View File

@ -34,6 +34,13 @@
"filesize": 242814976,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FMG_VM64_KVM-v7.0.5-build0365-FORTINET.out.kvm.qcow2",
"version": "7.0.5",
"md5sum": "e8b9c992784cea766b52a427a5fe0279",
"filesize": 237535232,
"download_url": "https://support.fortinet.com/Download/FirmwareImages.aspx"
},
{
"filename": "FMG_VM64_KVM-v6-build2288-FORTINET.out.kvm.qcow2",
"version": "6.4.5",
@ -191,6 +198,13 @@
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "7.0.5",
"images": {
"hda_disk_image": "FMG_VM64_KVM-v7.0.5-build0365-FORTINET.out.kvm.qcow2",
"hdb_disk_image": "empty30G.qcow2"
}
},
{
"name": "6.4.5",
"images": {

View File

@ -22,6 +22,14 @@
"kvm": "allow"
},
"images": [
{
"filename": "frr-8.2.2.qcow2",
"version": "8.2.2",
"md5sum": "45cda6b991a1b9e8205a3a0ecc953640",
"filesize": 56609280,
"download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/",
"direct_download_url": "http://downloads.sourceforge.net/project/gns-3/Qemu%20Appliances/frr-8.2.2.qcow2"
},
{
"filename": "frr-8.1.0.qcow2",
"version": "8.1.0",
@ -48,6 +56,12 @@
}
],
"versions": [
{
"name": "8.2.2",
"images": {
"hda_disk_image": "frr-8.2.2.qcow2"
}
},
{
"name": "8.1.0",
"images": {

View File

@ -14,7 +14,7 @@
"usage": "In the web interface login as admin/admin\n\nPersistent configuration:\n- Add \"/var/lib/redis\" as an additional persistent directory.\n- Use \"redis-cli save\" in an auxiliary console to save the configuration.",
"docker": {
"adapters": 1,
"image": "ntop/ntopng:stable",
"image": "ntop/ntopng:latest",
"start_command": "--dns-mode 2 --interface eth0",
"console_type": "http",
"console_http_port": 3000,

View File

@ -54,6 +54,13 @@
"filesize": 338690048,
"download_url": "https://support.vyos.io/en/downloads/files/vyos-1-3-0-generic-iso-image"
},
{
"filename": "vyos-1.2.9-amd64.iso",
"version": "1.2.9",
"md5sum": "586be23b6256173e174c82d8f1f699a1",
"filesize": 430964736,
"download_url": "https://support.vyos.io/en/downloads/files/vyos-1-2-9-generic-iso-image"
},
{
"filename": "vyos-1.2.8-amd64.iso",
"version": "1.2.8",
@ -114,6 +121,13 @@
"cdrom_image": "vyos-1.3.0-amd64.iso"
}
},
{
"name": "1.2.9",
"images": {
"hda_disk_image": "empty8G.qcow2",
"cdrom_image": "vyos-1.2.9-amd64.iso"
}
},
{
"name": "1.2.8",
"images": {

View File

@ -0,0 +1,59 @@
{
"appliance_id": "f3b6a3ac-7be5-4bb0-b204-da3712fb646c",
"name": "Windows-11-Dev-Env",
"category": "guest",
"description": "Windows 11 Developer Environment Virtual Machine.",
"vendor_name": "Microsoft",
"vendor_url": "https://www.microsoft.com",
"documentation_url": "https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/",
"product_name": "Windows 11 Development Environment",
"product_url": "https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/",
"registry_version": 4,
"status": "experimental",
"availability": "free",
"maintainer": "Ean Towne",
"maintainer_email": "eantowne@gmail.com",
"usage": "Uses SPICE not VNC\nHighly recommended to install the SPICE-agent from: https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe to be able to change resolution and increase performance.\nThis is an evaluation virtual machine (90 days) and includes:\n* Window 11 Enterprise (Evaluation)\n* Visual Studio 2022 Community Edition with UWP .NET Desktop, Azure, and Windows App SDK for C# workloads enabled\n* Windows Subsystem for Linux 2 enabled with Ubuntu installed\n* Windows Terminal installed\n* Developer mode enabled",
"symbol": "microsoft.svg",
"first_port_name": "Network Adapter 1",
"port_name_format": "Network Adapter {0}",
"qemu": {
"adapter_type": "e1000",
"adapters": 1,
"ram": 4096,
"cpus": 4,
"hda_disk_interface": "sata",
"arch": "x86_64",
"console_type": "spice",
"boot_priority": "c",
"kvm": "require"
},
"images": [
{
"filename": "WinDev2212Eval-disk1.vmdk",
"version": "2212",
"md5sum": "c79f393a067b92e01a513a118d455ac8",
"filesize": 24620493824,
"download_url": "https://aka.ms/windev_VM_vmware",
"compression": "zip"
},
{
"filename": "OVMF-20160813.fd",
"version": "16.08.13",
"md5sum": "8ff0ef1ec56345db5b6bda1a8630e3c6",
"filesize": 2097152,
"download_url": "",
"direct_download_url": "https://sourceforge.net/projects/gns-3/files/Qemu%20Appliances/OVMF-20160813.fd.zip/download",
"compression": "zip"
}
],
"versions": [
{
"images": {
"bios_image": "OVMF-20160813.fd",
"hda_disk_image": "WinDev2212Eval-disk1.vmdk"
},
"name": "2212"
}
]
}

View File

@ -25,7 +25,7 @@ import jsonschema
from picture import get_size
APPLIANCE_IDS = []
SCHEMA_VERSIONS = [3, 4, 5, 6]
SCHEMA_VERSIONS = [3, 4, 5, 6, 7],
warnings = 0

View File

@ -0,0 +1,9 @@
# Centos-cloud cloud-init-data image for GNS3 virtual appliance
Generated using the following commands:
```
printf "#cloud-config\n\npassword: centos\nchpasswd: { expire: False }\nssh_pwauth: True\n" > user-data
printf "instance-id: centos-cloud\nlocal-hostname: centos-cloud\n" > meta-data
mkisofs -output centos-cloud-init-data.iso -volid cidata -joliet -rock user-data meta-data
```

Binary file not shown.

View File

@ -0,0 +1,2 @@
instance-id: centos-cloud
local-hostname: centos-cloud

View File

@ -0,0 +1,5 @@
#cloud-config
password: centos
chpasswd: { expire: False }
ssh_pwauth: True

View File

@ -0,0 +1,9 @@
# Oracle-cloud cloud-init-data image for GNS3 virtual appliance
Generated using the following commands:
```
printf "#cloud-config\n\npassword: oracle\nchpasswd: { expire: False }\nssh_pwauth: True\n" > user-data
printf "instance-id: oracle-cloud\nlocal-hostname: oracle-cloud\n" > meta-data
mkisofs -output oracle-cloud-init-data.iso -volid cidata -joliet -rock user-data meta-data
```

View File

@ -0,0 +1,2 @@
instance-id: oracle-cloud
local-hostname: oracle-cloud

Binary file not shown.

View File

@ -0,0 +1,5 @@
#cloud-config
password: oracle
chpasswd: { expire: False }
ssh_pwauth: True

View File

@ -0,0 +1,9 @@
# Ubuntu-cloud cloud-init-data image for GNS3 virtual appliance
Generated using the following commands:
```
printf "#cloud-config\n\npassword: ubuntu\nchpasswd: { expire: False }\nssh_pwauth: True\n" > user-data
printf "instance-id: ubuntu-cloud\nlocal-hostname: ubuntu-cloud\n" > meta-data
mkisofs -output ubuntu-cloud-init-data.iso -volid cidata -joliet -rock user-data meta-data
```

View File

@ -0,0 +1,2 @@
instance-id: ubuntu-cloud
local-hostname: ubuntu-cloud

Binary file not shown.

View File

@ -0,0 +1,5 @@
#cloud-config
password: ubuntu
chpasswd: { expire: False }
ssh_pwauth: True

View File

@ -6,15 +6,6 @@ For building an Alpine appliance.
https://alpinelinux.org/
Packer Version Dependency
*************************
Packer versions 1.6.0 or later do not accept templates
that use the ``iso_checksum_type`` attribute.
To use these newer versions, you must delete the line
containing ``iso_checksum_type`` from alpine.json.
Alpine CLI installation
***********************

View File

@ -1,7 +1,7 @@
{
"variables": {
"iso_url": "https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/x86_64/alpine-virt-3.15.0-x86_64.iso",
"iso_checksum": "e97eaedb3bff39a081d1d7e67629d5c0e8fb39677d6a9dd1eaf2752e39061e02",
"iso_url": "https://dl-cdn.alpinelinux.org/alpine/v3.17/releases/x86_64/alpine-virt-3.17.0-x86_64.iso",
"iso_checksum": "file:https://dl-cdn.alpinelinux.org/alpine/v3.17/releases/x86_64/alpine-virt-3.17.0-x86_64.iso.sha256",
"ui_mode": "cli",
"vm_name": "alpine_cli.qcow2",
"file_source": "README.rst",
@ -13,7 +13,6 @@
"type": "qemu",
"iso_url": "{{user `iso_url`}}",
"iso_checksum": "{{user `iso_checksum`}}",
"iso_checksum_type": "sha256",
"shutdown_command": "poweroff",
"headless": true,
"ssh_username": "root",

View File

@ -1,5 +1,17 @@
# use serial console
sed -i 's/\(APPEND .*\)/\1 console=ttyS0/' /boot/extlinux.conf
#!/bin/sh
set -e
# use serial console and remove quiet
sed -i 's/\(APPEND .*\)/\1 console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0/' /boot/extlinux.conf
sed -i '/\(APPEND .*\)/s/[[:space:]]*quiet[[:space:]]*/ /g' /boot/extlinux.conf
# autologin on serial console
sed -i 's/^ttyS0.*/ttyS0::respawn:\/bin\/login -f root/' /etc/inittab
cat <<'EOF' | tee /usr/local/bin/rootlogin
#!/bin/sh
exec /bin/login -f root
EOF
chmod +x /usr/local/bin/rootlogin
#/sbin/getty -L ttyS0 115200 vt100
sed -i 's/^ttyS0.*/ttyS0::respawn:\/sbin\/getty -n -l \/usr\/local\/bin\/rootlogin -L ttyS0 115200 vt100/' /etc/inittab

View File

@ -1,3 +1,5 @@
#!/bin/sh
# add community repository
sed -i 's/^#\s*\(.*\/v.*\/community\)$/\1/' /etc/apk/repositories
apk update
@ -42,8 +44,8 @@ sed -i -E '/zebra|bgp|ospf|rip|isis|pim|ldp|eigrp|static|bfd/ s/= *no/=yes/' /et
echo "service integrated-vtysh-config" > /etc/frr/vtysh.conf
chown frr:frr /etc/frr/vtysh.conf
# reset terminal modes
sed -i "$(printf '1i\e[?5l\e[?7h\e[?8h')" /etc/motd
# Remove default Alpine MOTD
truncate -s 0 /etc/motd
# run vtysh in .profile
cat > /root/.profile << 'EOF'

View File

@ -1,28 +1,36 @@
#!/bin/sh
# shellcheck disable=SC2034
set -e
export HOSTNAMEOPTS="-n alpine"
export KEYMAPOPTS="us us"
export INTERFACESOPTS="auto lo
# Export most answers for setup-alpine
set -a
KEYMAPOPTS="us us"
HOSTNAMEOPTS="-n alpine"
INTERFACESOPTS="auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
hostname alpine
"
export TIMEZONEOPTS="-z UTC"
export PROXYOPTS="none"
export APKREPOSOPTS="-1"
export SSHDOPTS="-c openssh"
export NTPOPTS="-c none"
export BOOT_SIZE=50
export SWAP_SIZE=0
TIMEZONEOPTS="-z UTC"
PROXYOPTS="none"
APKREPOSOPTS="-1"
SSHDOPTS="-c openssh"
NTPOPTS="-c none"
DISKOPTS="-m sys /dev/sda"
BOOT_SIZE=50
SWAP_SIZE=0
set +a
# Answer to password question twice and yes to format drive
# - Answer to password question twice
# - Do not create unprivileged user
# - Select disk
# - Confirm formatting disk
setup-alpine <<EOF
root
root
sda
sys
no
y
EOF

View File

@ -1,3 +1,7 @@
#!/bin/sh
set -e
# restore default sshd configuration
mv /etc/ssh/sshd_config.orig /etc/ssh/sshd_config
@ -8,4 +12,4 @@ rm -rf /var/cache/apk/*
rm -rf /tmp/uploads
# Write 0
dd if=/dev/zero bs=1M of=/zero ; rm -f /zero
(dd if=/dev/zero bs=1M of=/zero ; rm -f /zero) || true

View File

@ -1,3 +1,7 @@
#!/bin/sh
set -e
# install additional packages
apk add nano busybox-extras

View File

@ -0,0 +1 @@
../../cloud-init/centos-cloud/centos-cloud-init-data.iso

View File

@ -0,0 +1,51 @@
{
"builders": [
{
"disk_compression": true,
"disk_image": true,
"disk_interface": "virtio-scsi",
"disk_size": "{{user `disk_size`}}",
"headless": true,
"iso_checksum": "sha256:{{user `iso_checksum`}}",
"iso_url": "{{user `iso_url`}}",
"net_device": "virtio-net-pci",
"qemuargs": [
[
"-cdrom",
"centos-cloud-init-data.iso"
]
],
"shutdown_command": "sudo shutdown -P now",
"ssh_password": "centos",
"ssh_timeout": "3600s",
"ssh_username": "centos",
"type": "qemu",
"vm_name": "{{user `vm_name`}}"
}
],
"provisioners": [
{
"execute_command": "sudo env {{ .Vars }} {{ .Path }}",
"script": "scripts/upgrade-os.sh",
"type": "shell"
},
{
"execute_command": "sudo env {{ .Vars }} {{ .Path }}",
"script": "scripts/centos-gns3-user.sh",
"type": "shell"
},
{
"execute_command": "sudo env {{ .Vars }} {{ .Path }}",
"script": "scripts/post_setup.sh",
"type": "shell"
}
],
"variables": {
"disk_size": "20G",
"iso_checksum": "8717251f8e4d2fe3e5032799caae89358c1ba68d65a16b5128a59ec6003aac1c",
"iso_url": "https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-20220913.0.x86_64.qcow2",
"setup_script": "centos8.sh",
"vm_name": "centos8.qcow2"
}
}

View File

@ -0,0 +1,5 @@
#!/usr/bin/env sh
set -ex
printf "gns3\ngns3\n" | useradd -c "gns3" -G wheel gns3

View File

@ -0,0 +1,10 @@
#!/bin/sh
set -ex
# clear repository
dnf clean all
# clear unused space
echo 'Clearing unused space...'
dd if=/dev/zero bs=1M of=/zero >/dev/null 2>&1 || true; rm -f /zero
sync

View File

@ -0,0 +1,7 @@
#!/bin/sh
set -ex
# clear repository
dnf clean all
dnf update -y

15
packer/debian/README.md Normal file
View File

@ -0,0 +1,15 @@
# Packer for Debian based GNS3 appliances
## Packer Version Dependency
Packer versions 1.6.0 or later do not accept templates
that use the `iso_checksum_type` attribute.
To use these newer versions, you must delete the line
containing `iso_checksum_type` from debian.json.
## Debian CLI installation
```
packer build debian.json
```

View File

@ -0,0 +1 @@
../../cloud-init/Debian/debian-cloud-init-data.iso

46
packer/debian/debian.json Normal file
View File

@ -0,0 +1,46 @@
{
"variables": {
"iso_url": "https://cloud.debian.org/images/cloud/bullseye/20221219-1234/debian-11-genericcloud-amd64-20221219-1234.qcow2",
"iso_checksum": "ba0237232247948abf7341a495dec009702809aa7782355a1b35c112e75cee81",
"disk_size": "2G",
"vm_name": "debian.qcow2",
"setup_script": "debian.sh"
},
"provisioners": [
{
"type": "shell",
"script": "scripts/remove_cloud-init_network.sh",
"execute_command" : "sudo env {{ .Vars }} {{ .Path }}"
},
{
"type": "shell",
"script": "scripts/{{user `setup_script`}}",
"execute_command" : "sudo env {{ .Vars }} {{ .Path }}"
},
{
"type": "shell",
"script": "scripts/post_setup.sh",
"execute_command" : "sudo env {{ .Vars }} {{ .Path }}"
}
],
"builders": [
{
"type": "qemu",
"disk_image": true,
"disk_size": "{{user `disk_size`}}",
"iso_url": "{{user `iso_url`}}",
"iso_checksum": "{{user `iso_checksum`}}",
"iso_checksum_type": "sha256",
"disk_interface": "virtio-scsi",
"disk_compression": true,
"headless": true,
"net_device": "virtio-net-pci",
"qemuargs": [ [ "-cdrom", "debian-cloud-init-data.iso" ] ],
"shutdown_command": "sudo shutdown -P now",
"ssh_username": "debian",
"ssh_password": "debian",
"ssh_wait_timeout": "30s",
"vm_name": "{{user `vm_name`}}"
}
]
}

View File

@ -0,0 +1,5 @@
#!/bin/sh
set -ex
# create GNS3 user
printf 'gns3\ngns3\n' | adduser --gecos 'GNS3' gns3

View File

@ -0,0 +1,10 @@
#!/bin/sh
set -ex
# clear repository
apt-get clean
# clear unused space
echo 'Clearing unused space...'
dd if=/dev/zero bs=1M of=/zero >/dev/null 2>&1 || true; rm -f /zero
sync

View File

@ -0,0 +1,27 @@
#!/bin/sh
set -ex
# replace cloud-init network configuration
cat > /etc/network/interfaces <<'EOF'
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# DHCP config for ens4
#auto ens4
#iface ens4 inet dhcp
# Static config for ens4
#auto ens4
#iface ens4 inet static
# address 192.168.1.100
# netmask 255.255.255.0
# gateway 192.168.1.1
# dns-nameservers 192.168.1.1
EOF
rm -f /etc/network/interfaces.d/50-cloud-init

View File

@ -0,0 +1 @@
../../cloud-init/oracle-cloud/oracle-cloud-init-data.iso

View File

@ -0,0 +1,51 @@
{
"builders": [
{
"disk_compression": true,
"disk_image": true,
"disk_interface": "virtio-scsi",
"disk_size": "{{user `disk_size`}}",
"headless": true,
"iso_checksum": "sha256:{{user `iso_checksum`}}",
"iso_url": "{{user `iso_url`}}",
"net_device": "virtio-net-pci",
"qemuargs": [
[
"-cdrom",
"oracle-cloud-init-data.iso"
]
],
"shutdown_command": "sudo shutdown -P now",
"ssh_password": "oracle",
"ssh_timeout": "240s",
"ssh_username": "cloud-user",
"type": "qemu",
"vm_name": "{{user `vm_name`}}"
}
],
"provisioners": [
{
"execute_command": "sudo env {{ .Vars }} {{ .Path }}",
"script": "scripts/upgrade-os.sh",
"type": "shell"
},
{
"execute_command": "sudo env {{ .Vars }} {{ .Path }}",
"script": "scripts/oracle-gns3-user.sh",
"type": "shell"
},
{
"execute_command": "sudo env {{ .Vars }} {{ .Path }}",
"script": "scripts/post_setup.sh",
"type": "shell"
}
],
"variables": {
"disk_size": "40G",
"iso_checksum": "4a98e22908333dae1423e0bb4032c88aed60dbf1267addb73a6905778e9930df",
"iso_url": "https://yum.oracle.com/templates/OracleLinux/OL8/u7/x86_64/OL8U7_x86_64-kvm-b148.qcow",
"setup_script": "oracle8.sh",
"vm_name": "oracle8.qcow2"
}
}

View File

@ -0,0 +1,5 @@
#!/usr/bin/env sh
set -ex
printf "gns3\ngns3\n" | useradd -c "gns3" -G wheel gns3

View File

@ -0,0 +1,10 @@
#!/bin/sh
set -ex
# clear repository
dnf clean all
# clear unused space
echo 'Clearing unused space...'
dd if=/dev/zero bs=1M of=/zero >/dev/null 2>&1 || true; rm -f /zero
sync

View File

@ -0,0 +1,7 @@
#!/bin/sh
set -ex
# clear repository
dnf clean all
dnf update -y

51
packer/ubuntu/jammy.json Normal file
View File

@ -0,0 +1,51 @@
{
"builders": [
{
"disk_compression": true,
"disk_image": true,
"disk_interface": "virtio-scsi",
"disk_size": "{{user `disk_size`}}",
"headless": true,
"iso_checksum": "sha256:{{user `iso_checksum`}}",
"iso_url": "{{user `iso_url`}}",
"net_device": "virtio-net-pci",
"qemuargs": [
[
"-cdrom",
"ubuntu-cloud-init-data.iso"
]
],
"shutdown_command": "sudo shutdown -P now",
"ssh_password": "ubuntu",
"ssh_timeout": "120s",
"ssh_username": "ubuntu",
"type": "qemu",
"vm_name": "{{user `vm_name`}}"
}
],
"provisioners": [
{
"execute_command": "sudo env {{ .Vars }} {{ .Path }}",
"script": "scripts/{{user `setup_script`}}",
"type": "shell"
},
{
"execute_command": "sudo env {{ .Vars }} {{ .Path }}",
"script": "scripts/upgrade-os.sh",
"type": "shell"
},
{
"execute_command": "sudo env {{ .Vars }} {{ .Path }}",
"script": "scripts/post_setup.sh",
"type": "shell"
}
],
"variables": {
"disk_size": "10G",
"iso_checksum": "8ae2ebcaf1320ea5b8d7003b44f2dbcb4ecad8cc53a3170e96d9ff1bbe8f78b8",
"iso_url": "https://cloud-images.ubuntu.com/jammy/20221219/jammy-server-cloudimg-amd64.img",
"setup_script": "jammy.sh",
"vm_name": "ubuntu-jammy.qcow2"
}
}

View File

@ -0,0 +1,5 @@
#!/bin/sh
set -ex
# create GNS3 user
printf 'gns3\ngns3\n' | adduser --gecos 'GNS3' gns3

View File

@ -0,0 +1,14 @@
#!/bin/sh
set -ex
# clear repository
apt-get clean
apt-get autoremove --yes
rm -rf /var/lib/{apt,dpkg,cache,log}/
# clear unused space
echo 'Clearing unused space...'
dd if=/dev/zero bs=1M of=/zero >/dev/null 2>&1 || true; rm -f /zero
sync

View File

@ -0,0 +1,7 @@
#!/bin/sh
set -ex
# clear repository
apt update
apt upgrade -y

View File

@ -0,0 +1 @@
../../cloud-init/ubuntu-cloud/ubuntu-cloud-init-data.iso

View File

@ -308,6 +308,10 @@
"maximum": 100,
"title": "Throttle the CPU"
},
"on_close": {
"title": "Action to execute on the VM is closed",
"enum": ["power_off", "shutdown_signal", "save_vm_state"]
},
"process_priority": {
"title": "Process priority for QEMU",
"enum": ["realtime",
@ -347,7 +351,6 @@
"md5sum": {
"type": "string",
"title": "md5sum of the file",
"type": "string",
"pattern": "^[a-f0-9]{32}$"
},
"filesize": {

View File

@ -311,6 +311,10 @@
"maximum": 100,
"title": "Throttle the CPU"
},
"on_close": {
"title": "Action to execute on the VM is closed",
"enum": ["power_off", "shutdown_signal", "save_vm_state"]
},
"process_priority": {
"title": "Process priority for QEMU",
"enum": ["realtime",
@ -349,7 +353,6 @@
"md5sum": {
"type": "string",
"title": "md5sum of the file",
"type": "string",
"pattern": "^[a-f0-9]{32}$"
},
"filesize": {

View File

@ -311,6 +311,10 @@
"maximum": 100,
"title": "Throttle the CPU"
},
"on_close": {
"title": "Action to execute on the VM is closed",
"enum": ["power_off", "shutdown_signal", "save_vm_state"]
},
"process_priority": {
"title": "Process priority for QEMU",
"enum": ["realtime",
@ -349,7 +353,6 @@
"md5sum": {
"type": "string",
"title": "md5sum of the file",
"type": "string",
"pattern": "^[a-f0-9]{32}$"
},
"filesize": {

View File

@ -362,6 +362,10 @@
"maximum": 100,
"title": "Throttle the CPU"
},
"on_close": {
"title": "Action to execute on the VM is closed",
"enum": ["power_off", "shutdown_signal", "save_vm_state"]
},
"process_priority": {
"title": "Process priority for QEMU",
"enum": ["realtime",
@ -400,7 +404,6 @@
"md5sum": {
"type": "string",
"title": "md5sum of the file",
"type": "string",
"pattern": "^[a-f0-9]{32}$"
},
"filesize": {

514
schemas/appliance_v7.json Normal file
View File

@ -0,0 +1,514 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"title": "JSON schema validating a GNS3 appliance",
"definitions": {
"dynamips_slot": {
"enum": ["C2600-MB-2FE", "C2600-MB-1E", "PA-A1", "PA-8E", "C1700-MB-1FE", "PA-8T", "PA-2FE-TX", "PA-FE-TX", "PA-GE", "C2600-MB-2E", "C7200-IO-FE", "NM-4T", "C2600-MB-1FE", "C7200-IO-2FE", "PA-POS-OC3", "PA-4T+", "C1700-MB-WIC1", "NM-16ESW", "C7200-IO-GE-E", "NM-4E", "GT96100-FE", "NM-1FE-TX", "Leopard-2FE", "NM-1E", "PA-4E", ""]
},
"dynamips_wic": {
"enum": ["WIC-1ENET", "WIC-1T", "WIC-2T", ""]
}
},
"properties": {
"appliance_id": {
"title": "Appliance ID",
"type": "string",
"minLength": 36,
"maxLength": 36,
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
},
"name": {
"type": "string",
"title": "Appliance name"
},
"category": {
"enum": [
"router",
"multilayer_switch",
"firewall",
"guest"
],
"title": "Category of the appliance"
},
"description": {
"type": "string",
"title": "Description of the appliance. Could be a marketing description"
},
"vendor_name": {
"type": "string",
"title": "Name of the vendor"
},
"vendor_url": {
"type": "string",
"format": "uri",
"title": "Website of the vendor"
},
"documentation_url": {
"type": "string",
"format": "uri",
"title": "An optional documentation for using the appliance on vendor website"
},
"product_name": {
"type": "string",
"title": "Product name"
},
"product_url": {
"type": "string",
"format": "uri",
"title": "An optional product url on vendor website"
},
"registry_version": {
"enum": [1, 2, 3, 4, 5, 6],
"title": "Version of the registry compatible with this appliance"
},
"status": {
"enum": ["stable", "experimental", "broken"],
"title": "Document if the appliance is working or not"
},
"availability": {
"enum": ["free", "with-registration", "free-to-try", "service-contract"],
"title": "About image availability: can be downloaded directly; download requires a free registration; paid but a trial version (time or feature limited) is available; not available publicly"
},
"maintainer": {
"type": "string",
"title": "Maintainer name"
},
"maintainer_email": {
"type": "string",
"format": "email",
"title": "Maintainer email"
},
"usage": {
"type": "string",
"title": "How to use the appliance"
},
"symbol": {
"type": "string",
"title": "An optional symbol for the appliance"
},
"first_port_name": {
"type": "string",
"title": "Optional name of the first networking port example: eth0"
},
"port_name_format": {
"type": "string",
"title": "Optional formating of the networking port example: eth{0}"
},
"port_segment_size": {
"type": "integer",
"title": "Optional port segment size. A port segment is a block of port. For example Ethernet0/0 Ethernet0/1 is the module 0 with a port segment size of 2"
},
"linked_clone": {
"type": "boolean",
"title": "False if you don't want to use a single image for all nodes"
},
"docker": {
"type": "object",
"title": "Docker specific options",
"properties": {
"adapters": {
"type": "integer",
"title": "Number of ethernet adapters"
},
"image": {
"type": "string",
"title": "Docker image in the Docker Hub"
},
"start_command": {
"type": "string",
"title": "Command executed when the container start. Empty will use the default"
},
"environment": {
"type": "string",
"title": "One KEY=VAR environment by line"
},
"console_type": {
"enum": ["telnet", "vnc", "http", "https"],
"title": "Type of console connection for the administration of the appliance"
},
"console_http_port": {
"description": "Internal port in the container of the HTTP server",
"type": "integer"
},
"console_http_path": {
"description": "Path of the web interface",
"type": "string"
}
},
"required": [
"adapters",
"image"
]
},
"iou": {
"type": "object",
"title": "IOU specific options",
"properties": {
"ethernet_adapters": {
"type": "integer",
"title": "Number of ethernet adapters"
},
"serial_adapters": {
"type": "integer",
"title": "Number of serial adapters"
},
"nvram": {
"type": "integer",
"title": "Host NVRAM"
},
"ram": {
"type": "integer",
"title": "Host RAM"
},
"startup_config": {
"type": "string",
"title": "Config loaded at startup"
}
},
"required": [
"ethernet_adapters",
"serial_adapters",
"nvram",
"ram",
"startup_config"
]
},
"dynamips": {
"type": "object",
"title": "Dynamips specific options",
"properties": {
"chassis": {
"title": "Chassis type",
"enum": ["1720", "1721", "1750", "1751", "1760", "2610", "2620", "2610XM", "2620XM", "2650XM", "2621", "2611XM", "2621XM", "2651XM", "3620", "3640", "3660", ""]
},
"platform": {
"title": "Platform type",
"enum": ["c1700", "c2600", "c2691", "c3725", "c3745", "c3600", "c7200"]
},
"ram": {
"title": "Amount of ram",
"type": "integer",
"minimum": 1
},
"nvram": {
"title": "Amount of nvram",
"type": "integer",
"minimum": 1
},
"startup_config": {
"type": "string",
"title": "Config loaded at startup"
},
"wic0": { "$ref": "#/definitions/dynamips_wic" },
"wic1": { "$ref": "#/definitions/dynamips_wic" },
"wic2": { "$ref": "#/definitions/dynamips_wic" },
"slot0": { "$ref": "#/definitions/dynamips_slot" },
"slot1": { "$ref": "#/definitions/dynamips_slot" },
"slot2": { "$ref": "#/definitions/dynamips_slot" },
"slot3": { "$ref": "#/definitions/dynamips_slot" },
"slot4": { "$ref": "#/definitions/dynamips_slot" },
"slot5": { "$ref": "#/definitions/dynamips_slot" },
"slot6": { "$ref": "#/definitions/dynamips_slot" },
"midplane": { "enum": ["std", "vxr"] },
"npe": { "enum": ["npe-100", "npe-150", "npe-175", "npe-200", "npe-225", "npe-300", "npe-400", "npe-g2"] }
},
"required": [
"platform",
"ram",
"nvram"
]
},
"qemu": {
"type": "object",
"title": "Qemu specific options",
"properties": {
"adapter_type": {
"enum": [
"e1000",
"i82550",
"i82551",
"i82557a",
"i82557b",
"i82557c",
"i82558a",
"i82558b",
"i82559a",
"i82559b",
"i82559c",
"i82559er",
"i82562",
"i82801",
"ne2k_pci",
"pcnet",
"rtl8139",
"virtio",
"virtio-net-pci",
"vmxnet3"
],
"title": "Type of network adapter"
},
"adapters": {
"type": "integer",
"title": "Number of adapters"
},
"custom_adapters": {
"type": "array",
"title": "Custom adapters",
"items": {
"type": "object",
"properties": {
"adapter_number": {
"title": "Adapter number",
"type": "integer"
},
"port_name": {
"title": "Custom port name",
"type": "string",
"minimum": 1
},
"adapter_type": {
"title": "Custom adapter type",
"type": "string",
"enum": [
"e1000",
"i82550",
"i82551",
"i82557a",
"i82557b",
"i82557c",
"i82558a",
"i82558b",
"i82559a",
"i82559b",
"i82559c",
"i82559er",
"i82562",
"i82801",
"ne2k_pci",
"pcnet",
"rtl8139",
"virtio",
"virtio-net-pci",
"vmxnet3"
]
},
"mac_address": {
"title": "Custom MAC address",
"type": "string",
"minimum": 1,
"pattern": "^([0-9a-fA-F]{2}[:]){5}([0-9a-fA-F]{2})$"
}
},
"required": ["adapter_number"]
}
},
"ram": {
"type": "integer",
"title": "Ram allocated to the appliance (MB)"
},
"cpus": {
"type": "integer",
"title": "Number of Virtual CPU"
},
"hda_disk_interface": {
"enum": ["ide", "scsi", "sd", "mtd", "floppy", "pflash", "virtio", "sata"],
"title": "Disk interface for the installed hda_disk_image"
},
"hdb_disk_interface": {
"enum": ["ide", "scsi", "sd", "mtd", "floppy", "pflash", "virtio", "sata"],
"title": "Disk interface for the installed hdb_disk_image"
},
"hdc_disk_interface": {
"enum": ["ide", "scsi", "sd", "mtd", "floppy", "pflash", "virtio", "sata"],
"title": "Disk interface for the installed hdc_disk_image"
},
"hdd_disk_interface": {
"enum": ["ide", "scsi", "sd", "mtd", "floppy", "pflash", "virtio", "sata"],
"title": "Disk interface for the installed hdd_disk_image"
},
"arch": {
"enum": ["aarch64", "alpha", "arm", "cris", "i386", "lm32", "m68k", "microblaze", "microblazeel", "mips", "mips64", "mips64el", "mipsel", "moxie", "or32", "ppc", "ppc64", "ppcemb", "s390x", "sh4", "sh4eb", "sparc", "sparc64", "tricore", "unicore32", "x86_64", "xtensa", "xtensaeb"],
"title": "Architecture emulated"
},
"console_type": {
"enum": ["telnet", "vnc", "spice"],
"title": "Type of console connection for the administration of the appliance"
},
"boot_priority": {
"enum": ["d", "c", "dc", "cd", "n", "nc", "nd", "cn", "dn"],
"title": "Optional define the disk boot priory. Refer to -boot option in qemu manual for more details."
},
"kernel_command_line": {
"type": "string",
"title": "Command line parameters send to the kernel"
},
"kvm": {
"title": "KVM requirements",
"enum": ["require", "allow", "disable"]
},
"options": {
"type": "string",
"title": "Optional additional qemu command line options"
},
"cpu_throttling": {
"type": "number",
"minimum": 0,
"maximum": 100,
"title": "Throttle the CPU"
},
"tpm": {
"type": "boolean",
"title": "Enable the Trusted Platform Module (TPM)"
},
"on_close": {
"title": "Action to execute on the VM is closed",
"enum": ["power_off", "shutdown_signal", "save_vm_state"]
},
"process_priority": {
"title": "Process priority for QEMU",
"enum": ["realtime",
"very high",
"high",
"normal",
"low",
"very low",
"null"]
}
},
"required": [
"adapter_type",
"adapters",
"ram",
"arch",
"console_type",
"kvm"
]
},
"images": {
"type": "array",
"title": "Images for this appliance",
"items": {
"type": "object",
"title": "An image file",
"properties": {
"filename": {
"type": "string",
"title": "Filename"
},
"version": {
"type": "string",
"title": "Version of the file"
},
"md5sum": {
"type": "string",
"title": "md5sum of the file",
"pattern": "^[a-f0-9]{32}$"
},
"filesize": {
"type": "integer",
"title": "File size in bytes"
},
"download_url": {
"type": "string",
"format": "uri",
"title": "Download url where you can download the appliance from a browser"
},
"direct_download_url": {
"type": "string",
"format": "uri",
"title": "Optional. Non authenticated url to the image file where you can download the image."
},
"compression": {
"enum": ["bzip2", "gzip", "lzma", "xz", "rar", "zip", "7z"],
"title": "Optional, compression type of direct download url image."
}
},
"required": [
"filename",
"version",
"md5sum",
"filesize"
]
}
},
"versions": {
"type": "array",
"title": "Versions of the appliance",
"items": {
"type": "object",
"title": "A version of the appliance",
"properties": {
"name": {
"type": "string",
"title": "Name of the version"
},
"idlepc": {"type": "string", "pattern": "^0x[0-9a-f]{8}"},
"images": {
"type": "object",
"title": "Images used for this version",
"properties": {
"kernel_image": {
"type": "string",
"title": "Kernel image"
},
"initrd": {
"type": "string",
"title": "Initrd disk image"
},
"image": {
"type": "string",
"title": "OS image"
},
"bios_image": {
"type": "string",
"title": "Bios image"
},
"hda_disk_image": {
"type": "string",
"title": "Hda disk image"
},
"hdb_disk_image": {
"type": "string",
"title": "Hdc disk image"
},
"hdc_disk_image": {
"type": "string",
"title": "Hdd disk image"
},
"hdd_disk_image": {
"type": "string",
"title": "Hdd diskimage"
},
"cdrom_image": {
"type": "string",
"title": "cdrom image"
}
}
}
},
"required": [
"name"
]
}
}
},
"required": [
"appliance_id",
"name",
"category",
"description",
"vendor_name",
"vendor_url",
"product_name",
"registry_version",
"status",
"maintainer",
"maintainer_email"
]
}