Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
194 changes: 194 additions & 0 deletions README.es-ES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@


# Automatización de VM en OCI

![Build Status](https://img.shields.io/badge/build-passing-brightgreen)
![Platform](https://img.shields.io/badge/platform-Oracle%20Cloud-orange)
![License](https://img.shields.io/badge/license-MIT-blue)
![PRs Welcome](https://img.shields.io/badge/PRs-welcome-green)

Un conjunto integral de automatización para aprovisionar, configurar y gestionar Máquinas Virtuales (Instancias de Compute) en **Oracle Cloud Infrastructure (OCI)**. Este repositorio optimiza el ciclo de vida de la infraestructura utilizando **[Insertar Herramienta: p. ej., Terraform / Ansible / SDK de Python]**.

---

## 📋 Tabla de contenidos

- [Descripción general](#-overview)
- [Características](#-features)
- [Arquitectura](#-architecture)
- [Prerrequisitos](#-prerequisites)
- [Instalación](#-installation)
- [Configuración](#-configuration)
- [Uso](#-usage)
- [Solución de problemas](#-troubleshooting)
- [Contribuir](#-contributing)
- [Licencia](#-license)

---

## 📖 Descripción general

Este proyecto reduce la carga manual automatizando el despliegue de recursos Compute de OCI. Está diseñado para ser modular, seguro y escalable, adecuado tanto para entornos de desarrollo como para cargas de trabajo de producción.

**Las capacidades clave incluyen:**
- Descubrimiento/creación automatizados de VCN y Subredes.
- Inyección dinámica de claves SSH y scripts de Cloud-Init.
- Adjunción de volúmenes de almacenamiento en bloques.
- Asociación automática con Grupos de Seguridad de Red (NSG).

---

## ✨ Características

- **Infraestructura como Código:** Configuración totalmente declarativa para entornos reproducibles.
- **Soporte Multi-SO:** Admite imágenes de Oracle Linux, Ubuntu, CentOS y Windows.
- **Seguridad en primer plano:** Impone principios de menor privilegio mediante políticas de IAM y Listas de Seguridad estrictas.
- **Inicialización personalizada:** Admite `user_data` para la configuración posterior al aprovisionamiento (instalación de Docker, actualizaciones, etc.).
- **Escalado flexible:** Ajuste fácilmente OCPUs y memoria para formas Flex.

---

## 🏗 Arquitectura

> **Nota:** Reemplace el enlace a continuación con su diagrama de arquitectura real.

![Architecture Diagram](https://via.placeholder.com/800x400?text=OCI+Architecture+Diagram+Placeholder)

La automatización crea los siguientes recursos:
1. **Redes:** VCN, Subredes Públicas/Privadas, Internet Gateway/NAT Gateway.
2. **Compute:** Instancias de VM que utilizan formas flexibles (p. ej., `VM.Standard.E4.Flex`).
3. **Almacenamiento:** Volúmenes de arranque y volúmenes en bloque adjuntos opcionales.

---

## ✅ Prerrequisitos

Antes de ejecutar la automatización, asegúrese de contar con lo siguiente:

1. **Cuenta de Oracle Cloud:** Una cuenta activa de OCI.
2. **Claves API de OCI:** Un par de claves RSA en formato PEM para la firma de API.
- [Documentación: Cómo generar claves API](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm)
3. **Herramientas requeridas:**
- [Nombre de la herramienta CLI, p. ej., Terraform v1.0+]
- [Nombre de la herramienta CLI, p. ej., OCI CLI]
- Git

---

## ⚙️ Instalación

1. **Clonar el repositorio**
```bash
git clone https://github.com/your-username/OCI-vm-automation.git
cd OCI-vm-automation
```

2. **Inicializar dependencias**
*Si usa Terraform:*
```bash
terraform init
```
*Si usa Python:*
```bash
pip install -r requirements.txt
```

---

## 🔧 Configuración

Copie el archivo de configuración de ejemplo para crear su archivo de configuración local.

```bash
cp examples/terraform.tfvars.example terraform.tfvars
# O
cp config.example.yaml config.yaml
```

### Variables clave

| Variable | Descripción | Requerido | Predeterminado |
| :--- | :--- | :---: | :--- |
| `tenancy_ocid` | El OCID de su tenencia | Sí | - |
| `user_ocid` | El OCID del usuario que ejecuta el script | Sí | - |
| `fingerprint` | Huella digital de la clave de firma API | Sí | - |
| `region` | Región de OCI (p. ej., `us-ashburn-1`) | Sí | `us-ashburn-1` |
| `compartment_id` | Compartimento objetivo para los recursos | Sí | - |
| `instance_shape` | Forma de VM (p. ej., `VM.Standard.E4.Flex`) | No | `VM.Standard.E4.Flex` |
| `ssh_public_key` | Ruta a su clave SSH pública | Sí | `~/.ssh/id_rsa.pub` |

---

## 🚀 Uso

### 1. Planificar el despliegue
Vizualice los cambios antes de aplicarlos a su tenencia de OCI.

```bash
# Ejemplo para Terraform
terraform plan
```

### 2. Aplicar cambios
Aprovisione la infraestructura.

```bash
# Ejemplo para Terraform
terraform apply --auto-approve
```

### 3. Conectar a la VM
Una vez aprovisionado, la salida mostrará la IP pública.

```bash
ssh -i ~/.ssh/id_rsa opc@<PUBLIC_IP_ADDRESS>
```

### 4. Limpieza / Destrucción
Para eliminar todos los recursos creados por esta automatización:

```bash
terraform destroy
```

---

## ❓ Solución de problemas

**Problema: `401 Authorization failed`**
- *Causa:* Clave API, huella digital o OCID de usuario incorrectos.
- *Solución:* Verifique su `~/.oci/config` o sus variables de entorno. Asegúrese de que la clave pública esté cargada en la consola de Usuario en OCI.

**Problema: `Service Limit Reached`**
- *Causa:* Su tenencia ha alcanzado el límite para núcleos Compute Always Free o estándar.
- *Solución:* Solicite un aumento de límite en la consola de OCI o cambie a una forma de instancia de pago.

**Problema: `Invalid Parameter - ShapeConfig`**
- *Causa:* Intentar configurar memoria/OCPU para una forma no Flex.
- *Solución:* Solo especifique la configuración de memoria/CPU si utiliza formas Flex E3/E4/A1.

---

## 🤝 Contribuir

Las contribuciones son lo que hacen de la comunidad de código abierto un lugar tan increíble para aprender, inspirarse y crear. Cualquier contribución que realice es **muy apreciada**.

1. Realice un fork del proyecto
2. Cree su rama de función (`git checkout -b feature/AmazingFeature`)
3. Confirme sus cambios (`git commit -m 'Add some AmazingFeature'`)
4. Empuje a la rama (`git push origin feature/AmazingFeature`)
5. Abra un Pull Request

---

## 📜 Licencia

Distribuido bajo la licencia MIT. Consulte `LICENSE` para obtener más información.

---

## 📞 Contacto

Mantenedor del proyecto - [Su Nombre] - [su.correo@ejemplo.com]

Enlace del proyecto: [https://github.com/your-username/OCI-vm-automation](https://github.com/your-username/OCI-vm-automation)