~> Deprecation Notice Equinix Metal llegará al final de su vida útil en 30 de junio de 2026. Todos los recursos 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_metal_reserved_ip_block (Recurso)
Proporciona un recurso para crear y gestionar bloques de direcciones IP reservadas en un proyecto.
Cuando un usuario aprovisiona su primer dispositivo en un metro, la API de Equinix Metal asigna automáticamente bloques IPv6/56 e IPv4/25 privados. El nuevo dispositivo obtiene entonces direcciones IPv6 e IPv4 privadas de esos bloques. También obtiene una dirección IPv4/31 pública. Cada nuevo dispositivo del proyecto y del metro obtendrá automáticamente direcciones IPv6 e IPv4 privadas de estos bloques preasignados. Los bloques IPv6 e IPv4 privados no pueden crearse, sólo importarse. Con este recurso, es posible crear bloques IPv4 públicos o bloques IPv4 globales.
Los bloques públicos se asignan en un metro. Las direcciones de los bloques públicos sólo pueden asignarse a dispositivos del metro. Los bloques públicos pueden tener máscaras de /24 (256 direcciones) a /32 (1 dirección). Si crea un bloque público con este recurso, debe rellenar el argumento metro.
Las direcciones de los bloques globales pueden asignarse en cualquier metro. Los bloques globales pueden tener máscaras desde /30 (4 direcciones), hasta /32 (1 dirección). Si crea un bloque global con este recurso, debe especificar type = "global_ipv4" y debe omitir el argumento metro.
Una vez asignado o importado el bloque IP, se puede asignar una dirección del mismo al dispositivo con el recurso equinix_metal_ip_attachment.
Consulte la [Documentación sobre enrutamiento y reenvío virtuales para conocer los detalles del producto y el material de referencia de la API.
Ejemplo de uso
Asigne bloques 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
}
Asignar un bloque y ejecutar un dispositivo con IPv4 pública desde el bloque
# 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"
}
}
Argumento de referencia
Se admiten los siguientes argumentos:
project_id- (Obligatorio) El ID del proyecto Metal donde asignar el bloque de direcciones.quantity- (Opcional) El número de direcciones/32asignadas, una potencia de 2. Se requiere cuandotypeno esvrf.type- (Opcional) Uno deglobal_ipv4,public_ipv4ovrf. Por defecto espublic_ipv4por compatibilidad con versiones anteriores.facility- (Deprecated) Facilidad donde asignar el bloque de direcciones IP públicas, sólo tiene sentido si el tipo espublic_ipv4y debe estar vacío si el tipo esglobal_ipv4. Entra en conflicto conmetro. Utilice metro en su lugar; lea la [guía de migración de facility a metrometro- (Opcional) Metro donde asignar el bloque de direcciones IP públicas, sólo tiene sentido si el tipo espublic_ipv4y debe estar vacío si el tipo esglobal_ipv4. Entra en conflicto confacility.description- (Opcional) Descripción arbitraria.tags- (Opcional) Lista de cadenas de etiquetas.vrf_id- (Opcional) Sólo válido y obligatorio cuandotypeesvrf. ID VRF para reservas type=vrf.wait_for_state- (Opcional) Esperar a que el bloque de reserva IP alcance un estado deseado en la creación de recursos. Uno de:pending,created. El estadocreatedes el predeterminado y el recomendado si las direcciones son necesarias dentro de la configuración. Se devolverá un error si se encuentra un tiempo de espera o el estadodenied.custom_data- (Opcional) Los datos personalizados son un objeto arbitrario (enviado en Terraform como JSON serializado) para asignar a la Reserva IP. Esto puede ser útil para IPAM autogestionados. El objeto debe ser JSON válido.network- (Opcional) Sólo válido como argumento y obligatorio cuandotypeesvrf. Una dirección de red no reservada de unaip_rangeexistente en la VRF especificada.cidr- (Opcional) Sólo válido como argumento y obligatorio cuandotypeesvrf. El tamaño de la red a reservar desde un VRF ip_range existente.cidrsólo puede especificarse convrf_id. El rango es 22-31. Los Circuitos Virtuales requieren 30-31. Otros recursos VRF deben utilizar un CIDR en el rango 22-29.
Atributos Referencia
Además de todos los argumentos anteriores, se exportan los siguientes atributos:
id- El ID único del bloque.cidr_notation- Dirección y máscara en notación CIDR, por ejemplo147.229.15.30/31.network- Parte de la especificación del bloque correspondiente a la dirección IP de la red.netmask- Máscara en notación decimal, por ejemplo255.255.255.0.cidr- longitud del prefijo CIDR del bloque como número entero.address_family- Familia de direcciones como número entero. Una de4o6.public- Bandera booleana que indica si las direcciones de un bloque son públicas.global- Bandera booleana que indica si las direcciones de un bloque son globales (es decir, pueden asignarse en cualquier metro).vrf_id- ID VRF del bloque cuando type=vrf
-> NOTA: La referencia idempotente a una primera dirección /32 de un bloque reservado podría parecerse a join("/", [cidrhost(metal_reserved_ip_block.myblock.cidr_notation,0), "32"]).
Importar
Este recurso puede importarse utilizando un ID de reserva IP existente:
terraform import equinix_metal_reserved_ip_block {existing_ip_reservation_id}