IPAM

Create the IPAM Resource in Terraform to reserve and release IP Addresses

To learn more about this OneFuse module, refer to IPAM.

Prerequisites

  1. Configure the OneFuse Provider
  2. Review an overview on OneFuse Modules with Terraform

Steps

  1. Create variables.tf file
  2. Create main.tf file
  3. Run terraform commands to reserve an IP Address:
    1. terraform init
    2. terraform plan
    3. terraform apply
  4. Run terraform command to release the IP Address:
    • terraform destroy

Create variables.tf

Add the following in the variables.tf file. Update the values as needed.

// SAMPLE VARIABLES.TF FILE CONFIGURATIONS

variable "onefuse_scheme" {
  type    = string
  default = "https"
}

variable "onefuse_address" {
  type = string
}

variable "onefuse_port" {
  type    = string
  default = "443"
}

variable "onefuse_user" {
  type    = string
  default = "admin"
}

variable "onefuse_password" {
  type    = string
  default = "admin"
}

variable "onefuse_verify_ssl" {
  type    = bool
  default = false
}

variable "workspace_url" {
  type    = string
  default = ""              // Default
}

variable "template_properties" {
  type = map
  default = {
    "Environment" = "d"     //p for production or d for development
    "Location"    = "w"     //e for East or w for West
    "Application" = "wp"    //wp for wordpress or iis for IIS
    "OS"          = "l"     //l for Linux or w for Windows
  }
}

Create main.tf for IPAM resource

Add the following in the main.tf file. Update the values as needed.

Parameter references

The following defines the function of each IPAM-specific parameter.

Parameter Name Required? Notes
policy_id Required OneFuse Module Policy ID (integer).
workspace_url Optional OneFuse Workspace URL path. Use "" for the default workspace.
template_properties Optional Additional properties that are referenced within the Policy.

IPAM-specific parameters:

Parameter Name Required? Notes
hostname Required Hostname for the IP Address.

Sample main.tf

// Terraform OneFuse Provider
terraform {
  required_providers {
    onefuse = {
      source  = "CloudBoltSoftware/onefuse"
      version = "> 1.40.0"
   }
  }
  required_version = "> 0.13"
}

// Inititalize OneFuse Provider
provider "onefuse" {
  scheme     = var.onefuse_scheme
  address    = var.onefuse_address
  port       = var.onefuse_port
  user       = var.onefuse_user
  password   = var.onefuse_password
  verify_ssl = var.onefuse_verify_ssl
}

// Data Source for IPAM Policy - lookup Policy ID by Policy Name
data "onefuse_ipam_policy" "ipam_policy" {
  name = "my_policy_name"  // Replace with Policy Name
}

// OneFuse Resource for IP Address Record
resource "onefuse_ipam_record" "my_ipam_record" {
  policy_id           = data.onefuse_ipam_policy.ipam_policy.id    // Refers to Data Source to get Policy ID
  workspace_url       = ""
  template_properties = var.template_properties
  hostname            = "my_name"
}

// Outputs for Resource
output "ip_address" {
  value = onefuse_ipam_record.my_ip_record.ip_address
}

output "netmask" {
  value = onefuse_ipam_record.my_ip_record.netmask
}

output "gateway" {
  value = onefuse_ipam_record.my_ip_record.gateway
}

output "network" {
  value = onefuse_ipam_record.my_ip_record.network
}

output "subnet" {
  value = onefuse_ipam_record.my_ip_record.subnet
}

output "primary_dns" {
  value = onefuse_ipam_record.my_ip_record.primary_dns
}

output "secondary_dns" {
  value = onefuse_ipam_record.my_ip_record.secondary_dns
}

OneFuse module: IPAM import

Create main.tf for IPAM resource import

Add the following in the main.tf file.

The following parameter is required to import an IPAM object.

Parameter references:

Parameter Name Required? Notes
policy_id Required OneFuse Module Policy ID (integer).

Sample main.tf

// Terraform OneFuse Provider
terraform {
  required_providers {
    onefuse = {
      source  = "CloudBoltSoftware/onefuse"
      version = ">= 1.50.2"
   }
  }
  required_version = ">= 0.13"
}


// Inititalize OneFuse Provider
// Create the separate variables.tf file or hard code the values.
provider "onefuse" {
  scheme     = var.onefuse_scheme
  address    = var.onefuse_address
  port       = var.onefuse_port
  user       = var.onefuse_user
  password   = var.onefuse_password
  verify_ssl = var.onefuse_verify_ssl
}

resource "onefuse_ipam_record" "my_ip_record" {
  policy_id = 1
}

Run the following command to import the OneFuse IPAM resource:

terraform import <resource_type>.<resource_name> <resource_id>
terraform import onefuse_ipam_record.my_ip_record 2