# Deploy Terraform - Naliia Web Infraestructura como código para desplegar recursos en Hetzner Cloud. ## Tecnología Utilizada - **Terraform**: >= 0.13 - **Provider**: hcloud (Hetzner Cloud) - **Recursos**: SSH Key, Server, Volume ## Estructura del Proyecto ``` Deploy/ ├── terraform/ │ ├── hcloud.tf # Definición de recursos │ ├── variables.tf # Variables disponibles │ ├── config.auto.tfvars # Configuración (contiene secrets) │ ├── .terraform/ # Proveedores descargados │ └── .terraform.lock.hcl # Lock de proveedores ├── config.auto.tfvars.example # Template de configuración ├── .gitignore └── README.md ``` ## Variables a Actualizar | Variable | Descripción | Valor por defecto | |----------|-------------|-------------------| | `hcloud_token` | Token API de Hetzner | (requerido) | | `hcloud_ssh_key_name` | Nombre de la clave SSH | default-ssh-key | | `hcloud_ssh_key_file_path` | Ruta a clave pública | ~/.ssh/id_rsa.pub | | `hcloud_server_name` | Nombre del servidor | app | | `hcloud_server_image` | Imagen del SO | ubuntu-24.04 | | `hcloud_server_type` | Tipo de instancia | cx23 | | `hcloud_volume_name` | Nombre del volumen | web_volume | | `hcloud_volume_size` | Tamaño en GB | 10 | ## Comandos Terraform ```bash # Inicializar el directorio de trabajo terraform init # Mostrar el plan de cambios terraform plan # Aplicar los cambios definidos terraform apply # Mostrar el estado actual de los recursos terraform show # Destruir todos los recursos creados terraform destroy # Formatear los archivos de configuración terraform fmt # Validar la configuración terraform validate ``` ## Requisitos Previos 1. Terraform instalado (>= 0.13) 2. Cuenta en [Hetzner Cloud](https://console.hetzner.cloud) 3. Token API generado en Hetzner Robot > Access > API Tokens 4. Clave SSH pública generada (`~/.ssh/id_rsa.pub`) ## Configuración Inicial 1. Copiar el archivo de ejemplo de configuración: ```bash cp config.auto.tfvars.example terraform/config.auto.tfvars ``` 2. Editar `terraform/config.auto.tfvars` con los valores deseados 3. Inicializar Terraform: ```bash cd terraform terraform init ``` 4. Aplicar la configuración: ```bash terraform apply ```