Eliminar recursos de Oracle Cloud Infrastructure (OCI) con Terraform

Índice

En este post se explica cómo se pueden eliminar recursos en un proveedor de cloud, en este caso Oracle Cloud Infrastructure (OCI) usando la herramienta de línea de comandos de Terraform. El punto de partida es una infraestructura sencilla: una VCN con una subnet creada en otro artículo de este blog y después modificada en este otro post.

Esta infraestructura está definida por la siguiente configuración en Terraform:

terraform {
  required_providers {
    oci = {
      source  = "oracle/oci"
      version = "7.15.0"
    }
  }
}

provider "oci" {
  region              = "eu-madrid-1"
  auth                = "SecurityToken"
  config_file_profile = "terraform-tutorial"
}

resource "oci_core_vcn" "mi_vcn" {
  dns_label      = "mivcn"
  cidr_block     = "172.22.0.0/16"
  compartment_id = "<OCID del compartimento>"
  display_name   = "Mi VCN"
}

resource "oci_core_subnet" "private_subnet" {
  vcn_id                      = oci_core_vcn.mi_vcn.id
  cidr_block                  = "172.22.0.0/24"
  compartment_id              = "<OCID del compartimento>"
  display_name                = "Subred Privada"
  prohibit_public_ip_on_vnic  = true
  dns_label                   = "privatesubnet"
}

El comando de Terraform que permite destruir los recursos creados a través de una configuración como esta es terraform destroy.

❯ terraform destroy
oci_core_vcn.mi_vcn: Refreshing state... [id=<OCID de la VCN>]
oci_core_subnet.private_subnet: Refreshing state... [id=<OCID de la subred>]

Terraform used the selected providers to generate the following execution plan.
Resource actions are indicated with the following symbols:
  - destroy

Terraform will perform the following actions:

  # oci_core_subnet.private_subnet will be destroyed
  - resource "oci_core_subnet" "private_subnet" {
      - cidr_block                 = "172.22.0.0/24" -> null
      - compartment_id             = "<OCID del compartimento>" -> null
      - defined_tags               = {
          - "Oracle-Tags.CreatedBy" = "default/fjhuete"
          - "Oracle-Tags.CreatedOn" = "2025-08-22T15:36:51.582Z"
        } -> null
      - dhcp_options_id            = "<OCID del recurso>" -> null
      - display_name               = "Subred Privada" -> null
      - dns_label                  = "privatesubnet" -> null
      - freeform_tags              = {} -> null
      - id                         = "<OCID de la subred>" -> null
      - ipv6cidr_blocks            = [] -> null
      - prohibit_internet_ingress  = true -> null
      - prohibit_public_ip_on_vnic = true -> null
      - route_table_id             = "<OCID del recurso>" -> null
      - security_list_ids          = [
          - "<OCID del recurso>",
        ] -> null
      - state                      = "AVAILABLE" -> null
      - subnet_domain_name         = "privatesubnet.mivcn.oraclevcn.com" -> null
      - time_created               = "2025-08-22 15:36:51.612 +0000 UTC" -> null
      - vcn_id                     = "<OCID de la VCN>" -> null
      - virtual_router_ip          = "172.22.0.1" -> null
      - virtual_router_mac         = "00:00:17:D1:34:5F" -> null
    }

  # oci_core_vcn.mi_vcn will be destroyed
  - resource "oci_core_vcn" "mi_vcn" {
      - byoipv6cidr_blocks       = [] -> null
      - cidr_block               = "172.22.0.0/16" -> null
      - cidr_blocks              = [
          - "172.22.0.0/16",
        ] -> null
      - compartment_id           = "<OCID del compartimento>" -> null
      - default_dhcp_options_id  = "<OCID del recurso>" -> null
      - default_route_table_id   = "<OCID del recurso>" -> null
      - default_security_list_id = "<OCID del recurso>" -> null
      - defined_tags             = {
          - "Oracle-Tags.CreatedBy" = "default/fjhuete"
          - "Oracle-Tags.CreatedOn" = "2025-08-22T14:31:11.222Z"
        } -> null
      - display_name             = "Mi VCN" -> null
      - dns_label                = "mivcn" -> null
      - freeform_tags            = {} -> null
      - id                       = "<OCID de la VCN>" -> null
      - ipv6cidr_blocks          = [] -> null
      - ipv6private_cidr_blocks  = [] -> null
      - is_ipv6enabled           = false -> null
      - security_attributes      = {} -> null
      - state                    = "AVAILABLE" -> null
      - time_created             = "2025-08-22 14:31:11.279 +0000 UTC" -> null
      - vcn_domain_name          = "mivcn.oraclevcn.com" -> null
    }

Plan: 0 to add, 0 to change, 2 to destroy.

Do you really want to destroy all resources?
  Terraform will destroy all your managed infrastructure, as shown above.
  There is no undo. Only 'yes' will be accepted to confirm.

  Enter a value: yes

oci_core_subnet.private_subnet: Destroying... [id=<OCID de la subred>]
oci_core_subnet.private_subnet: Destruction complete after 1s
oci_core_vcn.mi_vcn: Destroying... [id=<OCID de la VCN>]
oci_core_vcn.mi_vcn: Destruction complete after 1s

Destroy complete! Resources: 2 destroyed.

Tras ejecutar el comando, los recursos definidos en el fichero de Terraform desaparecen de la infraestrucutra en el proveedor de nube:

❯ oci network vcn list --profile terraform-tutorial --auth security_token --compartment-id <OCID del compartimento> | wc -l
0
❯ oci network subnet list --profile terraform-tutorial --auth security_token --compartment-id <OCID del compartimento> | wc -l
0
comments powered by Disqus

Relacionados

Arranque desde el grub ante errores en el sistema

El gestor de arranque GRUB cuenta con una consola desde la que se puede interactuar con el propio gestor de arranque ante un fallo en el arranque del sistema. A esta consola se puede acceder pulsando la telca c desde el menú del gestor de arranque.

Leer

Así funciona IPv6: configuración en router Linux y Cisco

IPv6 es una actualización del protocolo IPv4 que nace ante la escasez de direcciones que IPv4 permite. Las direcciones IPv6 están formada por 32 caracteres hexadecimales en grupos de cuatro caracteres separados por el carácter dos puntos (:). En este post se recogen varios ejemplos prácticos del funcionamiento de este protocolo.

Leer

Creación de una VCN en Oracle Cloud Infrastructure (OCI) con Terraform

Las VCN (Virtual Cloud Network) son un recurso fundamental en Oracle Cloud Infrastructure. En este post se utiliza la herramienta de IaC Terraform para provisionar uno de estos recursos en un arrendamiento de OCI.

Leer