es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Terraform destruye el recurso después de importarlo.

He importado la interfaz de red de AWS en mi estado en Terraform Cloud.

He utilizado mi CLI con el backend remoto de Terraform.

terraform import aws_network_interface.default eni-ID

El estado ha sido actualizado y el recurso ha sido importado.
Pero cuando ejecuto terraform plan, ese recurso es eliminado y no recreado.

¿Por qué? ¿Qué estoy haciendo mal?

Mi recurso importado:

resource "aws_network_interface" "default" {
  subnet_id = "subnet-ID"
}

Este es el plan de Terraform de la interfaz de red. Todo será eliminado.

arn : "arn:aws:ec2:eu-west-1:XXX:network-interface/eni-XXX"
description : ""
id : "eni-XXX"
interface_type : "interface"
ipv4_prefix_count : 0
ipv4_prefixes : []
ipv6_address_count : 0
ipv6_addresses : []
ipv6_prefix_count : 0
ipv6_prefixes : []
mac_address : "XXXX"
outpost_arn : ""
owner_id : "XXX"
private_dns_name : "ip-XXXX.eu-west-1.compute.internal"
private_ip : "XXX"
private_ips : [
    "XXX"
] -> null
private_ips_count : 0
security_groups : [
    "sg-12345"
    "sg-5678"
] -> null
source_dest_check : true
subnet_id : "subnet-XXX"
tags : { }
tags_all : { }
attachment {
    attachment_id : "eni-attach-XXX"
    device_index :    0
    instance : "i-XXX"
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basado en el comando terraform import y en la configuración del recurso importado, parece que el recurso aws_network_interface no fue creado por Terraform, sino importado desde un recurso existente fuera del control de Terraform. Cuando ejecutas terraform plan, Terraform intenta reconciliar el estado que has definido en tu configuración con el estado de los recursos en el entorno de la nube real. Dado que el recurso importado no está definido en tu configuración, Terraform considera que está desincronizado y por lo tanto lo destruye.

    Para evitar que Terraform destruya el recurso importado, debes agregar el recurso importado a tu configuración de Terraform. Ya has importado el recurso en el estado remoto, por lo que simplemente puedes actualizar tu configuración con los mismos detalles que el recurso importado, así:

    resource "aws_network_interface" "default" {
      subnet_id = "subnet-ID"
      id        = "eni-ID"
    }
    

    Al definir el atributo id en tu configuración, Terraform reconocerá que este recurso ya existe y no intentará destruirlo.

Comments are closed.