Ir al contenido principal

~> Deprecation Notice Equinix Metal llegará al final de su vida útil en 30 de junio de 2026. Todas las fuentes de datos Metal se eliminarán en la versión 5.0.0 de este proveedor. Utilice la versión 4.x de este proveedor para seguir utilizándolo hasta el final de su vida útil. Consulte https://docs.equinix.com/metal/ para obtener más información.

equinix_planos_metal

Proporciona una fuente de datos de planes Equinix Metal. Puede utilizarse para buscar planes que cumplan un criterio de filtrado.

Ejemplo de uso

# 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
}

Ignorar los cambios de planes/Metro

Conserve el plan de dispositivo, la instalación y el metro desplegados al crear un nuevo plan de ejecución.

Como se describe en data-resource-behavior, terraform lee los recursos de datos durante la fase de planificación tanto en el comando terraform plan como en el comando terraform apply. Si la salida de la fuente de datos es diferente al estado anterior, propondrá cambios en los recursos donde haya una referencia a sus atributos.

Para equinix_metal_plans, puede ocurrir que un plan de dispositivo ya no esté disponible en un metro porque no hay existencias en ese momento o porque estaba utilizando un plan de servidor heredado, y por lo tanto la lista devuelta de planes que coinciden con sus criterios de búsqueda será diferente a la del último plan/apply. Por lo tanto, si un recurso como un equinix_metal_device utiliza la salida de esta fuente de datos para seleccionar un plan de dispositivo o metro, el plan Terraform informará de que el equinix_metal_device necesita volver a crearse.

Para evitarlo, puede aprovechar la función Terraform lifecycle ignore_changes como se muestra en el siguiente ejemplo.

# 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 su caso de uso requiere cambios dinámicos de un plan de dispositivo o metro puede definir el ciclo de vida con una condición.

# 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,
] : []
}
}

Argumento de referencia

Se admiten los siguientes argumentos:

  • sort - (Opcional) Uno o más pares atributo/dirección sobre los que ordenar los resultados. Si se proporcionan varias ordenaciones, se aplicarán en orden
    • attribute - (Obligatorio) El atributo utilizado para ordenar los resultados. Los atributos de ordenación distinguen entre mayúsculas y minúsculas
    • direction - (Opcional) Ordenar los resultados en orden ascendente o descendente. Las cadenas se ordenan por orden alfabético. Uno de: asc, desc
  • filter - (Opcional) Uno o más pares atributo/valor para filtrar a partir de
    • attribute - (Obligatorio) El atributo utilizado para filtrar. Los atributos de filtrado distinguen entre mayúsculas y minúsculas
    • values - (Obligatorio) Los valores del filtro. Los valores del filtro distinguen entre mayúsculas y minúsculas. Si especifica varios valores para un filtro, los valores se unen con un OR por defecto, y la solicitud devuelve todos los resultados que coincidan con cualquiera de los valores especificados
    • match_by - (Opcional) El tipo de comparación a aplicar. Uno de los siguientes: in , re, substring, less_than, less_than_or_equal, greater_than, greater_than_or_equal. Por defecto es in.
    • all - (Opcional) Si se establece en true, los valores se unen con un AND, y las peticiones devuelven sólo los resultados que coinciden con todos los valores especificados. Por defecto es false.

Todos los campos del bloque plans definido a continuación pueden utilizarse como atributo tanto para el bloque sort como para el bloque filter.

Atributos Referencia

Además de todos los argumentos anteriores, se exportan los siguientes atributos:

  • plans
    • id - id del plan
    • name - nombre del plan
    • slug- plan slug
    • description- descripción del plan
    • line- línea de plano, por ejemplo, baremetal
    • legacy- bandera que muestra si se trata de un plan heredado
    • class- clase de plan
    • pricing_hour- plan precio hora
    • pricing_month- plan precio mensual
    • deployment_types- lista de tipos de despliegue, por ejemplo, on_demand, spot_market
    • available_in- (Deprecated) lista de instalaciones donde está disponible el plan
    • available_in_metros- lista de metros donde está disponible el plan
¿Fue útil esta página?