92 lines
2.3 KiB
Markdown
92 lines
2.3 KiB
Markdown
# 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
|
|
``` |