Aviso de Descontinuação O Equinix Metal alcance ao fim de sua vida útil em 30 de junho de 2026 Todos os recursos do Metal serão removidos na versão 5.0.0 deste provedor. Use a versão 4.x deste provedor para continuar utilizando-o após o encerramento das atividades. Consulte https://docs.equinix.com/metal/ para obter mais informações.
equinix_metal_reserved_ip_block (Recurso)
Fornece um recurso para criar e gerenciar blocos de endereços IP reservados em um projeto.
Quando um usuário provisiona o primeiro dispositivo em uma rede metropolitana, a API Metal da Equinix aloca automaticamente blocos IPv6/56 e IPv4/25 privados. O novo dispositivo recebe então endereços IPv6 e IPv4 privados desses blocos. Ele também recebe um endereço IPv4/31 público. Todos os novos dispositivos no projeto e na rede metropolitana receberão automaticamente endereços IPv6 e IPv4 privados desses blocos pré-alocados. Os blocos IPv6 e IPv4 privados não podem ser criados, apenas importados. Com este recurso, é possível criar blocos IPv4 públicos ou blocos IPv4 globais.
Os blocos públicos são alocados em uma rede metropolitana. Os endereços de blocos públicos só podem ser atribuídos a dispositivos na mesma rede metropolitana. Os blocos públicos podem ter máscaras de /24 (256 endereços) a /32 (1 endereço). Se você criar um bloco público com este recurso, deverá preencher o argumento da rede metropolitana.
Os endereços de blocos globais podem ser atribuídos a qualquer rede metropolitana. Os blocos globais podem ter máscaras de /30 (4 endereços) a /32 (1 endereço). Se você criar um bloco global com este recurso, deverá especificar type = "global_ipv4" e omitir o argumento metro.
Uma vez que o bloco IP é alocado ou importado, um endereço dele pode ser atribuído ao dispositivo com o recurso equinix_metal_ip_attachment.
Consulte a [documentação de Roteamento e Encaminhamento Virtual para obter detalhes do produto e material de referência da API .
Exemplo de uso
Alocar blocos de IP reservados:
# Allocate /31 block of max 2 public IPv4 addresses in Silicon Valley (sv) metro for myproject
resource "equinix_metal_reserved_ip_block" "two_elastic_addresses" {
project_id = local.project_id
metro = "sv"
quantity = 2
}
# Allocate 1 floating IP in Silicon Valley (sv) metro
resource "equinix_metal_reserved_ip_block" "test" {
project_id = local.project_id
type = "public_ipv4"
metro = "sv"
quantity = 1
}
# Allocate 1 global floating IP, which can be assigned to device in any metro
resource "equinix_metal_reserved_ip_block" "test" {
project_id = local.project_id
type = "global_ipv4"
quantity = 1
}
Alocar um bloco e executar um dispositivo com IPv4 público a partir do bloco.
# Allocate /31 block of max 2 public IPv4 addresses in Silicon Valley (sv) metro
resource "equinix_metal_reserved_ip_block" "example" {
project_id = local.project_id
metro = "sv"
quantity = 2
}
# Run a device with both public IPv4 from the block assigned
resource "equinix_metal_device" "nodes" {
project_id = local.project_id
metro = "sv"
plan = "c3.small.x86"
operating_system = "ubuntu_24_04"
hostname = "test"
billing_cycle = "hourly"
ip_address {
type = "public_ipv4"
cidr = 31
reservation_ids = [equinix_metal_reserved_ip_block.example.id]
}
ip_address {
type = "private_ipv4"
}
}
Referência do argumento
Os seguintes argumentos são suportados:
project_id- (Obrigatório) O ID do projeto Metal onde alocar o bloco de endereço.quantity- (Opcional) O número de endereços/32alocados, uma energia de 2. Obrigatório quandotypenão évrf.type- (Opcional) Um deglobal_ipv4,public_ipv4ouvrf. O padrão épublic_ipv4para compatibilidade com versões anteriores.facility- (Obsoleto) Facility onde alocar o bloco de endereços IP públicos, só faz sentido se o tipo forpublic_ipv4e deve estar vazio se o tipo forglobal_ipv4. Entra em conflito commetro. Use área metropolitana em vez disso; leia o guia de migração de facility para área metropolitanametro- (Opcional) área metropolitana onde alocar o bloco de endereço IP público, só faz sentido se o tipo forpublic_ipv4e deve estar vazio se o tipo forglobal_ipv4. Entra em conflito comfacility.description- (Opcional) Descrição arbitrária.tags- (Opcional) Lista de tags em formato de string.vrf_id- (Opcional) Válido e obrigatório somente quandotypeforvrf. ID VRF para reservas do tipo=vrf.wait_for_state- (Opcional) Aguarda que o bloco de reserva de IP alcance o estado desejado na criação do recurso. Um dos seguintes:pending,created. O estadocreatedé o padrão e recomendado se os endereços forem necessários na configuração. Um erro será retornado se ocorrer um tempo limite ou se o estadodeniedfor atingido.custom_data- (Opcional) Dados personalizados são um objeto arbitrário (enviado no Terraform como JSON serializado) para atribuir à reserva de IP. Isso pode ser útil para IPAM autogerenciado. O objeto deve ser um JSON válido.network- (Opcional) Válido apenas como argumento e necessário quandotypeévrf. Um endereço de rede não reservado de umip_rangeexistente no VRF especificado.cidr- (Opcional) Válido apenas como argumento e obrigatório quandotypeforvrf. O tamanho da rede a ser reservada de um intervalo de IPs VRF existente.cidrsó pode ser especificado comvrf_id. O intervalo é de 22 a 31. Circuitos virtuais requerem 30 a 31. Outros recursos VRF devem usar um CIDR no intervalo de 22 a 29.
Referência de atributos
Além de todos os argumentos acima, os seguintes atributos são exportados:
id- O ID único do bloco.cidr_notation- Endereço e máscara na notação CIDR, por exemplo,147.229.15.30/31.network- Parte do endereço IP de rede da especificação do bloco.netmask- Máscara em notação decimal, por exemplo,255.255.255.0.cidr- comprimento do prefixo CIDR do bloco como um número inteiro.address_family- Família de endereços como inteiro. Um de4ou6.public- Indicador booleano que indica se os endereços de um bloco são públicos.global- Indicador booleano que indica se os endereços de um bloco são globais (ou seja, podem ser atribuídos em qualquer área metropolitana).vrf_id- ID VRF do bloco quando type=vrf
-> NOTA: Uma referência idempotente a um primeiro endereço /32 de um bloco reservado pode parecer join("/", [cidrhost(metal_reserved_ip_block.myblock.cidr_notation,0), "32"]).
Importar
Este recurso pode ser importado usando um ID de reserva de IP existente:
terraform import equinix_metal_reserved_ip_block {existing_ip_reservation_id}