Profile image
Introducción a Oracle Cloud Infrastructure (OCI) con Terraform

Introducción a Oracle Cloud Infrastructure (OCI) con Terraform

Thu Sep 18 2025
Desarrollo
7 min de lectura

¡Hola Chiquis!👋🏻 ¿Cansado de la gestión manual y repetitiva de tu infraestructura en la nube? ¿Sueñas con un proceso ágil, seguro y automatizado para desplegar tus recursos? Bienvenido al futuro de la gestión de la nube. Te presento la combinación perfecta: Oracle Cloud Infrastructure (OCI) y Terraform.

Oracle Cloud Infrastructure (OCI) es la plataforma de nube de Oracle que te ofrece un conjunto completo de servicios de computación, almacenamiento, red y bases de datos. A diferencia de otras nubes, OCI se distingue por su arquitectura de segunda generación, que proporciona un rendimiento superior y costos más predecibles para cargas de trabajo empresariales.

¿Por qué Terraform es el aliado ideal para OCI?

Terraform es una herramienta de Infraestructura como Código (IaC) de HashiCorp. En pocas palabras, te permite definir y aprovisionar tu infraestructura de forma declarativa, utilizando archivos de configuración legibles y versionables. Olvídate de hacer clic en la consola de la nube, con Terraform puedes:

  • Automatizar: Despliega, actualiza y destruye recursos de forma automática y repetible.
  • Versionar: Almacena tu configuración en un sistema de control de versiones como Git, lo que te permite tener un historial de cambios y colaborar en equipo.
  • Reutilizar: Crea módulos de Terraform para reutilizar la configuración en diferentes proyectos, ahorrando tiempo y esfuerzo.
  • Gestionar el estado: Terraform lleva un registro del estado de tus recursos, asegurando que tu infraestructura real coincida con la configuración declarada.

Terraform convierte cada recurso de nube en código legible, versionable y reutilizable. Olvídate de clics manuales: define tu red, cómputo y almacenamiento con ficheros .tf, ejecútalos una sola vez y deja que Terraform se encargue del resto.

  • Control total de versiones: Git + código = auditoría y rollback instantáneo.
  • Colaboración sin conflictos: variables centralizadas y estados remotos.
  • Escalabilidad programática: módulos y workspaces para entornos dev, QA y prod diferentes con el mismo código.

OCI es la nube ideal para empresas que buscan rendimiento y precios competitivos. Combinarla con Terraform te da la velocidad de despliegue de la IaC más popular del mercado junto con la potencia de la infraestructura de Oracle.

Primeros pasos: Configuración básica

Antes de escribir tu primer recurso, necesitas:

  1. Credenciales de OCI
  • Tenancy OCID
  • User OCID
  • Fingerprint de la clave pública
  • Ruta local a tu clave privada
  • Region (ej., sa-saopaulo-1)
  1. Estructura de ficheros
  • provider.tf: configuración del proveedor
provider "oci" {
  tenancy_ocid     = var.tenancy_ocid
  user_ocid        = var.user_ocid
  fingerprint      = var.fingerprint
  private_key_path = var.private_key_path
  region           = var.region
}
  • variables.tf: declara variables reutilizables
variable "tenancy_ocid"     { type = string }
variable "user_ocid"        { type = string }
variable "fingerprint"      { type = string }
variable "private_key_path" { type = string }
variable "region"           { type = string }
variable "compartment_id"   { type = string }
  • terraform.tfvars: valores concretos para variables
tenancy_ocid     = "ocid1.tenancy.oc1..xxxxx"
user_ocid        = "ocid1.user.oc1..xxxxx"
fingerprint      = "20:3b:97:13:55:1e:..." 
private_key_path = "/home/usuario/.oci/oci_api_key.pem"
region           = "us-ashburn-1"
compartment_id   = "ocid1.compartment.oc1..xxxxx"

Con esto, ya puedes inicializar tu proyecto:

terraform init
terraform plan

Al validar el plan verás los cambios que Terraform aplicará en tu nube OCI.

Tu primer Virtual Cloud Network (VCN)

Crear un VCN es la piedra angular sobre la que se levantan subnets, gateways y reglas de seguridad. En main.tf, añade:

resource "oci_core_virtual_network" "vcn" {
  compartment_id = var.compartment_id
  display_name   = "mi_vcn_terraform"
  cidr_block     = "10.0.0.0/16"
  dns_label      = "vcnterraform"
}

Define también un bloque de output para capturar su ID:

output "vcn_id" {
  description = "ID del Virtual Cloud Network"
  value       = oci_core_virtual_network.vcn.id
}

Aplica:

terraform apply

Verás en consola el vcn_id generado automáticamente.

Añadiendo una Subnet Extiende tu red con una subnet pública o privada. En main.tf agrega:

resource "oci_core_subnet" "public_subnet" {
  compartment_id = var.compartment_id
  vcn_id         = oci_core_virtual_network.vcn.id
  cidr_block     = "10.0.1.0/24"
  display_name   = "subnet_publica"
  dns_label      = "pubsubnet"
}

Esta sección queda enlazada al VCN y te permite colocar instancias en un segmento de red concreto. Ejecuta de nuevo:

terraform apply

Terraform detecta que solo falta la nueva subnet y la crea sin tocar tu VCN ni otros recursos.

img295

Ejemplo completo: infraestructura simple

Para ilustrar cómo integrar cómputo, storage y red:

# provider.tf  (configuración del proveedor - igual que antes)

# variables.tf  (idéntico a sección 2)

# main.tf
data "oci_core_availability_domains" "ads" {
  compartment_id = var.compartment_id
}

resource "oci_core_virtual_network" "vcn" {
  compartment_id = var.compartment_id
  display_name   = "infra_simple_vcn"
  cidr_block     = "10.10.0.0/16"
  dns_label      = "infra"
}

resource "oci_core_subnet" "subnet" {
  compartment_id = var.compartment_id
  vcn_id         = oci_core_virtual_network.vcn.id
  cidr_block     = "10.10.1.0/24"
  display_name   = "infra_subnet"
  availability_domain = data.oci_core_availability_domains.ads.names[0]
}

resource "oci_core_instance" "vm" {
  compartment_id      = var.compartment_id
  availability_domain = data.oci_core_availability_domains.ads.names[0]
  shape               = "VM.Standard2.1"
  display_name        = "vm_terraform"
  subnet_id           = oci_core_subnet.subnet.id

  source_details {
    source_type = "image"
    image_id    = data.oci_core_images.ubuntu.id
  }

  metadata = {
    ssh_authorized_keys = file("~/.ssh/id_rsa.pub")
  }
}

data "oci_core_images" "ubuntu" {
  compartment_id = var.compartment_id
  operating_system = "Canonical Ubuntu"
  operating_system_version = "20.04"
  sort_by = "TIMECREATED"
  sort_order = "DESC"
  limit = 1
}

output "instance_public_ip" {
  value = oci_core_instance.vm.public_ip
}

Con este main.tf, obtienes:

  • VCN + Subnet en un AD específico
  • Máquina virtual Ubuntu con clave SSH
  • IP pública como output para conectarte al instante

Corrige y aplica:

terraform fmt
terraform validate
terraform apply

El Flujo de Trabajo con OCI y Terraform: Un Proceso Sencillo y Eficiente

El flujo de trabajo básico de Terraform para OCI se reduce a tres simples comandos:

  • terraform init: Inicializa tu directorio de trabajo y descarga los plugins necesarios para interactuar con OCI.
  • terraform plan: Genera un plan de ejecución. Este comando te muestra exactamente qué recursos se crearán, modificarán o eliminarán, sin realizar cambios reales en tu infraestructura. Es tu red de seguridad.
  • terraform apply: Ejecuta el plan y aprovisiona la infraestructura en tu cuenta de OCI. ¡Observa cómo tus recursos se materializan en la nube en cuestión de minutos!

Este enfoque no solo reduce el riesgo de errores humanos, sino que también fomenta la colaboración y la estandarización en tus proyectos de nube.

Buenas prácticas y siguientes pasos

  • Usar módulos para separar networking, cómputo y seguridad.
  • Almacena el estado en un bucket de Object Storage o en Terraform Cloud para trabajo colaborativo.
  • Define grupos de seguridad (security lists) y Route Tables tan pronto crees tu VCN.
  • Aprovecha workspaces para desplegar identidades aisladas (dev, staging, prod).
  • Implementa tests con terratest para validar tu infraestructura automáticamente.

Conclusión

Para comenzar, solo necesitas instalar Terraform, configurar el proveedor de OCI y tener tus credenciales de API listas. Una vez hecho esto, estás a solo unos pocos comandos de transformar tu forma de trabajar con la nube.

Ahora dominas lo básico: tu nube OCI ya se define en código y se despliega en pocos pasos. ¿Listo para escalar a un multi-tier con balanceadores, Firewalls y bases de datos gestionadas? ¡El siguiente nivel es crear módulos y pipelines CI/CD que automaticen tu flujo de trabajo de extremo a extremo!

Fuentes: HashiCorp Cloud Platform

Este video te guiará en cómo crear un recurso de computación en OCI utilizando scripts de Terraform. How to Create Terraform Scripts to Create a Compute Instance in OCI - YouTube

¡Gracias por acompañarme en esta aventura tech! 👩🏻‍💻✨

🚀 ¿Te ha inspirado este contenido? Me encantaría saber tu opinión o leer tus experiencias. 🧡

Si quieres explorar más de lo que estoy creando (proyectos, blogs, contenido tech y novedades en IA/ML), te invito a visitar:

✨ Code with heart - Create with soul ✨

Referencias:

Imágenes creadas con Gemini (google.com)

#porunmillondeamigos #makeyourselfvisible #creatorcontent #linkedin #developers #opentowork #OCI #oracle #terraform #CI/CD #cloud

img295

💬 Comentarios

Comparte tus pensamientos, ideas y emojis 😊. Tus comentarios se guardan localmente.

✍️ Escribe libremente 😀 Usa emojis 💬 Responde a otros

No hay comentarios aún. ¡Sé el primero en comentar! 💬