Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ramblingcookiemonster/infoblox

Infoblox PowerShell Module
https://github.com/ramblingcookiemonster/infoblox

infoblox powershell powershell-modules

Last synced: 9 days ago
JSON representation

Infoblox PowerShell Module

Awesome Lists containing this project

README

        

[![Build status](https://ci.appveyor.com/api/projects/status/9xnsg4e3hfa7uank/branch/master?svg=true)](https://ci.appveyor.com/project/RamblingCookieMonster/infoblox)

Infoblox PowerShell Module
=============

This is a PowerShell module for working with the Infoblox Web API.

This is a quick and dirty implementation based on my environment's configuration, with limited functionality. Contributions to improve this would be more than welcome!

Some caveats:

* A number of shortcuts have been taken given that this is a fast publish. This is more of a demo module; I have no plans to address these, but contributions are welcome!
* Limited testing, limited validation of edge case scenarios
* Limited error handling
* Limited comment based help and examples (some may be outdated)

#Functionality

Search Infoblox DHCP leases:
* ![Search for Infoblox DHCP leases](/Media/Get-IBLease.png)

Search for Infoblox networks
* ![Search for Infoblox networks](/Media/Get-IBObject.png)

Search for Infoblox for IPAM IPv4 addresses between two IPs
* ![Search for Infoblox DHCP leases](/Media/Get-IBObjectFilter.png)

#Prerequisites

* You must be using Windows PowerShell 3 or later on the system running this module
* You must have your Infoblox configured to allow access to the Web API
* You must have access to query the Infoblox Web API
* We serialize a default Uri Infoblox.xml in the module path - you must have access to that path for this functionality
* Module folder downloaded, unblocked, extracted, available to import

#Instructions

```powershell
# One time setup
# Download the repository
# Unblock the zip
# Extract the Infoblox folder to a module path (e.g. $env:USERPROFILE\Documents\WindowsPowerShell\Modules\)

# Import the module.
Import-Module Infoblox #Alternatively, Import-Module \\Path\To\Infoblox

# Get commands in the module
Get-Command -Module Infoblox

# Get help for a command or two
Get-Help Set-IBConfig -Full
Get-Help New-IBSession -Full

# Optional persistent default config setup
# This configures Infoblox.xml in your module folder, will load each time you import the module
Set-IBConfig -Uri "https://grid.contoso.com" -IBVersion "v1.6"

# View the current config settings
Get-IBConfig

# Establish a new session. This uses the IBConfig Uri and IBVersion
New-IBSession -Credential (Get-Credential)

# Note! if you don't have certificates set up correctly, you may see the following error. Set-TrustAllCertsPolicy is a temporary solution
# Error retrieving session: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
# Set-TrustAllCertsPolicy

# Get all leases
Get-IBLease

# Get leases for any address in 192.168.0., with a free binding state
Get-IBLease -Address 192.168.0. | Where {$_.binding_state -like "FREE"}

# Get a list of all networks defined on the InfoBlox. Get-IBObject is a generic wrapper to pull random object types
Get-IBObject -Object Network

# Maybe you want to go from an IP address to a network:

# Get network from IPAM for a single IP
$filter = [pscustomobject]@{
Object="ip_address"
Operator="="
Filter="192.168.0.54"
}

$Network = Get-IBObject -Filters $filter -Object IPV4Address | Select -ExpandProperty network

# Get the corresponding network object
$filter = [pscustomobject]@{
Object="network"
Operator="="
Filter=$Network
}

Get-IBObject -Filters $filter -Object Network

# Find all IPAM IPv4 Addresses between two IPs
$filters = [pscustomobject]@{
Object="ip_address"
Operator=">="
Filter="192.168.0.10"
},
[pscustomobject]@{
Object="ip_address"
Operator="<="
Filter="19.168.0.100"
}

Get-IBObject -Filters $filters -Object IPV4Address
```

#NOTES

Publishing this as a reference to [this blog post](http://ramblingcookiemonster.github.io/Querying-the-Infoblox-Web-API/). Infoblox' Web API highlights [the need for vendors to provide PowerShell modules](http://ramblingcookiemonster.github.io/REST-PowerShell-and-Infoblox/) layered on top of their APIs, rather than offloading this to their customers.

* The API documentation this used was 962 pages (most of which you can skip, thankfully)
* Unique syntax and formatting that you must read up on and implement, including features like paging and filters
* I'm not too familiar with the Infoblox. I'm a consumer of a few services, and happen to like using PowerShell. Someone more familiar with the technology (the vendor) should be writing a PowerShell module.
* I'm only going to spend as much time as needed to get a result that meets my needs for reliability, functionality, and configuration.
* I have other priorities. Reading through pages upon pages of documentation that only applies to a single product's API is inefficient. This is one of the benefits of PowerShell; I learn a bit about the language, and it applies to the AD, VMware, SQL, and other PowerShell-enabled technologies.

Thanks to Don Smith and Anders Wahlqvist for ideas (and likely code snippets, this was written a long time ago)

* [REST-PowerShell](https://github.com/Infoblox-API/REST-PowerShell)
* [Infoblox-PowerShell-Module](https://github.com/DollarUnderscore/Infoblox-PowerShell-Module)

Project Status, 1/17/2016: I no longer work with or have access to an Infoblox. Feel free to fork this or use it as needed, but there will likely be no further development, barring external contributions.