The Infoblox IPAM plugin integrates RightScale Self-Service with the basic functionality of the Infoblox IPAM API.
- Once supported, use cred() for the tunnel token parameter.
- Support additional Infoblox IPAM objects beyond the "record:host" object
- A general understanding CAT development and definitions
- Refer to the guide documentation for details SS Guides
- The
admin
,ss_designer
&ss_end_user
roles, in a RightScale account with SelfService enabled.admin
is needed to retrieved the RightScale Credential values identified below. - Infoblox service account credentials with the appropriate permissions to manage IPAM entries.
- The Infoblox service account MUST be enabled for API access. There is a user account setting in Infoblox to enable this.
- The Infoblox service account must have write permissions to the zone(s) being used for the host name.
- The Infoblox service account must have CRUD permissions to the network (i.e. CIDR) from which IP addresses are being assigned.
- Since Infoblox is an on premise solution, the plugin assumes a wstunnel is being used.
- Refer to the wstunnel documentation for details WStunnel Guide
- The following RightScale Credentials
INFOBLOX_USERID
- The Infoblox service account username.INFOBLOX_PASSWORD
- The Infoblox service account password.
- The following packages are also required (See the Installation section for details):
- Modify the plugin file itself and insert your wstunnel token in the resource_pool section.
- Navigate to the appropriate Self-Service portal
- For more details on using the portal review the SS User Interface Guide
- In the Design section, use the
Upload CAT
interface to complete the following:- Upload each of packages listed in the Requirements Section
- Upload the
infoblox_ipam.plugin.rb
file located in this repository
The Plugin has been packaged as plugins/rs_infoblox_ipam
. To use this plugin you must import this plugin into a CAT.
import "plugins/rs_infoblox_ipam"
For more information on using packages, please refer to the RightScale online documentation. Importing a Package
- record:host
parameter "param_hostname" do
label "Host Name"
type "string"
end
parameter "param_domain" do
label "Host Domain"
type "string"
end
parameter "param_cidr_block" do
label "Network CIDR to Use"
type "string"
end
# Creates a host record with the next available IP address.
resource "host_record", type: "rs_infoblox_ipam.record_host" do
name join([$param_hostname,".",$param_domain])
ipv4addrs [{ ipv4addr:join(["func:nextavailableip:",$param_cidr_block]) }]
end
Field Name | Required? | Field Type | Default Value | Description |
---|---|---|---|---|
name | yes | string | empty | The host FQDN to which the IP is being assigned. Must contain the zone name (e.g. example.com) that the infoblox service account supports. |
ipv4addrs | no(yes) | array of hashes | empty | Must declare an ipv4addrs or an ipv6addrs. This field is an array of hashes declaring the address to use. This string can be used to get the next available IP: [{ "ipv4addr":"func:nextavailableip:10.1.124.0/24" }]. To get a specific IP use this: [{ "ipv4addr":"10.1.124.53" }] |
ipv6addrs | no | array of hashes | empty | Must declare at least an ipv4addrs or an ipv6addrs. This field is constructed the same as ipv4addrs but with "ipv6addrs" in it. |
aliases | no | array of strings | empty | This is a list of aliases for the host. The aliases must be in FQDN format. This value can be in unicode format. |
allow_telnet | no | boolean | false | This field controls whether the credential is used for both the Telnet and SSH credentials. If set to False, the credential is used only for SSH. |
comment | no | string | empty | Comment for the record; maximum 256 characters. |
configure_for_dns | no | boolean | true | When configure_for_dns is false, the host does not have parent zone information. |
device_description | no | string | empty | The description of the device. |
device_location | no | string | empty | The location of the device. |
device_type | no | string | empty | The type of the device. |
device_vendor | no | string | empty | The vendor of the device. |
disable | no | boolean | false | Determines if the record is disabled or not. False means that the record is enabled. |
disable_discovery | no | false | Determines if the discovery for the record is disabled or not. False means that the discovery is enabled. | |
dns_aliases | no | array of strings | empty | The list of aliases for the host in punycode format. The name is a default dns name. |
use_ttl | no | boolean | false | Use flag for ttl parameter. If not used, default ttl is used for records. |
ttl | no | number | empty | The Time To Live (TTL) value for record. A 32-bit unsigned integer that represents the duration, in seconds, for which the record is valid (cached). Zero indicates that the record should not be cached. |
Action | API Implementation | Support Level |
---|---|---|
create | https://ipam.illinois.edu/wapidoc/objects/record.host.html | supported |
destroy | https://ipam.illinois.edu/wapidoc/objects/record.host.html | supported |
show | https://ipam.illinois.edu/wapidoc/objects/record.host.html | supported |
list_by_name | https://ipam.illinois.edu/wapidoc/objects/record.host.html#name | supported |
search | https://ipam.illinois.edu/wapidoc/objects/record.host.html#fields-list | supported |
- "_ref" - Infoblox host:record reference
- "name" - host name
- "ipv4addr" - host IPv4 address (if configured)
- "ipv6addr" - host IPv6 address (if configured)
NONE
See test_infoblox_ipam.cat.rb for an example declaration and use of the list_by_name and search actions.
- The outputs only support single IP address assignments.
- Some of the more esoteric inputs supported by the API are not supported by the plugin. For example the credentials-oriented fields such as "cli_credentials" are not supported.
The Infoblox IPAM Plugin source code is subject to the MIT license, see the LICENSE file.