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)

powershell
# 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:

powershell
# 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

powershell
# 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

bash
# 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:

bash
# 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:

text
# 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

bash
# 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

bash
# 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

bash
# 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

bash
# 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

bash
# 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

bash
# 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:

hcl
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

bash
# 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:

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

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

Mejorar el rendimiento

bash
# Limpiar caché de paquetes
sudo apt clean

# Limpiar paquetes innecesarios
sudo apt autoremove

# Monitorear recursos
htop

Configurar Docker con WSL 2

bash
# 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

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

# Reiniciar WSL
wsl --shutdown

Problema: Error de memoria

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

Problema: Lentitud con archivos de Windows

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

Problema: Conflictos de versiones de Terraform

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

Compartir:

Post anterior