Forum Discussion

mikecalabrese's avatar
26 days ago
Solved

Issues deploying Equinix Connections

I have managed to use several terraform modules without problem. I have used the palo alto cloudgenix vm modules, palo alto firewalls modules, device link modules, and fabric cloud router module. All work okay on the lastest version of equinix/equinix. 

However as I dive into other connections I get a lot version issues. For example. 

Leveraging the cloud-router-port connection. 
https://registry.terraform.io/modules/equinix/fabric/equinix/latest/examples/cloud-router-2-port-connection

This would be used to connect the cloud router to the pa firewall mgmt interface. Documentation covers the following version. 

required_providers {

equinix = {

source = "equinix/equinix"

version = ">= 2.9.0" } } }

 

But code doesnt work without this version

terraform {

  required_providers {

    equinix = {

      source  = "equinix/equinix"

      version = "~> 1.26.0"

    }

  }

}

When using new versions error occurs. 

Failure. Ive redone this several times in my code base.

 

 

 

 

ephemeral.aws_secretsmanager_secret_version.equinix_iac_credentials: Opening...

ephemeral.aws_secretsmanager_secret_version.equinix_iac_credentials: Opening complete after 0s

module.equinix_deployment.module.fw-mgmt-to-fcr-connection-ch-1a.equinix_fabric_connection.this: Creating...

│ Error: 400 Bad Request Code: EQ-3142558, Message: Json syntax error, please check request body, Details: Unknown json property : aSide.accessPoint.router.package.code. Unexpected value ''

│   with module.equinix_deployment.module.fw-mgmt-to-fcr-connection-ch-1a.equinix_fabric_connection.this,

│   on ..\..\modules\cloud-router-2-port-connection\main.tf line 1, in resource "equinix_fabric_connection" "this":

│    1: resource "equinix_fabric_connection" "this" {

 

I can get past this error and deploy the connection with an older version but then run into version issues when attempting to leverage the virtual-device-2-eia-connection

https://registry.terraform.io/modules/equinix/fabric/equinix/latest/examples/virtual-device-2-eia-connection

here the primary problem is that on older versions. there is no resource virtual-device-connection. only fabric-device-connection. 

One thought is to completely separate the fabric cloud router to port module

 

Here is the original cloud router to port module

main.tf

resource "equinix_fabric_connection" "this" {

  name      = var.connection_name

  type      = var.connection_type

  bandwidth = var.bandwidth

 

  notifications {

    type   = var.notifications_type

    emails = var.notifications_emails

  }

 

  a_side {

    access_point {

      type = "CLOUD_ROUTER"

      router {

        uuid = var.aside_fcr_uuid

      }

    }

  }

 

  z_side {

    access_point {

      type = var.zside_ap_type

 

      virtual_device {

        type = var.zside_vd_type

        uuid = var.zside_vd_uuid

      }

 

      interface {

        type = var.zside_interface_type

        id   = var.zside_interface_id

      }

 

      location {

        metro_code = var.zside_location

      }

    }

  }

 

  order {

    purchase_order_number = var.purchase_order_number

  }

}

variables

variable "connection_name" {

  type        = string

  description = "Name of the Fabric connection"

}

 

variable "connection_type" {

  type        = string

  description = "Type of the Fabric connection (e.g., IP_VC)"

}

 

variable "bandwidth" {

  type        = number

  description = "Connection bandwidth in Mbps"

}

 

variable "notifications_type" {

  type        = string

  default     = "ALL"

  description = "Notification type"

}

 

variable "notifications_emails" {

  type        = list(string)

  description = "Emails for notifications"

}

 

variable "purchase_order_number" {

  type        = string

  default     = ""

}

 

variable "aside_fcr_uuid" {

  type        = string

  description = "UUID of the FCR device"

}

 

variable "zside_ap_type" {

  type        = string

  default     = "VD"

}

 

variable "zside_vd_type" {

  type        = string

  default     = "EDGE"

}

 

variable "zside_vd_uuid" {

  type        = string

}

 

variable "zside_interface_type" {

  type        = string

  default     = "NETWORK"

}

 

variable "zside_interface_id" {

  type        = number

}

 

variable "zside_location" {

  type        = string

}

versions.tf

terraform {

  required_providers {

    equinix = {

      source  = "equinix/equinix"

      version = "~> 1.26.0"

    }

  }

}

module 

 

module "fw-mgmt-to-fcr-connection-ch-1a" { #FCR Router to FW Management Interface Connection

  source                   = "../../modules/cloud-router-2-port-connection"

  connection_name          = "fcr-2-fw-mgmt-ch"

  connection_type          = "IP_VC"

  bandwidth                = 50

  notifications_type       = "ALL"

  notifications_emails     = var.notifications

  purchase_order_number    = "mgmt-connection"

  #aside Fabric Cloud Router

  aside_fcr_uuid           = module.fcr_ch.id

  #zside Palo aAlto Firewall

  zside_ap_type            = "VD" #Virtual Device

  zside_vd_type            = "EDGE"

  zside_vd_uuid            = module.pa_vm_ch.id

  zside_interface_type     = "NETWORK"

  zside_interface_id       = 1 # Palo Alto Firewall Management Port

  zside_location           = "CH" #metro code

}



5 Replies

  • TimHogarty's avatar
    TimHogarty
    Equinix Employee

    Hi mikecalabrese​ , my RCA was off. This was an upstream issue in our client interface generation. A previous version of Terraform (<=v03.5.0) will provide a temporary solution to unblock you until I can release the next version. Only v3.6.0 should continue to give you any issues.

    Still working on releasing the bug fix.

  • TimHogarty's avatar
    TimHogarty
    Equinix Employee

    Hi mikecalabrese​ , thanks for sharing the details around your challenge with the modules. I'm taking a look into this to see if I can recreate the issue. Once I've got a handle on this I'll reply with further guidance.

      • TimHogarty's avatar
        TimHogarty
        Equinix Employee

        Hi mikecalabrese​ , I've finished the RCA on this. There's improved input validation in the last global release of the API layer and the Terraform Provider needs a bug fix to account for it.

        This will require a version update from the Terraform Provider once I have that fix completed. I'll reply here with the version as soon as it's ready.

        Thank you for your patience while we get this resolved!