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 électroménagers.
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 :
Copiez et collez un JSON depuis le répertoire appliances
Exécutez 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/image_bios |
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 :
Prise en charge de la propriété uefi_boot_mode
dans les propriétés du modèle Qemu.
Possibilité d'avoir plusieurs ensembles de paramètres à utiliser avec différentes versions d'image. Les paramètres par défaut sont spécifiés si
un champ default
défini sur true
existe
il n'y a qu'un seul ensemble présent.
Remarques
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
"paramètres": [ {"default": true,"template_type": "qemu", "template_properties": {"platform": "x86_64", "adapter_type": "e1000", "adaptateurs": 1, "ram": 1024,"console_type ": "vnc"} }, {"name": "paramètres i386","template_type": "qemu","template_properties": {"platform": "i386","adapters": 8} }, {"name": "Paramètres ARM","template_type": "qemu","template_properties": {"platform": "arm","ram": 512} } ],"versions": [ {"name": "1.0","images": {"hda_disk_image": "disk1.qcow2"} }, {"name": "2.0","settings": "paramètres i386","images": {"hda_disk_image": "disk2.qcow2"} }, {"name": "3.0","settings": "Paramètres ARM","images": {"hda_disk_image": "disk3.qcow2"} }, ]
Les paramètres par défaut sont hérités d'autres paramètres définis, cela peut être bloqué en définissant inherit_default_properties
sur false
La valeur par défaut du modèle de contrôleur est utilisée si une propriété de modèle n'est pas définie ou héritée des paramètres par défaut.
Le champ md5sum
est renommé checksum
. Le champ md5sum
est toujours accepté pour faciliter la migration à partir des versions de format précédentes.
Nouveau champ 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.
Nouveaux champs facultatifs default_username
et default_password
au niveau de l’appliance et de la version.
Nouveau champ facultatif installation_instructions
au niveau de l'appliance et de la version pour donner des instructions de téléchargement/décompression à certaines appliances.
Nouveau champ compression_target
facultatif à utiliser avec le champ de compression dans les développements futurs.
Le champ idlepc
dans la section versions est déplacé vers template_properties
pour le type de modèle dynamips
Les champs 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 valides que pour les modèles Qemu).
Le champ arch
pour qemu a été renommé platform
pour correspondre aux propriétés du modèle côté contrôleur.
Le champ 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.)
Les champs 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).
La version de l'appliance installée sera injectée dans le champ version
du modèle (uniquement version du contrôleur >= v3.0)
Ajoutez les champs name
et default_name_format
à toutes les propriétés du modèle.
Ajoutez console_resolution
, extra_hosts
et extra_volumes
aux propriétés du modèle Docker.
Autorisez spice+agent
dans console_type
pour les propriétés du modèle Qemu.
Exemple complet
{"appliance_id": "709c2a9b-5dc3-4362-b147-fb848a0df963","name": "Mon appareil","category": "router","description": "Ceci est mon nouvel appareil","vendor_name": "Cisco", "vendor_url": "http://www.cisco.com/", "documentation_url": "https://www.cisco.com/c/en/us/support/routing/xxx","product_name": "Produit d'appliance xxx", "product_url": "https://www.cisco.com/c /en/us/products/xxx/index.html","registry_version":8,"status": "experimental","maintainer": "Équipe GNS3","maintainer_email": "[email protected]"," installation_instructions": "C'est comment installer cet appareil","usage": "Voici comment utiliser mon appareil","symbol": "router.svg","default_username": "cisco","default_password": "admin","settings" : [ {"name": "Paramètres du modèle par défaut","default": true,"template_type": "qemu","template_properties": {"symbol": "multilayer_router.svg", "first_port_name": "ethernet0", "port_name_format": "ethernet{port1}", "adapter_type": "e1000", "adaptateurs": 2, "ram": 4096, "cpus": 1,"hda_disk_interface": "scsi", "platform": "x86_64", "console_type": "vnc", "boot_priority": "cd","options": ""} }, {"name": "Paramètres personnalisés pour la version 7.10.2", "template_type": "qemu", "inherit_default_properties": false, "template_properties": {"adaptateurs": 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": "Paramètres personnalisés pour la 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": "Voici comment installer cette version","usage": "Voici comment installer utilisez cette 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