GNS3 / gns3-registry

GNS3 devices registry
GNU General Public License v3.0
327 stars 392 forks source link

Publishing FRR Debian based appliance #697

Closed elico closed 1 year ago

elico commented 1 year ago

Since the FRR VM appliance is stuck for 8 month on the 8.1 version I want to publish a Debian based FRR appliance which is supported by the official FRR team. I am looking for some directions to guidance on the right way to create and publish an appliance in the registry.

It's pretty simple for me to create a VM but I am not sure on how to clean it up and prepare the system and the networking configuration for publishing. Any help would be great.

Thanks,

giangi commented 1 year ago

Hi @elico. The README states

We welcome pull requests for new appliances.

Regarding images / disks referenced in new appliance files, we accept links that point to well-known vendor websites or other trusted source websites.

For new contribution, we accept links depending on multiple criteria: the kind of appliance, who submits it and especially if scripts to build the images(s) are provided (packer scripts are recommended for Qemu appliances). Then we will build on our side, verify and upload the image(s) on the GNS3 Sourceforge account.

For Docker appliances, please provide a Dockerfile.

I am also interested, and have some technical knowledge, but no experience on the right way to build one. I was looking at copying from what already present in the packer directory, and maybe integrating some suggestions from https://www.uni-koeln.de/~pbogusze/posts/Building_64bit_alpine_linux_GNS3_FRRouting_appliance.html.

This should help with both updating the current Alpine-based appliance and create a new Debian one. I have no experience with packer so I cannot guarantee results. Do you feel that you can accomplish this easily with your skillset, or would you like me to try? Obviously any correction and further guidance is appreciated.

elico commented 1 year ago

@giangi the Frr is pretty simple to do since it really only needs to be updated to the latest 3.16 and maybe to also offer a edge version which seems pretty simple. I will need to verify that I am able to do so and it will take me a week or more since I don't have a lot of spare time.

About the debian part, I will try to look for a packer example and then will try to verify how I to do so. There is another possibility with debian and it's to create a cloud-init iso that will configure the existing VM and will install FRR. I can implement the cloud-init solution pretty fast but it would not be a fully "offline" appliance.

Lets try to be in touch here in the next 2 weeks to make sure we can do this.

Thanks,

giangi commented 1 year ago

Hi. I could not resist the urge to scratch the itch, and as a weekend project I tried to whip up something in giangi/frr-gns3. It may not be that good, but I will have less time once the working week starts, so I wanted to share it before then.

I was able to import both appliances into GNS3 and boot them, but I did not go into any real test. Maybe they are a starting point, and if they are good enough a more stable contribution could be made here using some ideas from them. Probably the first thing is to confirm that they work and fit the title. I will try to replace some of the 8.1.0 Alpine appliances from the marketplace in one of my projects with these experimental Debian ones to test them further. Any feedback is appreciated.

elico commented 1 year ago

@giangi I will try to look at it next week. Looks pretty good. I myself was looking for Debian preseeding instructions but didn't managed yet to even scratch it. I do like RHEL based systems and feel stable with them.

ghost commented 1 year ago

Sad enough, I don't have time to help you on this issue. But I have added a Debian packer script to the repository, it uses the Debian cloud image as a base. Maybe this helps a bit.

giangi commented 1 year ago

Thanks @b-ehlers . Your work helped me muster the courage to go through the cloud-init documentation and showed me how to integrate it in packer. I updated my experiments at giangi/frr-gns3. I did not have time to make any significant test apart from basic configuration, but the images seem in a good overall shape.

May I ask how one would proceed with the contribution? I expect that doing a pull request with a packer setup for the cloud image variant like you did for the Debian Cloud base image would be a first step. Did I understand correctly from the README that once such contribution has been made, I could rely on the GNS3 team to create the official .gns3a template file, build images, uploading them to the GNS3 sourceforge account, and do whatever is necessary for the marketplace integration?

ghost commented 1 year ago

Did I understand correctly from the README that once such contribution has been made, I could rely on the GNS3 team to create the official .gns3a template file, build images, uploading them to the GNS3 sourceforge account, and do whatever is necessary for the marketplace integration?

The GNS3 team is quite busy, so it's best to make it easy for them. So I suggest to add your frr image creation scripts somewhere in the packer (or packer/debian) directory. Then build an image and upload it anywhere, where the GNS3 devs can easily get it. So they either can generate their own image or get your image. Then they will upload it to sourceforge.

Normally the GNS3 devs won't create the .gns3a template. Of course, you can ask them for help. But normally you should update (and test) the appliance/frr.gns3a template file to use your image. If your image needs other parameters then the current frr images, then you can remove the old ones. After the pull request with the updated gns3a template is merged, the template will be automatically send to the gns3.com community web site.

You can create one pull request or split it into two, just as you prefer. But I strongly suggest to clearly tell the GNS3 devs, what needs to be done by them. Otherwise they may overlook something.

grossmj commented 1 year ago

Thanks to @giangi the FRR appliance has been updated to version 8.2.2 :partying_face:

elico commented 1 year ago

@giangi and @grossmj Thanks.