Este é o registro GNS3 onde o usuário pode compartilhar aparelhos e símbolos.
Aceitamos solicitações pull para novos aparelhos.
Em relação às imagens/discos referenciados em novos arquivos do dispositivo, aceitamos links que apontam para sites de fornecedores conhecidos ou outros sites de fontes confiáveis.
Para novas contribuições, aceitamos links dependendo de vários critérios: o tipo de dispositivo, quem o envia e principalmente se são fornecidos scripts para construir as imagens (scripts de empacotador são recomendados para dispositivos Qemu). Em seguida, construiremos do nosso lado, verificaremos e carregaremos a(s) imagem(s) na conta GNS3 Sourceforge.
Para dispositivos Docker, forneça um Dockerfile. Em seguida, construiremos e enviaremos a imagem no hub Docker.
Existem duas maneiras de criar um novo dispositivo:
appliances
new_appliance.py
Depois disso, você pode nos enviar uma solicitação pull no Github
Em schemas/appliance.json você tem um JSON com um esquema para controlar o arquivo e pode ser usado como documentação para cada campo.
O GNS3 verifica a versão do esquema, se o esquema de um aparelho não for suportado apresenta o erro "Atualize o GNS3 para instalar este aparelho".
Esquema | min. Versão GNS3 | Adições |
---|---|---|
2 | 1.4.0 | |
3 | 1.5.0 | janela de encaixe |
4 | 2.0.0 | disponibilidade qemu/cpus qemu/hd?_disk_interface: sata versões/imagens/bios_image |
5 | 2.1.0 | qemu/console_type: tempero |
6 | 2.2.0 | qemu/adaptadores_customizados qemu/console_type: tempero+agente todos/console_type: nenhum |
7 | 2.2.36 | qemu/tpm |
8 | 2.2.43 | Veja abaixo |
A versão 8 do esquema introduziu muitas alterações no esquema do dispositivo. Os mais importantes são:
uefi_boot_mode
nas propriedades do modelo Qemu.default
definido como true
Notas
Um campo template_type
deve ser adicionado para informar ao GNS3 qual modelo criar (qemu, iou, dynamips ou docker), misturar diferentes tipos de modelos não é suportado no momento. Todas as propriedades específicas do modelo são definidas em um campo template_properties
.
Exemplo
"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
como false
md5sum
foi renomeado como checksum
. O campo md5sum
ainda é aceito para facilitar a migração de versões anteriores do formato.checksum_type
para desenvolvimento futuro. O tipo de soma de verificação padrão e único permanece MD5 por enquanto.default_username
e default_password
nos níveis do dispositivo e da versão.installation_instructions
nos níveis de dispositivo e versão para fornecer instruções de download/descompactação para alguns dispositivos.compression_target
a ser usado junto com o campo de compressão em desenvolvimento futuro.idlepc
na seção de versões foi movido para template_properties
para o tipo de modelo dynamips
first_port_name
, port_name_format
, port_segment_size
e linked_clone
são movidos para template_properties
para o tipo de modelo qemu (esses campos são válidos apenas para modelos Qemu).arch
do qemu foi renomeado como platform
para corresponder às propriedades do modelo no lado do controlador.kvm
foi eliminado e não é mais necessário. A instalação de um dispositivo não deve levar em consideração os servidores disponíveis e suas capacidades (por exemplo, capazes de executar kvm, etc.).category
, usage
e symbol
podem ser definidos em qualquer template_properties
. Os padrões estão no nível do dispositivo ou no nível da versão (eles serão injetados em template_properties
se ainda não estiverem definidos lá).version
do template (somente versão do controlador >= v3.0)name
e default_name_format
a todas as propriedades do modelo.console_resolution
, extra_hosts
e extra_volumes
às propriedades do modelo Docker.spice+agent
em console_type
para propriedades do modelo Qemu.Exemplo completo
{
"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 "
}
}
]
}
Procure exemplos no diretório symbols
.
Este repositório também contém a fonte do contêiner Docker publicado pela equipe GNS3 e que pode ser utilizado como appliance no GNS3.
Todas as ferramentas requerem python3 e as dependências podem ser instaladas usando pip:
python3 -m pip install -r requirements.txt
python3 check.py
python3 check_urls.py
python3 new_appliance.py
Isso recuará o JSON de todos os dispositivos e classificará a chave na mesma ordem do esquema JSON.
python3 prettify_appliances.py