contacto@openit.ar | +54 9 3446434264

Tutorial Completo de WSL (Windows Subsystem for Linux) para Terraform

Tutorial Completo de WSL (Windows Subsystem for Linux) para Terraform

¿Qué es WSL y por qué usarlo con Terraform?

WSL (Windows Subsystem for Linux) te permite ejecutar un entorno Linux directamente en Windows, sin la sobrecarga de una máquina virtual tradicional. Para Terraform, esto es ideal porque:

  • Terraform se desarrolló originalmente para entornos Unix/Linux

  • Muchos tutoriales y ejemplos asumen un entorno Linux

  • Tienes acceso a todas las herramientas de línea de comandos de Linux

  • Mejor compatibilidad con scripts y automatizaciones

Módulo 1: Instalación de WSL en Windows

Paso 1: Habilitar WSL en Windows

Método 1: Usando PowerShell (Recomendado)

# Ejecutar PowerShell como Administrador y ejecutar:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# Reiniciar el equipo después de ejecutar estos comandos

Método 2: Usando la Interfaz Gráfica

  1. Abrir "Activar o desactivar características de Windows"

  2. Marcar "Subsistema de Windows para Linux"

  3. Marcar "Plataforma de máquina virtual"

  4. Reiniciar el equipo

Paso 2: Instalar una distribución de Linux

Desde Microsoft Store:

  1. Abrir Microsoft Store

  2. Buscar "Ubuntu" (o la distribución preferida)

  3. Hacer clic en "Instalar"

Desde línea de comandos:

# Listar distribuciones disponibles
wsl

Subsistema de Windows para Linux no tiene distribuciones instaladas.

Para resolverlo, instale una distribución con las instrucciones siguientes:

Use 'wsl.exe --list --online' para enumerar las distribuciones disponibles

y "wsl.exe --install <Distro>" para instalar.

wsl.exe --list --online

A continuación se muestra una lista de distribuciones válidas que se pueden instalar.

Instalar con "wsl.exe --install <Distro>".

NAME                            FRIENDLY NAME

AlmaLinux-8                     AlmaLinux OS 8

AlmaLinux-9                     AlmaLinux OS 9

AlmaLinux-Kitten-10             AlmaLinux OS Kitten 10

AlmaLinux-10                    AlmaLinux OS 10

Debian                          Debian GNU/Linux

FedoraLinux-42                  Fedora Linux 42

SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6

SUSE-Linux-Enterprise-15-SP7    SUSE Linux Enterprise 15 SP7

Ubuntu                          Ubuntu

Ubuntu-24.04                    Ubuntu 24.04 LTS

archlinux                       Arch Linux

kali-linux                      Kali Linux Rolling

openSUSE-Tumbleweed             openSUSE Tumbleweed

openSUSE-Leap-15.6              openSUSE Leap 15.6

Ubuntu-20.04                    Ubuntu 20.04 LTS

Ubuntu-22.04                    Ubuntu 22.04 LTS

OracleLinux_7_9                 Oracle Linux 7.9

OracleLinux_8_10                Oracle Linux 8.10

OracleLinux_9_5                 Oracle Linux 9.5

wsl.exe --install ubuntu-24.04

Paso 3: Configurar WSL 2 como predeterminado

# Establecer WSL 2 como versión predeterminada
wsl --set-default-version 2

# Verificar la versión de WSL
wsl --version

Módulo 2: Configuración inicial de WSL

Primer inicio y configuración de usuario

  1. Al iniciar por primera vez, se te pedirá crear un usuario y contraseña

  2. Este usuario tendrá privilegios sudo

Actualizar el sistema

# Actualizar lista de paquetes
sudo apt update

# Actualizar paquetes instalados
sudo apt upgrade

# Instalar herramientas básicas
sudo apt install curl wget git unzip

Configurar la integración entre Windows y WSL

Acceder a archivos de Windows desde WSL:

# Los discos de Windows se montan en /mnt/
cd /mnt/c/Users/TuUsuario  # Acceder a tu carpeta de usuario de Windows

Acceder a archivos de WSL desde Windows:

# En el Explorador de Windows, escribe:
\\wsl$\Ubuntu\home\tu_usuario

Módulo 3: Instalar Terraform en WSL

Método 1: Instalación desde repositorio de HashiCorp

# Instalar dependencias
sudo apt install -y gnupg software-properties-common

# Añadir la clave GPG de HashiCorp
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg

# Añadir el repositorio oficial
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list

# Actualizar e instalar Terraform
sudo apt update
sudo apt install terraform

# Verificar la instalación
terraform version

Método 2: Instalación manual con ZIP

# Descargar la versión deseada
wget https://releases.hashicorp.com/terraform/1.5.0/terraform_1.5.0_linux_amd64.zip

# Descomprimir
unzip terraform_1.5.0_linux_amd64.zip

# Mover al directorio de binarios
sudo mv terraform /usr/local/bin/

# Verificar instalación
terraform version

Módulo 4: Configurar AWS CLI en WSL

Instalación de AWS CLI

# Descargar el instalador
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

# Descomprimir
unzip awscliv2.zip

# Instalar
sudo ./aws/install

# Verificar instalación
aws --version

Configurar credenciales de AWS

# Configurar credenciales (usa tus propias claves)
aws configure

# Alternativamente, puedes usar variables de entorno
echo 'export AWS_ACCESS_KEY_ID="TU_ACCESS_KEY"' >> ~/.bashrc
echo 'export AWS_SECRET_ACCESS_KEY="TU_SECRET_KEY"' >> ~/.bashrc
echo 'export AWS_DEFAULT_REGION="us-east-1"' >> ~/.bashrc
source ~/.bashrc

Módulo 5: Configurar un entorno de desarrollo en WSL

Instalar Visual Studio Code con extensión WSL

  1. Instalar VS Code en Windows

  2. Instalar la extensión "Remote - WSL"

  3. Abrir WSL y ejecutar: code .

  4. VS Code se abrirá con la extensión WSL activa

Extensiones recomendadas para VS Code en WSL:

  • HashiCorp Terraform

  • Remote - WSL

  • GitLens

  • Docker

Configurar Git en WSL

# Configurar usuario de Git
git config --global user.name "Tu Nombre"
git config --global user.email "tu.email@ejemplo.com"

# Generar SSH key para GitHub/GitLab. Se utiliza para generar un par de claves SSH usando el algoritmo Ed25519.
ssh-keygen -t ed25519 -C "tu.email@ejemplo.com"

# Ver la clave pública para añadirla a tu cuenta
cat ~/.ssh/id_ed25519.pub

Módulo 6: Primer proyecto de Terraform en WSL

Crear un proyecto de ejemplo

# Crear directorio del proyecto
mkdir ~/terraform-proyecto
cd ~/terraform-proyecto

# Inicializar el proyecto
terraform init

# Crear archivo de configuración principal
nano main.tf

Contenido de main.tf:

provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "ejemplo" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "EjemploDesdeWSL"
  }
}

output "ip_publica" {
  value = aws_instance.ejemplo.public_ip
}

Ejecutar el proyecto

# Formatear el código
terraform fmt

# Validar la configuración
terraform validate

# Ver el plan de ejecución
terraform plan

# Aplicar los cambios
terraform apply

# Destruir los recursos
terraform destroy

Módulo 7: Configuraciones avanzadas de WSL

Archivo de configuración de WSL

Crear o editar ~/.wslconfig en Windows:

[wsl2]
memory=4GB
processors=2
localhostForwarding=true

# Opciones adicionales:
# kernel=C:\\temp\\myCustomKernel
# swap=2GB

Mejorar el rendimiento

# Limpiar caché de paquetes
sudo apt clean

# Limpiar paquetes innecesarios
sudo apt autoremove

# Monitorear recursos
htop

Configurar Docker con WSL 2

# Instalar Docker
sudo apt install docker.io

# Iniciar servicio Docker
sudo service docker start

# Añadir usuario al grupo docker
sudo usermod -aG docker $USER

# Verificar instalación
docker --version

Módulo 8: Solución de problemas comunes

Problema: WSL no inicia

# Reiniciar el servicio LxssManager
Get-Service LxssManager | Restart-Service

# Reiniciar WSL
wsl --shutdown

Problema: Error de memoria

# En el archivo .wslconfig, reducir la memoria asignada
memory=2GB

Problema: Lentitud con archivos de Windows

# Trabajar en el sistema de archivos de Linux (~/)
# en lugar de en /mnt/c/ para mejor rendimiento

Problema: Conflictos de versiones de Terraform

# Usar tfenv para gestionar múltiples versiones
tfenv list
tfenv use 1.4.0

Compartir:

Post anterior