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 filtrarattribute- (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:
plansid- ID do planoname- nome do planoslug- slug do planodescription- descrição do planoline- linha plana, por exemplo, baremetallegacy- indicador que mostra se é um plano legadoclass- classe de planopricing_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 à vistaavailable_in- (Obsoleto) lista de instalações onde o plano está disponívelavailable_in_metros- lista de áreas metropolitanas onde o plano está disponível