mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-13 05:50:33 +01:00
Assign VLANs also to Regions not only Sites or Global #745
Closed
opened 2025-12-29 16:25:22 +01:00 by adam
·
9 comments
No Branch/Tag Specified
main
21102-fix-graphiql-explorer
update-changelog-comments-docs
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#745
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @tioan on GitHub (Mar 3, 2017).
I would like i would like to be able to assign a vlan or vlan group also to an region not only global or to an site.
Now with region #164 and global vlan #235 support in Version 1.9 #933 i use two regions, one for our factory premises with 20 sites (every building as its own site) and a second region with only one site for the remote datacenter.
Now i can set all vlans that i want to use at the whole factory premises to global instead of an site.
But then all this vlan are even available at the secound region which is undesired.
@jeremystretch commented on GitHub (Mar 17, 2017):
How would you modify the existing data model to accomplish this?
@jeremystretch commented on GitHub (Mar 17, 2017):
You can create VLAN groups that are not restricted by site. This is probably even more flexible than assigning VLANs to regions, and it doesn't require any changes to the data model.
I'm going to close this out as this seems like a workable solution but please comment if you disagree.
@lampwins commented on GitHub (Mar 17, 2017):
@jeremystretch the VLAN group would belong to the global context then right? I think the bigger issue here is being able to assign a vlan/group to a subset of sites. In terms of a source of truth, if I am looking at a particular device, how would I make the association that a vlan/group should be applied to that device? Because I don't want my vlan/group to be applied to all devices, just a subset? Does that make sense?
@jeremystretch commented on GitHub (Mar 17, 2017):
@lampwins I don't follow. A VLAN being assigned to a site does not necessarily mean that it should exist on a particular device within that site. Some external knowledge about the network design is needed to make that call.
@lampwins commented on GitHub (Mar 17, 2017):
@jeremystretch You are correct, however it is an interpretation based on the current ambiguity of model in this case. Take this scenario for example; my config management system is building out a new device and looks to netbox for data. The closest a vlan can be to a device currently is at the site level. So that is only interpretation that my config management system can make, as I only want it looking at netbox for data as it is the source of truth.
Thinking about it more, the real solution to that particular problem would be vlan port assignment #150
So I get where you are coming from, it is just a different way of looking at it.
@teutonet commented on GitHub (Apr 12, 2017):
We would like to request this feature too.
With this feature we can better represent the hierarchical vlan structure in our datacenters.
The data model has to be extended by a region field in the vlan model. Now you can set a vlan global to a region and/or local to a site.
For example:
VLAN 1 the backbone is available in all sites of region 1.
VLAN 2 a customer VLAN is only available in site 1 of region 1.
VLAN 3 another customer VLAN is only available in site 2 of region 1.
In the moment I have no idea how to maintain uniqueness of vlans within region and sites.
A vlan where site is set, has to be unique only in this site. A vlan where only region is set, has to be unique only in this region.
With a vlan group you have no direct relation from a vlan to a region, because vlan groups can only be assigned to sites.
@jeremystretch commented on GitHub (Apr 12, 2017):
@TeutoNet Again, you can easily create VLANGroups to establish this hierarchy.
@vibe-x commented on GitHub (Apr 13, 2017):
@jeremystretch
With VLANGroups you can just assign a group to a site, or global. Let's have a look at the possibilities:
Some configured information:
VLAN 1 (ungrouped) has a prefix (1.2.3.4/24)
VLAN 1 (ungrouped) has a prefix (5.6.7.8/24)
Regions:
A is in Berlin
B is in Frankfurt
No we have 2 completely different sites (alpha, beta) in each region, because of failover.
So we have 4 sites (A.alpha, A.beta | B.alpha, B.beta) total. Both sites (alpha,beta) shares the same VLAN.
I cannot configure the VLAN globally inside a region, so I would need to go one of the following 2 ways:
configure the VLAN 1 (Uplink) globally and name it uplink1, uplink2, which do not pass, because the VLAN1 of Berlin is not configurable in Frankfurt and the other way around either (because of prefix). So we have to bind it to site (see 2nd way).
Build a VLAN Group and assign it to a site (your suggestion), but wait, now the VLAN1 is either A.alpha or A.beta. We would need to configure VLANs multiple times, which makes it much complicated.
So i thought about using site as global instance, but later, if you need to split alpha, beta, you could use rack groups, but theese cannot be used to assign vlans either. You will have no filters available to get a satisfying result.
I hope you can understand, why it would be very nice to assign VLANs, or at least VLANGroups per region, to configure failover scenarios for example.
If you need any more information, please tell me.
@jeremystretch commented on GitHub (Apr 13, 2017):
@vibe-x Create a global VLANGroup named "Region A" and assign the desired VLANs to it. Create another one for "Region B." Problem solved. There's no need to strictly couple the groups to Region objects.