Il s'agit du registre GNS3 où l'utilisateur peut partager des appareils et des symboles.
Nous acceptons les demandes de tirage pour de nouveaux appareils.
Concernant les images/disques référencés dans les nouveaux fichiers de l'appliance, nous acceptons les liens pointant vers des sites Web de fournisseurs bien connus ou d'autres sites Web sources fiables.
Pour les nouvelles contributions, nous acceptons les liens en fonction de plusieurs critères : le type d'appliance, qui la soumet et surtout si des scripts pour construire la ou les images sont fournis (les scripts packer sont recommandés pour les appliances Qemu). Ensuite, nous allons construire de notre côté, vérifier et télécharger la ou les images sur le compte GNS3 Sourceforge.
Pour les appliances Docker, veuillez fournir un Dockerfile. Nous allons ensuite créer et transférer l'image sur le hub Docker.
Il existe deux manières de créer une nouvelle appliance :
appliances
new_appliance.py
Après cela, vous pouvez nous envoyer une pull request sur Github
Dans schemas/appliance.json, vous disposez d'un JSON avec un schéma pour contrôler le fichier et peut être utilisé comme documentation pour chaque champ.
GNS3 vérifie la version du schéma, si le schéma d'un appareil n'est pas pris en charge, il affiche l'erreur « Veuillez mettre à jour GNS3 afin d'installer cet appareil ».
Schéma | min. Version GNS3 | Ajouts |
---|---|---|
2 | 1.4.0 | |
3 | 1.5.0 | docker |
4 | 2.0.0 | disponibilité qemu/cpus qemu/hd?_disk_interface : sata versions/images/bios_image |
5 | 2.1.0 | qemu/console_type : épice |
6 | 2.2.0 | qemu/custom_adapters qemu/console_type : épice+agent all/console_type : aucun |
7 | 2.2.36 | qemu/tpm |
8 | 2.2.43 | Voir ci-dessous |
La version 8 du schéma a introduit de nombreuses modifications dans le schéma de l'appliance. Les plus importants sont :
uefi_boot_mode
dans les propriétés du modèle Qemu.default
défini sur true
existeRemarques
Un champ template_type
doit être ajouté pour indiquer à GNS3 quel modèle créer (qemu, iou, dynamips ou docker), le mélange de différents types de modèles n'est pas pris en charge pour le moment. Toutes les propriétés spécifiques au modèle sont définies dans un champ template_properties
.
Exemple
"settings" : [
{
"default" : true ,
"template_type" : " qemu " ,
"template_properties" : {
"platform" : " x86_64 " ,
"adapter_type" : " e1000 " ,
"adapters" : 1 ,
"ram" : 1024 ,
"console_type" : " vnc "
}
},
{
"name" : " i386 settings " ,
"template_type" : " qemu " ,
"template_properties" : {
"platform" : " i386 " ,
"adapters" : 8
}
},
{
"name" : " ARM settings " ,
"template_type" : " qemu " ,
"template_properties" : {
"platform" : " arm " ,
"ram" : 512
}
}
],
"versions" : [
{
"name" : " 1.0 " ,
"images" : {
"hda_disk_image" : " disk1.qcow2 "
}
},
{
"name" : " 2.0 " ,
"settings" : " i386 settings " ,
"images" : {
"hda_disk_image" : " disk2.qcow2 "
}
},
{
"name" : " 3.0 " ,
"settings" : " ARM settings " ,
"images" : {
"hda_disk_image" : " disk3.qcow2 "
}
},
]
inherit_default_properties
sur false
md5sum
est renommé checksum
. Le champ md5sum
est toujours accepté pour faciliter la migration à partir des versions de format précédentes.checksum_type
facultatif pour un développement futur. Le type de somme de contrôle par défaut et unique reste MD5 pour le moment.default_username
et default_password
au niveau de l’appliance et de la version.installation_instructions
au niveau de l'appliance et de la version pour donner des instructions de téléchargement/décompression à certaines appliances.compression_target
facultatif à utiliser avec le champ de compression dans les développements futurs.idlepc
dans la section versions est déplacé vers template_properties
pour le type de modèle dynamips
first_port_name
, port_name_format
, port_segment_size
et linked_clone
sont déplacés vers template_properties
pour le type de modèle qemu (ces champs ne sont valables que pour les modèles Qemu).arch
pour qemu a été renommé platform
pour correspondre aux propriétés du modèle côté contrôleur.kvm
a été supprimé et n'est plus nécessaire. L'installation d'une appliance ne doit pas prendre en compte les serveurs disponibles et leurs capacités (par exemple capables d'exécuter kvm, etc.)category
, usage
et symbol
peuvent être définis dans n'importe quel template_properties
. Les valeurs par défaut sont au niveau de l'appliance ou au niveau de la version (elles seront injectées dans template_properties
si elles n'y sont pas déjà définies).version
du modèle (uniquement version du contrôleur >= v3.0)name
et default_name_format
à toutes les propriétés du modèle.console_resolution
, extra_hosts
et extra_volumes
aux propriétés du modèle Docker.spice+agent
dans console_type
pour les propriétés du modèle Qemu.Exemple complet
{
"appliance_id" : " 709c2a9b-5dc3-4362-b147-fb848a0df963 " ,
"name" : " My appliance " ,
"category" : " router " ,
"description" : " This is my new appliance " ,
"vendor_name" : " Cisco " ,
"vendor_url" : " http://www.cisco.com/ " ,
"documentation_url" : " https://www.cisco.com/c/en/us/support/routing/xxx " ,
"product_name" : " Appliance product xxx " ,
"product_url" : " https://www.cisco.com/c/en/us/products/xxx/index.html " ,
"registry_version" : 8 ,
"status" : " experimental " ,
"maintainer" : " GNS3 Team " ,
"maintainer_email" : " [email protected] " ,
"installation_instructions" : " This is how to install this appliance " ,
"usage" : " This is how to use my appliance " ,
"symbol" : " router.svg " ,
"default_username" : " cisco " ,
"default_password" : " admin " ,
"settings" : [
{
"name" : " Default template settings " ,
"default" : true ,
"template_type" : " qemu " ,
"template_properties" :
{
"symbol" : " multilayer_router.svg " ,
"first_port_name" : " ethernet0 " ,
"port_name_format" : " ethernet{port1} " ,
"adapter_type" : " e1000 " ,
"adapters" : 2 ,
"ram" : 4096 ,
"cpus" : 1 ,
"hda_disk_interface" : " scsi " ,
"platform" : " x86_64 " ,
"console_type" : " vnc " ,
"boot_priority" : " cd " ,
"options" : " "
}
},
{
"name" : " Custom settings for version 7.10.2 " ,
"template_type" : " qemu " ,
"inherit_default_properties" : false ,
"template_properties" :
{
"adapters" : 4 ,
"ram" : 8192 ,
"cpus" : 1
}
}
],
"images" : [
{
"filename" : " file.iso " ,
"version" : " 7.10.2 " ,
"checksum" : " ef8712e655fcbc92dc1a1551ee2e4a80 " ,
"checksum_type" : " md5 " ,
"filesize" : 1287245824 ,
"download_url" : " https://software.cisco.com/download/home/286307342/type/286307754/release/7.10.2 "
},
{
"filename" : " file2.iso " ,
"version" : " 6.10.4 " ,
"checksum" : " 68232f77da8f78cdc9aa6f3266a4d4c0 " ,
"filesize" : 3949459594 ,
"download_url" : " https://software.cisco.com/download/home/286307342/type/286307754/release/6.10.4 "
},
{
"filename" : " empty100G.qcow2 " ,
"version" : " 1.0 " ,
"md5sum" : " 1e6409a4523ada212dea2ebc50e50a65 " ,
"filesize" : 198656 ,
"download_url" : " https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/ " ,
"direct_download_url" : " https://sourceforge.net/projects/gns-3/files/Empty%20Qemu%20disk/empty100G.qcow2/download "
}
],
"versions" : [
{
"name" : " 7.10.2 " ,
"settings" : " Custom settings for version 7.10.2 " ,
"images" : {
"hda_disk_image" : " empty100G.qcow2 " ,
"cdrom_image" : " file.iso "
}
},
{
"name" : " 6.10.4 " ,
"default_username" : " admin123 " ,
"default_password" : " admin123 " ,
"installation_instructions" : " This is how to install this version " ,
"usage" : " This is how to use this version " ,
"symbol" : " ethernet_switch.svg " ,
"images" : {
"hda_disk_image" : " empty100G.qcow2 " ,
"cdrom_image" : " file2.iso "
}
}
]
}
Recherchez des exemples dans le répertoire symbols
.
Ce référentiel contient également le source du conteneur Docker publié par l'équipe GNS3 et qui peut être utilisé comme appliance dans GNS3.
Tous les outils nécessitent python3 et les dépendances peuvent être installées à l'aide de pip :
python3 -m pip install -r requirements.txt
python3 check.py
python3 check_urls.py
python3 new_appliance.py
Cela indentera le JSON de tous les appareils et triera la clé dans le même ordre que le schéma JSON.
python3 prettify_appliances.py