Skip to main content

Migration de Fabric v3 (ecx) vers Fabric v4 (fabric)

En décembre 2023, les API de la Fabric v3 ont été dépréciées et elles atteindront leur fin de vie en juin 2024. Les ressources Terraform ecx sont construites sur ces API et atteindront également la fin de vie en juin 2024. Si vous les utilisez, ce guide vous aidera à migrer vers les fabric Terraform qui sont construites avec les API de la Fabric v4.

Les ressources de la Fabric v3 sont les sources de données et les ressources suivantes :

Sources des données :

  • data "equinix_ecx_l2_sellerprofile"
  • data "equinix_ecx_l2_sellerprofiles"
  • data "equinix_ecx_port"

Ressources :

  • resource "equinix_ecx_l2_connection"
  • resource "equinix_ecx_l2_connection_accepter"
  • resource "equinix_ecx_l2_service_profile"

Ils sont remplacés par la famille de ressources avec le préfixe equinix_fabric_.

Mappage de l'ECX à la Fabric

Toutes les ressources ECX sont limitées aux connexions de niveau 2. Cela est dû au nombre limité de possibilités qui existaient à l'époque de la Fabric v3. Les API de la Fabric v4 permettent d'établir des connexions de couche 2 et de couche 3.

Cela signifie que les ressources Fabric sont plus robustes et qu'il n'y a donc pas de correspondance exacte, mais plutôt que les types de connexion ECX sont désormais un sous-ensemble d'une ressource Fabric.

Mappages de sources de données :

  • Utilisez data "equinix_fabric_service_profile" au lieu de data "equinix_ecx_sellerprofile"
  • Utilisez data "equinix_fabric_service_profiles" au lieu de data "equinix_ecx_sellerprofiles"
  • Utilisez data "equinix_fabric_port" au lieu de data "equinix_ecx_port"

Les changements de modèle seraient :

Profil du vendeur :

data "equinix_ecx_l2_sellerprofile" "aws" {
name = "AWS Direct Connect"
}

output "id" {
value = data.equinix_ecx_l2_sellerprofile.aws.id
}

pour

data "equinix_fabric_service_profile" "aws" {
uuid = "<uuid_of_aws_service_profile>"
}

output "id" {
value = data.equinix_fabric_service_profile.aws.id
}

ou si vous souhaitez toujours effectuer une recherche par nom, vous devez utiliser la source de données equinix_fabric_service_profiles.

data "equinix_fabric_service_profiles" "aws" {
filter {
property = "/name"
operator = "="
values = ["AWS Direct Connect"]
}
}

output "id" {
value = data.equinix_fabric_service_profile.aws.data.0.id
}

Profils des vendeurs :

data "equinix_ecx_l2_sellerprofiles" "aws" {
organization_global_name = "AWS"
}

pour

data "equinix_fabric_service_profiles" "aws" {
filter {
property = "/name"
operator = "="
values = ["AWS"]
}
}

Port :

data "equinix_ecx_port" "tf-pri-dot1q" {
name = "sit-001-CX-NY5-NL-Dot1q-BO-10G-PRI-JP-157"
}

output "id" {
value = data.equinix_ecx_port.tf-pri-dot1q.id
}

pour

data "equinix_fabric_ports" "tf-pri-dot1q" {
filters {
name = "sit-001-CX-NY5-NL-Dot1q-BO-10G-PRI-JP-157"
}
}

output "id" {
value = data.equinix_fabric_ports.tf-pri-dot1q.0.id
}

Mappages de ressources

  • Utilisez resource "equinix_fabric_connection" au lieu de resource "equinix_ecx_l2_connection"
  • resource "equinix_ecx_l2_connection_acceptor est obsolète.
    • Ajoutez votre clé secrète AWS et votre clé d'accès AWS à la propriété additional_info dans resource "equinix_fabric_connection" pour AWS
    • Ou utilisez plutôt la ressource équivalente aws_dx_connection_confirmation dans le fournisseur 'AWS'."
  • Utilisez resource "equinix_fabric_service_profile" au lieu de resource "equinix_ecx_l2_service_profile"

Modifications du modèle

L2 Connection :

resource "equinix_ecx_l2_connection" "port-2-aws" {
name = "tf-aws"
profile_uuid = "<aws_service_profile_uuid>"
speed = 200
speed_unit = "MB"
notifications = ["marry@equinix.com", "john@equinix.com"]
port_uuid = "<port_uuid>"
vlan_stag = 777
vlan_ctag = 1000
seller_region = "us-west-1"
seller_metro_code = "SV"
authorization_key = "<aws_account_id>"
}

pour

resource "equinix_fabric_connection" "port2aws" {
name = "tf-aws"
type = "EVPL_VC" # L2 Connection
notifications {
type = "ALL"
emails = ["marry@equinix.com", "john@equinix.com"]
}
bandwidth = 200 # Speed unit is defaulted to MB
redundancy { priority= "PRIMARY" }
order {
purchase_order_number= "1-323929"
}
a_side {
access_point {
type= "COLO"
port {
uuid = "<port_uuid>"
}
link_protocol {
type = "QINQ"
vlan_s_tag = "777"
vlan_c_tag = "1000"
}
}
}
z_side {
access_point {
type = "SP"
authentication_key = "<aws_account_id>"
seller_region = "us-west-1"
profile {
type = "L2_PROFILE"
uuid = "<aws_service_profile_uuid>"
}
location {
metro_code = "SV"
}
}
}

additional_info = [
{ key = "accessKey", value = "<aws_access_key>" },
{ key = "secretKey", value = "<aws_secret_key>" }
]
}

Profil du service :

resource "equinix_ecx_l2_serviceprofile" "private-profile" {
name = "private-profile"
description = "my private profile"
connection_name_label = "Connection"
bandwidth_threshold_notifications = ["John.Doe@example.com", "Marry.Doe@example.com"]
profile_statuschange_notifications = ["John.Doe@example.com", "Marry.Doe@example.com"]
vc_statuschange_notifications = ["John.Doe@example.com", "Marry.Doe@example.com"]
private = true
private_user_emails = ["John.Doe@example.com", "Marry.Doe@example.com"]
features {
allow_remote_connections = true
test_profile = false
}
port {
uuid = "a867f685-422f-22f7-6de0-320a5c00abdd"
metro_code = "NY"
}
port {
uuid = "a867f685-4231-2317-6de0-320a5c00abdd"
metro_code = "NY"
}
speed_band {
speed = 1000
speed_unit = "MB"
}
speed_band {
speed = 500
speed_unit = "MB"
}
speed_band {
speed = 100
speed_unit = "MB"
}
}

pour

resource "equinix_fabric_service_profile" "private-profile" {
name = "private-profile"
description = "my private profile"
type = "L2_PROFILE" # Need to specify to make it an Layer 2 Profile
visibility = "PRIVATE"
notifications = [
{
emails = ["John.Doe@example.com", "Marry.Doe@example.com"]
type = "BANDWIDTH_ALERT"
},
{
emails = ["John.Doe@example.com", "Marry.Doe@example.com"]
type = "PROFILE_LIFECYCLE"
},
{
emails = ["John.Doe@example.com", "Marry.Doe@example.com"]
type = "CONNECTION_APPROVAL"
}
]
allowed_emails = ["John.Doe@example.com", "Marry.Doe@example.com"]
ports = [
{
uuid = "c791f8cb-5cc9-cc90-8ce0-306a5c00a4ee"
type = "XF_PORT"
},
{
uuid = "a867f685-4231-2317-6de0-320a5c00abdd"
type = "XF_PORT"
}
]

access_point_type_configs {
type = "COLO"
allow_remote_connections = true
connection_label = "Connection"
supported_bandwidths = [ 100, 500, 1000 ]
}
}

Migration de l'état de Terraform

Une fois que nous avons modifié le modèle en conséquence, nous pouvons supprimer les anciennes ressources equinix_ecx_ de l'état Terraform et importer les nouvelles en tant que ressources equinix_fabric_ par leurs UUID.

Dans les commandes terraform state et import, nous utilisons le type et le nom de la ressource, séparés par un point :

terraform state rm equinix_ecx_l2_connection.example
terraform import equinix_fabric_connection.example <resource_uuid>

Après cela, nos modèles devraient être en vérification avec l'état de Terraform et avec les ressources en amont dans Equinix Fabric. Nous pouvons vérifier la migration en exécutant terraform plan, qui devrait montrer que l'infrastructure est à jour.

Cette page vous a-t-elle été utile ?