NetboxPS icon indicating copy to clipboard operation
NetboxPS copied to clipboard

Powershell module for Netbox

NetboxPS

Powershell Netbox API module

Disclaimer

This module is beta. Use it at your own risk. I have only added functions as I have needed them, so not everything is available.

All functions are exported at the moment, including internal/private functions.

Description

This module is a wrapper for the Netbox API.

Usage

  1. Install module from the netboxPS folder
  2. Import module
  3. Connect to an API endpoint by using Connect-NetboxAPI -Hostname netbox.example.com

Basic Commands

#Just adding a new IP
New-NetboxIPAMAddress -Address 10.0.0.1/24 -Dns_name this.is.thedns.fqdn -Custom_Fields @{CustomFieldID="CustomFieldContent"} -Tenant 1 -Description "Description"

#Creating a new VM, add an interface and assign Interface IP
function New-NBVirtualMachine
{
    [CmdletBinding()]
    [Alias()]
    [OutputType([int])]
    Param
    (
        [string]$Name,
        [string]$Cluster,
        [string]$IP,
        [string]$tenant,
        [string]$VMNICName
    )

    Begin
    {
        $NBCluster = Get-NetboxVirtualizationCluster -name $Cluster
        $NBTenant = Get-NetboxTenant -Name $tenant
    }
    Process
    {
        $vm = New-NetboxVirtualMachine -Name $Name -Cluster $NBCluster.id -Tenant $NBtenant.id
        $interface = Add-NetboxVirtualMachineInterface -Name $VMNICName -Virtual_Machine $vm.id


        $NBip = New-NetboxIPAMAddress -Address $IP -Tenant $NBtenant.id 
        Set-NetboxIPAMAddress -Assigned_Object_Type virtualization.vminterface -Assigned_Object_Id $interface.id -id $NBip.id
        Set-NetboxVirtualMachine -Primary_IP4 $NBip.id -Id $vm.id
    }
}

Notes

I started this project years ago with Powershell Studio using the built in deployment methods, learning Git, and learning PS best practices. So please forgive any "obvious" mistakes 😅 Over time I have had to adjust my methods for deployment... change the design of functions, and refactor code as I learn new and better things.

This was built out of a need at my job to interact with Netbox for automation. Only recently has it become a "public" project with other collaborators (which I truly appreciate!). I have done my best to ensure each function does exactly one thing according to the API.

I will do my best to keep up, but please understand it is given attention as I can at work. As time permits, I will open issues for TODOs for things I have wanted to do for a while, just haven't had time or enough "need" to do them.

Contributing

I am always open to suggestions for improvement with reasons and data to back up the suggestion.