Netbox Create IP Task¤
task api name:
create_ip
Task to create next available IP from prefix or get existing IP address.
Netbox service create_ip
task integrated with Nornir service and can be called
using netbox.create_ip Jinja2 filter,
allowing to allocate IP addresses in Netbox on the fly while rendering configuration templates.
Branching Support¤
Create IP task is branch aware and can create IP addresses within the branch. Netbox Branching Plugin need to be installed on Netbox instance.
NORFAB Netbox Create IP Command Shell Reference¤
NorFab shell supports these command options for Netbox create_ip
task:
nf#man tree netbox.create.ip
root
└── netbox: Netbox service
└── create: Create objects in Netbox
├── timeout: Job timeout
├── workers: Filter worker to target, default 'any'
├── verbose-result: Control output details, default 'False'
├── progress: Display progress events, default 'True'
├── instance: Netbox instance name to target
├── dry-run: Do not commit to database
├── *prefix: Prefix to allocate IP address from, can also provide prefix name or filters
├── device: Device name to associate IP address with
├── interface: Device interface name to associate IP address with
├── description: IP address description
├── vrf: VRF to associate with IP address
├── tags: Tags to add to IP address
├── dns_name: IP address DNS name
├── tenant: Tenant name to associate with IP address
├── comments: IP address comments field
├── role: IP address functional role
└── branch: Branching plugin branch name to use
nf#
Python API Reference¤
Allocate the next available IP address from a given subnet.
This task finds or creates an IP address in NetBox, updates its metadata, optionally links it to a device/interface, and supports a dry run mode for previewing changes.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
prefix
|
str
|
The prefix from which to allocate the IP address, could be:
|
required |
description
|
str
|
A description for the allocated IP address. |
None
|
device
|
str
|
The device associated with the IP address. |
None
|
interface
|
str
|
The interface associated with the IP address. |
None
|
vrf
|
str
|
The VRF (Virtual Routing and Forwarding) instance. |
None
|
tags
|
list
|
A list of tags to associate with the IP address. |
None
|
dns_name
|
str
|
The DNS name for the IP address. |
None
|
tenant
|
str
|
The tenant associated with the IP address. |
None
|
comments
|
str
|
Additional comments for the IP address. |
None
|
instance
|
str
|
The NetBox instance to use. |
None
|
dry_run
|
bool
|
If True, do not actually allocate the IP address. Defaults to False. |
False
|
branch
|
str
|
Branch name to use, need to have branching plugin installed, automatically creates branch if it does not exist in Netbox. |
None
|
Returns:
Name | Type | Description |
---|---|---|
dict |
Result
|
A dictionary containing the result of the IP allocation. |
Tasks execution follow these steps:
-
Tries to find an existing IP in NetBox matching the device/interface/description. If found, uses it; otherwise, proceeds to create a new IP.
-
If prefix is a string, determines if it’s an IP network or a description. Builds a filter dictionary for NetBox queries, optionally including VRF.
-
Queries NetBox for the prefix using the constructed filter.
-
If dry_run is True, fetches the next available IP but doesn’t create it.
-
If not a dry run, creates the next available IP in the prefix.
-
Updates IP attributes (description, VRF, tenant, DNS name, comments, role, tags) if provided and different from current values. Handles interface assignment and can set the IP as primary for the device.
-
If changes were made and not a dry run, saves the IP and device updates to NetBox.
Source code in norfab\workers\netbox_worker.py
2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 |
|