Skip to main content

Avis de fin de vie Equinix Metal ne sera plus pris en charge le 30 juin 2026 Toutes les sources de données Metal seront supprimées dans la version 5.0.0 de ce fournisseur. Pour continuer à utiliser ce service jusqu'à cette date, veuillez utiliser la version 4.x. Consultez la page https://docs.equinix.com/metal/ pour plus d'informations.

plans métalliques d'Equinix

Fournit une source de données sur les plans Equinix Metal. Celle-ci peut être utilisée pour trouver les plans qui répondent à des critères de filtrage.

Exemple d'utilisation

# Following example will select device plans which are under 2.5$ per hour, are available in metro 'da' (Dallas)
# OR 'sv' (Sillicon Valley) and sort it by the hourly price ascending.
data "equinix_metal_plans" "example" {
sort {
attribute = "pricing_hour"
direction = "asc"
}
filter {
attribute = "pricing_hour"
values = [2.5]
match_by = "less_than"
}
filter {
attribute = "available_in_metros"
values = ["da", "sv"]
}
}

output "plans" {
value = data.equinix_metal_plans.example.plans
}
# Following example will select device plans with class containing string 'large', are available in metro 'da' (Dallas)
# AND 'sv' (Sillicon Valley), are elegible for spot_market deployments.
data "equinix_metal_plans" "example" {
filter {
attribute = "class"
values = ["large"]
match_by = "substring"
}
filter {
attribute = "deployment_types"
values = ["spot_market"]
}
filter {
attribute = "available_in_metros"
values = ["da", "sv"]
all = true
}
}

output "plans" {
value = data.equinix_metal_plans.example.plans
}

Ignorer les modifications apportées aux plans/au métro

Conserver le plan des dispositifs déployés, l'installation et la région métropolitaine lors de la création d'un nouveau plan d'exécution.

Comme décrit dans data-resource-behavior, Terraform lit les ressources de données pendant la phase de planification, autant avec les commandes terraform plan qu'avec terraform apply. Si la sortie de la source de données diffère de l'état précédent, Terraform proposera des modifications aux ressources dont les attributs sont référencés.

Pour equinix_metal_plans, il se peut qu'un forfait de matériel ne soit plus disponible dans une région métropolitaine, soit parce qu'il n'y a plus de stock, soit parce que vous utilisiez un forfait serveur obsolète. Par conséquent, la liste des forfaits correspondant à vos critères de recherche sera différente de la précédente plan/apply. Ainsi, si une ressource telle que equinix_metal_device utilise la sortie de cette source de données pour sélectionner un forfait de matériel ou une zone métropolitaine, le plan Terraform indiquera que equinix_metal_device doit être recréé.

Pour éviter cela, vous pouvez tirer parti de la fonctionnalité Terraform lifecycle ignore_changes comme indiqué dans l'exemple ci-dessous.

# Following example will use equinix_metal_plans to select the cheapest plan available in metro 'sv' (Sillicon Valley)
data "equinix_metal_plans" "example" {
sort {
attribute = "pricing_hour"
direction = "asc"
}
filter {
attribute = "name"
values = ["c3.small.x86", "c3.medium.x86", "m3.large.x86"]
}
filter {
attribute = "available_in_metros"
values = ["sv"]
}
}

# This equinix_metal_device will use the first returned plan and the first metro in which that plan is available
# It will ignore future changes on plan and metro
resource "equinix_metal_device" "example" {
hostname = "example"
plan = data.equinix_metal_plans.example.plans[0].name
metro = data.equinix_metal_plans.example.plans[0].available_in_metros[0]
operating_system = "ubuntu_24_04"
billing_cycle = "hourly"
project_id = var.project_id

lifecycle {
ignore_changes = [
plan,
metro,
]
}
}

Si votre cas d'utilisation nécessite des modifications dynamiques d'un plan d'appareil ou d'une région métropolitaine, vous pouvez définir le cycle de vie avec une condition.

# Following example uses a boolean variable that may eventually be set to you false when you update your equinix_metal_plans filter criteria because you need a device plan with a new feature.
variable "ignore_plans_metros_changes" {
type = bool
description = "If set to true, it will ignore plans or metros changes"
default = false
}

data "equinix_metal_plans" "example" {
// new search criteria
}

resource "equinix_metal_device" "example" {
// required device arguments

lifecycle {
ignore_changes = var.ignore_plans_metros_changes ? [
plan,
metro,
] : []
}
}

Référence de l'argument

Les arguments suivants sont étayés:

  • sort - (Optionnel) Une ou plusieurs paires attribut/direction pour trier les résultats. Si plusieurs tris sont fournis, ils seront appliqués dans l'ordre.
    • attribute - (Obligatoire) L'attribut utilisé pour trier les résultats. Les attributs de tri sont sensibles à la casse.
    • direction - (Facultatif) Trier les résultats par ordre croissant ou décroissant. Les chaînes sont triées par ordre alphabétique. Valeurs possibles: asc, desc
  • filter - (Optionnel) Une ou plusieurs paires attribut/valeur à filtrer
    • attribute - (Obligatoire) L'attribut utilisé pour filtrer. Les attributs du filtre sont sensibles à la casse.
    • values - (Obligatoire) Les valeurs du filtre. Les valeurs du filtre sont sensibles à la casse. Si vous spécifiez plusieurs valeurs pour un filtre, elles sont combinées par défaut avec un OU, et la requête retourne tous les résultats correspondant à au moins une des valeurs spécifiées.
    • match_by - (Optionnel) Le type de comparaison à appliquer. L'un des suivants: in, re, substring, less_than, less_than_or_equal, greater_than, greater_than_or_equal. La valeur par défaut est in.
    • all - (Facultatif) Si la valeur est « vraie », les valeurs sont combinées par un ET logique, et la requête ne retourne que les résultats correspondant à toutes les valeurs spécifiées. La valeur par défaut est false.

Tous les champs du bloc plans défini ci-dessous peuvent être utilisés comme attribut pour les blocs sort et filter.

Référence des attributs

En plus des arguments ci-dessus, les attributs suivants sont exportés:

  • plans
    • id - identifiant du plan
    • name - nom du plan
    • slug- slug du plan
    • description - description du plan
    • line - ligne de plan, par exemple métal nu
    • legacy - Indicateur indiquant s'il s'agit d'un ancien forfait
    • class - classe de plan
    • pricing_hour - tarif horaire du forfait
    • pricing_month - Prix mensuel du forfait
    • deployment_types - Liste des types de déploiement, par exemple sur demande, sur le marché spot
    • available_in- (Obsolète) Liste des établissements où le plan est disponible
    • available_in_metros - Liste des métros où le plan est disponible
Cette page vous a-t-elle été utile ?