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 à filtrerattribute- (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 estin.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 estfalse.
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:
plansid- identifiant du planname- nom du planslug- slug du plandescription- description du planline- ligne de plan, par exemple métal nulegacy- Indicateur indiquant s'il s'agit d'un ancien forfaitclass- classe de planpricing_hour- tarif horaire du forfaitpricing_month- Prix mensuel du forfaitdeployment_types- Liste des types de déploiement, par exemple sur demande, sur le marché spotavailable_in- (Obsolète) Liste des établissements où le plan est disponibleavailable_in_metros- Liste des métros où le plan est disponible