mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-13 13:53:31 +01:00
Device IP Allocation Workflow #514
Closed
opened 2025-12-29 16:22:46 +01:00 by adam
·
8 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#514
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 @100Base-TX on GitHub (Nov 3, 2016).
Hi,
I've recently installed Netbox and have started to migrate from the old IPAM. So far it's been mostly excellent.
The one thing i've found to be very clunky is the process of allocating new IP addresses to devices. Maybe i'm just doing it wrong, but it's basically:
It works, it's just a pretty long winded workflow.
Is there a more streamlined way of approaching this that i'm not using?
If this is the best way of doing it at the moment, perhaps it should be an option for allocating an binding an IP to a device/interface in the "IP Space" --> "Prefixes" area. Or some sort of "get next available IP in Subnet" option when adding an IP to an interface as per step 8.
Thoughts?
@jeremystretch commented on GitHub (Nov 3, 2016):
This really depends on whether you're okay with blinding assigning the first available IP from a prefix. In most cases, I would assume you'd want to first verify what IPs are available within the prefix.
For example, let's say you want to assign an IP to each of ten new devices, and you want the IPs to be consecutive. You allocate the IPs out of 192.0.2.0/24 and the first available IP you get is 192.0.2.10. Okay, so we'll use 192.0.2.10 through 192.0.2.19. But then halfway through you find out that .15 was already taken for something else. Now you have to go back and change the assigned IPs to all fit in an available consecutive range. It would have been much more efficient to check what was assigned to the prefix in the first place.
It's also worth noting that you can import and assign IP addresses in bulk.
@LBegnaud commented on GitHub (Nov 3, 2016):
I second @100Base-TX 's idea
Our workflow for deploying a new customer in our hosting requires assigning the next WAN address from our routed subnet. This process is just as cumbersome it is described above for us.
Our procedure currently is to go to all the relevant places to find the "next" item, then document it all into an internal system which spits out the csv data to import. While this works, it would be nice to be able to choose "use next available IP" when assigning an IP to a device's interface. Or even dropdown menus that let you choose prefix, then lists the IPs.
All that said, our workflow works, I just wish it were a little more streamlined (perhaps r/w api will solve the problem :) )
@100Base-TX commented on GitHub (Nov 4, 2016):
Yeah I can see situations where a "next available" would be an issue.
Two reasonable (from a UX perspective) options I can see is:
In the device IP Assignment form, allow the user to search for a prefix. Easiest to implement would probably be typing in the Network IP Address (10.1.2.0/24 for example), however being able to search for a prefix by vlan/prefix name etc would be handy. This would then show more or less what is shown in /ipam/prefixes//ip-addresses/, allowing the user to determine what IP's are used, and what is free.
In the IP Assignment form (url like /ip-addresses/add/?address=10.1.2.1/24), allow the user to assign the IP to a device/interface. It would just involve having a pair of optional drop down list (would have to be filterable i suppose), for Device + Interface.
Doing it in bulk certainly helps. However at least in my workplace, 95% of allocations are driven by "Hey, i'm spinning up a new server, I want to allocate it an IP Address". So CSV import isn't very useful in this instance. And at the moment, the workflow described in OP appears to be the only realistic way to achieve it.
@Know1 commented on GitHub (Nov 4, 2016):
I had also mentioned something like this in another issue. I think the workflow could be streamlined as 100Base-TX suggested above, some sort of next available or pop up the free IPs like the IP Address add window.
Having to go and manually find out what IPs are free every time, either through another tab/page in Netbox or running nmap for every new IP is more work than editing the occasional IP or IPs where someone has failed to follow process as cited in the example. As stated in the "Why Netbox doesn't scan IPs" (which I agree with)
"All this boils down to a single concept: NetBox is intended to represent the intended state of the network, as defined by humans"
@jeremystretch commented on GitHub (Nov 4, 2016):
@100Base-TX:
A user might want to identify an IP by prefix, VRF, site, and/or tenant. That's a lot to try and squeeze into a single form, which is why I recommend using the dedicated IP/prefix views. It also avoids blindly assigning IPs without knowing what's already allocated within a prefix.
A more direct way of achieving this is to first navigate to the device from the device list, then assign an IP to one of its interfaces using the IP assignment form. (This form was admittedly limited prior to v1.7.0 but was improved just recently.)
@Know1:
In the scenario I provided above, 192.0.2.15/24 was already added to NetBox correctly by someone else and was intended to be there. My point is that you couldn't have known that without first verifying that the entire range of desired IPs is in fact available. A naive "next free IP" button can't provide you that information, which is why I recommend always checking the parent prefix before assigning a new IP.
@LBegnaud commented on GitHub (Nov 4, 2016):
Yes I agree that the ability to assign IPs to interfaces from the IP side of things improves the workflow tremendously in 1.7.
@jeremystretch commented on GitHub (Nov 14, 2016):
Closing this out as I don't think there's really anything actionable.
@LukeDRussell commented on GitHub (Nov 28, 2016):
I still think there is work to be done with this. I'm not in a position to do anything myself just yet but hopefully in the near future.
I am totally OK with blindly accepting the next available IP from a subnet, or next available subnet from a supernet. It is a critical feature of the write API in my opinion.