Ir para o conteúdo principal

Aviso de Descontinuação O Equinix Metal alcance ao fim de sua vida útil em 30 de junho de 2026 Todas as fontes de dados Metal serão removidas na versão 5.0.0 deste provedor. Use a versão 4.x deste provedor para continuar utilizando-o até o encerramento das atividades. Consulte https://docs.equinix.com/metal/ para obter mais informações.

planos_de_metal_equinix

Fornece uma fonte de dados de planos Equinix Metal. Isso pode ser usado para encontrar planos que atendam a critérios de filtro.

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

Ignorando alterações nos planos/metrô

Ao criar um novo plano de execução, preserve o plano de dispositivos implantados, as instalações e a rede metropolitana.

Conforme descrito em data-resource-behavior, o Terraform lê os recursos de dados durante a fase de planejamento, tanto nos comandos terraform plan quanto terraform apply. Se a saída da fonte de dados for diferente do estado anterior, serão propostas alterações nos recursos onde houver referência aos seus atributos.

Para equinix_metal_plans, pode acontecer que um plano de dispositivo não esteja mais disponível em uma área metropolitana porque não há estoque no momento ou você estava usando um plano de servidor legado e, portanto, a lista de planos retornada que corresponde aos seus critérios de busca será diferente da última plan/apply. Portanto, se um recurso como um equinix_metal_device usar a saída desta fonte de dados para selecionar um plano de dispositivo ou área metropolitana, o plano do Terraform informará que o equinix_metal_device precisa ser recriado.

Para evitar isso, você pode aproveitar o recurso Terraform lifecycle ignore_changes conforme mostrado no exemplo abaixo.

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

Se o seu caso de uso exigir alterações dinâmicas em um plano de dispositivo ou rede metropolitana, você pode definir o ciclo de vida com uma condição.

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

Referência do argumento

Os seguintes argumentos são suportados:

  • sort - (Opcional) Um ou mais pares de atributo/direção para ordenar os resultados. Se forem fornecidas várias ordenações, elas serão aplicadas na pedido.
    • attribute - (Obrigatório) O atributo usado para classificar os resultados. Os atributos de classificação diferenciam maiúsculas de minúsculas.
    • direction - (Opcional) Ordena os resultados em pedido crescente ou decrescente. As strings são ordenadas em pedido alfabética. Uma das opções: asc, desc
  • filter - (Opcional) Um ou mais pares atributo/valor para filtrar
    • attribute - (Obrigatório) O atributo usado para filtrar. Os atributos de filtro diferenciam maiúsculas de minúsculas.
    • values - (Obrigatório) Os valores do filtro. Os valores do filtro diferenciam maiúsculas de minúsculas. Se você especificar vários valores para um filtro, os valores serão unidos por um operador OR por padrão, e a solicitar retornará todos os resultados que corresponderem a qualquer um dos valores especificados.
    • match_by - (Opcional) O tipo de comparação a ser aplicada. Um dos seguintes: in, re, substring, less_than, less_than_or_equal, greater_than, greater_than_or_equal. O padrão é in.
    • all - (Opcional) Se definido como verdadeiro, os valores são unidos com um operador AND e a solicitação retorna apenas os resultados que correspondem a todos os valores especificados. O padrão é false.

Todos os campos no bloco plans definido abaixo podem ser usados ​​como atributo para os blocos sort e filter.

Referência de atributos

Além de todos os argumentos acima, os seguintes atributos são exportados:

  • plans
    • id - ID do plano
    • name - nome do plano
    • slug- slug do plano
    • description - descrição do plano
    • line - linha plana, por exemplo, baremetal
    • legacy - indicador que mostra se é um plano legado
    • class- classe de plano
    • pricing_hour - preço por hora do plano
    • Preço mensal do plano pricing_month
    • deployment_types - lista de tipos de implantação, por exemplo, sob demanda, mercado à vista
    • available_in- (Obsoleto) lista de instalações onde o plano está disponível
    • available_in_metros - lista de áreas metropolitanas onde o plano está disponível
Esta página foi útil?