netbox-community / netbox

The premier source of truth powering network automation. Open source under Apache 2. Public demo: https://demo.netbox.dev
http://netboxlabs.com/oss/netbox/
Apache License 2.0
15.68k stars 2.53k forks source link

Ability to group services and select multiple protocols to create an 'application' #16841

Closed goteamkor closed 2 weeks ago

goteamkor commented 1 month ago

NetBox version

v4.0.6

Feature type

Change to existing functionality

Proposed functionality

Currently, services and service templates follow a 1:1 relationship and only allow a single protocol per service. My proposal is to modify the current behavior to allow a one to many relationship, and allow multiple protocols for a single service.

Multi-protocol service Services can sometimes operate over multiple protocols. For instance, DNS. Although typically a UDP service, DNS will actually use TCP in certain situations. https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/dns-works-on-tcp-and-udp We should be able to model this in Netbox using a single service (DNS), with the ability to select both TCP and UDP. Currently you would have to create 2 separate services for DNS, 1 using TCP the other using UDP. Which segways into the larger feature request.

Group service templates together Currently, when you create a service and wish to reference a service template, you are only able to choose a single service template. The feature request is to add the ability to select multiple service templates rather than just one. This would give you the ability to select multiple ports/protocols from different service templates to form a more complete "service" that runs on a device/VM.

Use case

Let's pretend we want to model the service "Active Directory". AD is a catch-all phrase for a number of different technologies (LDAP, Kerberos, DNS, RPC, SMB, NetBIOS, etc.) With the above features implemented, we would be able to create all of those separate technologies as service templates, then group them together into a service called "Active Directory" which we could then apply to a domain controller VM.

Or another example might be a custom home grown internal application that uses multiple different custom ports and/or protocols. We would then group those together to form an application called "Internal ERP" or whatever your app is called, and apply those to devices/vm's to better model what services a machine hosts/uses.

Database changes

I don't believe any database changes are needed. 95% of the functionality is already there, it just needs some slight modifications to allow multiple values rather than a single value for the "protocols" on service templates, and multiple choice for "service templates" on services.

External dependencies

none.

goteamkor commented 1 month ago

There appears to already be a plugin idea for this exact FR : https://plugin-ideas.netbox.dev/ideas/PLUGINS-I-27 Oddly enough they used the same LDAP example.

I do not believe this would need to be a plugin though as you don't really need to create 'applications'. You can simply continue to refer to an application as a 'service' within the existing netbox data model. The only difference is that with this FR implemented, a service can be 1:1 or 1:N.

Your service can contain a single port with a single protocol, SSH (TCP/22) for example, or a grouping of multiple service templates using multiple ports/protocols.

goteamkor commented 2 weeks ago

Closing this in favor of revamped FR with broader scope for services. https://github.com/netbox-community/netbox/issues/17196