Linux

Comandos de Gestión de Archivos y Directorios

Comando Ejemplo Explicación
ls ls -l Lista el contenido de un directorio. -l muestra detalles (permisos, tamaño).
cd cd /home/usuario/documentos Cambia de directorio. cd .. sube un nivel; cd ~ va al directorio home.
pwd pwd Muestra la ruta del directorio actual de trabajo.
mkdir mkdir nuevo_directorio Crea un nuevo directorio.
rmdir rmdir directorio_vacio Elimina un directorio vacío.
cp cp archivo_origen archivo_destino Copia archivos o directorios. cp -r dir_origen dir_destino copia directorios recursivamente.
mv mv archivo_origen archivo_destino Mueve o renombra archivos y directorios.
rm rm archivo_a_borrar Elimina archivos. rm -r directorio elimina directorios y su contenido recursivamente. rm -rf fuerza la eliminación.
touch touch nuevo_archivo.txt Crea un archivo vacío o actualiza la fecha de modificación de uno existente.
find find . -name "*.txt" Busca archivos y directorios. Busca archivos con extensión .txt en el directorio actual y subdirectorios.
locate locate mi_documento Busca archivos rápidamente usando una base de datos (requiere updatedb).
nan nan nan
nan nan nan

Comandos de Gestión de Archivos y Directorios

Comando Ejemplo Explicación
ls ls -l Lista el contenido de un directorio. -l muestra detalles (permisos, tamaño).
cd cd /home/usuario/documentos Cambia de directorio. cd .. sube un nivel; cd ~ va al directorio home.
pwd pwd Muestra la ruta del directorio actual de trabajo.
mkdir mkdir nuevo_directorio Crea un nuevo directorio.
rmdir rmdir directorio_vacio Elimina un directorio vacío.
cp cp archivo_origen archivo_destino Copia archivos o directorios. cp -r dir_origen dir_destino copia directorios recursivamente.
mv mv archivo_origen archivo_destino Mueve o renombra archivos y directorios.
rm rm archivo_a_borrar Elimina archivos. rm -r directorio elimina directorios y su contenido recursivamente. rm -rf fuerza la eliminación.
touch touch nuevo_archivo.txt Crea un archivo vacío o actualiza la fecha de modificación de uno existente.
find find . -name "*.txt" Busca archivos y directorios. Busca archivos con extensión .txt en el directorio actual y subdirectorios.
locate locate mi_documento Busca archivos rápidamente usando una base de datos (requiere updatedb).
nan nan nan

Comandos de Espacio en Disco y Análisis de Contenido/Tamaño

Comando Ejemplo Explicación
df df -h Disk Free: Muestra el espacio libre y usado en los sistemas de archivos montados. -h muestra los tamaños en formato legible (ej. G para gigabytes).
nan df -T Muestra el tipo de sistema de archivos (ext4, xfs, etc.) para cada partición.
nan df -i Muestra el uso de inodos (estructuras que almacenan metadatos de archivos).
du du -sh /home/usuario/documentos Disk Usage: Estima el uso de espacio en disco de archivos y directorios. -s muestra un resumen total, -h tamaños legibles.
nan du -ah /var/log Muestra el tamaño de cada archivo y subdirectorio (-a incluye archivos, -h legible).
nan du -csh * Muestra el tamaño de cada archivo/directorio en el actual, más un total final (-c muestra el total).
nan du -h --max-depth=1 / Muestra el tamaño total de los directorios de primer nivel dentro de la raíz (/). Muy útil para identificar grandes consumidores.
ls -l ls -lh Lista el contenido de un directorio con detalles. -h muestra el tamaño de los archivos en formato legible.
nan ls -lSrh Lista el contenido ordenado por tamaño (-S), en orden inverso (-r), y legible (-h). Útil para encontrar archivos grandes.
find find /var/log -size +1G Busca archivos con un tamaño mayor a 1 Gigabyte en /var/log. Otros modificadores: -size -10M (menos de 10 MB), +1k (más de 1 kilobyte).
nan find . -type f -name "*.log" -exec du -h {} \; Encuentra todos los archivos .log en el directorio actual y subdirectorios, y muestra su tamaño individual.
ncdu ncdu / NCurses Disk Usage: Una herramienta interactiva y gráfica para analizar el uso de disco. Permite navegar por directorios y ver tamaños de forma intuitiva (puede que necesite instalación: sudo apt install ncdu).
tree tree -h -L 2 /home/usuario Muestra el contenido de los directorios en formato de árbol. -h para tamaños legibles, -L 2 limita la profundidad a 2 niveles. (Puede necesitar instalación: sudo apt install tree).
nan nan nan
nan nan nan

Comandos de Red

Comando Ejemplo Explicación
nslookup nslookup google.com Name Server Lookup: Consulta servidores DNS para obtener información de nombres de dominio o direcciones IP.
nan nslookup 8.8.8.8 Realiza una búsqueda inversa de una dirección IP (resuelve la IP a un nombre de host).
nan nslookup -type=mx example.com Muestra los registros MX (Mail Exchange) de un dominio, indicando los servidores de correo.
nan nslookup -type=any example.com Muestra todos los tipos de registros DNS disponibles para un dominio.
curl curl https://ejemplo.com Client for URLs: Herramienta potente para transferir datos con sintaxis de URL. Por defecto, muestra el contenido de la página web en la terminal.
nan curl -O https://ejemplo.com/archivo.zip Descarga un archivo y lo guarda con su nombre original (-O).
nan curl -o mi_pagina.html https://ejemplo.com Descarga un archivo y lo guarda con un nombre específico (-o).
nan curl -I https://ejemplo.com Realiza una solicitud HEAD, mostrando solo las cabeceras HTTP de la respuesta (útil para verificar el estado).
nan curl -X POST -d "param1=valor1&param2=valor2" https://api.ejemplo.com Envía datos usando el método POST (para APIs, formularios web, etc.). -d para enviar datos.
traceroute traceroute google.com Trace Route: Muestra la ruta que toman los paquetes a través de la red hasta un destino, incluyendo cada "salto" (router) y el tiempo de respuesta.
nan traceroute -I google.com Utiliza paquetes ICMP Echo (como ping) en lugar de UDP, lo que puede ser más efectivo en algunos casos.
nan traceroute -n google.com Evita la resolución de nombres de host para los saltos, mostrando solo las IPs (más rápido).
tracepath tracepath google.com Similar a traceroute pero no requiere privilegios de root y puede descubrir la MTU del camino.
ip route ip route show Muestra la tabla de enrutamiento del kernel. Es la versión moderna y recomendada en lugar de netstat -r o route.
nan ip route add default via 192.168.1.1 Agrega una ruta por defecto (gateway).
nan ip route del default Elimina la ruta por defecto.
nan ip route add 10.0.0.0/8 via 192.168.1.1 Agrega una ruta estática a una red específica.
netstat netstat -tulnp Network Statistics: Muestra conexiones de red, tablas de enrutamiento, interfaces y estadísticas. -t TCP, -u UDP, -l listening, -n numérico, -p muestra el PID del proceso.
nan netstat -rn Muestra la tabla de enrutamiento (-r) sin resolver nombres de host (-n). (Antiguo, usar ip route show).
nan netstat -s Muestra estadísticas detalladas por protocolo.
dig dig google.com Domain Information Groper: Una herramienta más avanzada que nslookup para consultar servidores DNS.
nan dig @8.8.8.8 google.com MX Consulta el servidor DNS 8.8.8.8 para los registros MX de google.com.
nan dig google.com A +short Muestra solo la dirección IP (registro A) de google.com de forma concisa.
ss ss -tulnp Socket Statistics: Más rápido y potente que netstat para listar sockets y conexiones. Los mismos modificadores que netstat.
nan nan nan
nan nan nan

Comandos de Visualización y Edición de Archivos

Comando Ejemplo Explicación
cat cat archivo.txt Muestra el contenido completo de un archivo.
less less archivo_grande.log Permite ver el contenido de un archivo página por página (usa q para salir).
more more archivo.txt Similar a less, pero con menos funcionalidades.
head head -n 10 archivo.log Muestra las primeras líneas de un archivo (por defecto 10).
tail tail -f archivo.log Muestra las últimas líneas de un archivo. -f sigue el archivo en tiempo real (útil para logs).
grep grep "patron" archivo.txt Busca patrones de texto dentro de archivos.
vim / vi vi nombre_archivo.txt Editor de texto potente y omnipresente en Linux. Para guardar y salir: :wq. Para salir sin guardar: :q!.
nano nano nombre_archivo.txt Editor de texto más sencillo e intuitivo, ideal para principiantes.
nan nan nan

Comandos de Monitoreo de Memoria y Espacio en Disco

Comando Ejemplo Explicación
df df -h Muestra el uso de espacio en disco de los sistemas de archivos. -h muestra tamaños legibles.
du du -sh /home/usuario Muestra el uso de espacio en disco de archivos y directorios. -sh muestra el tamaño total del directorio de forma legible.
free free -h Muestra la cantidad de memoria RAM libre y usada. -h muestra tamaños legibles.
top top Muestra los procesos que más recursos consumen en tiempo real. Presiona q para salir.
htop htop Versión mejorada e interactiva de top (requiere instalación).
nan nan nan
nan nan nan

Comandos de Networking

Comando Ejemplo Explicación
ping ping google.com Envía paquetes ICMP a un host para comprobar la conectividad de red.
ifconfig ifconfig Muestra o configura las interfaces de red (en sistemas más nuevos se usa ip a).
ip ip a Muestra las direcciones IP de las interfaces de red. ip r muestra la tabla de ruteo.
netstat netstat -tuln Muestra conexiones de red, tablas de enrutamiento, interfaces y estadísticas. -tuln muestra puertos TCP/UDP escuchando.
ssh ssh usuario@servidor Inicia una sesión segura en un servidor remoto.
scp scp archivo.txt usuario@servidor:/ruta Copia archivos de forma segura entre hosts en la red.
wget wget https://ejemplo.com/archivo.zip Descarga archivos desde la web.
curl curl -O https://ejemplo.com/data.json Herramienta para transferir datos con sintaxis de URL. -O guarda el archivo con el nombre original.
nan nan nan
nan nan nan

Comandos de Gestión de Procesos

Comando Ejemplo Explicación
ps ps aux Muestra los procesos en ejecución. aux muestra todos los procesos de todos los usuarios.
kill kill 1234 Termina un proceso usando su ID de proceso (PID). kill -9 1234 fuerza la terminación.
pkill pkill firefox Termina procesos por nombre.
bg comando & Envía un proceso al segundo plano.
fg fg Trae un proceso del segundo plano al primer plano.
jobs jobs Muestra los trabajos en segundo plano.

Exportar a Hojas de cálculo

Comandos de Permisos y Propiedad

Comando Ejemplo Explicación
chmod chmod 755 archivo.sh Cambia los permisos de archivos o directorios. 755 (rwx r-x r-x) da permisos de lectura, escritura y ejecución al propietario, y solo lectura y ejecución a grupo y otros.
chown chown usuario:grupo archivo.txt Cambia el propietario y/o grupo de un archivo o directorio.
sudo sudo apt update Ejecuta un comando con privilegios de superusuario.
nan nan nan
nan nan nan

Comandos de Archivo y Compresión

Comando Ejemplo Explicación
tar tar -czvf archivo.tar.gz directorio/ Archiva y comprime directorios. -c crear, -z gzip, -v verbose, -f archivo. Para descomprimir: tar -xzvf archivo.tar.gz.
gzip gzip archivo.txt Comprime un archivo. Crea archivo.txt.gz. Para descomprimir: gunzip archivo.txt.gz.
zip zip -r archivo.zip directorio/ Comprime archivos y directorios en formato ZIP. Para descomprimir: unzip archivo.zip.
nan nan nan

Comandos de Gestión de Servicios

La forma en que se gestionan los servicios en Linux ha evolucionado. Originalmente, se usaban scripts SysVinit, luego Upstart, y hoy en día, el sistema predominante es systemd. Nos centraremos en los comandos de systemd, ya que son los más comunes en las distribuciones modernas (Ubuntu, Debian, Fedora, CentOS, etc.).

Comando Ejemplo Explicación
systemctl systemctl status sshd Muestra el estado actual de un servicio (sshd para el servidor SSH), indicando si está activo, inactivo, habilitado al inicio, etc.
nan systemctl start apache2 Inicia un servicio.
nan systemctl stop nginx Detiene un servicio.
nan systemctl restart mysql Reinicia un servicio.
nan systemctl enable ssh Habilita un servicio para que se inicie automáticamente con el sistema (persistente a los reinicios).
nan systemctl disable bluetooth Deshabilita un servicio para que no se inicie automáticamente.
nan systemctl is-enabled ufw Verifica si un servicio está habilitado para iniciar al arranque (devuelve "enabled" o "disabled").
nan systemctl is-active network-manager Verifica si un servicio está actualmente en ejecución (devuelve "active" o "inactive").
nan systemctl list-units --type=service Lista todos los servicios (.service unidades) cargados en el sistema.
nan systemctl list-unit-files --type=service Lista todos los archivos de unidades de servicio y su estado de habilitación (enabled, disabled, static).
nan systemctl daemon-reload Recarga la configuración de systemd. Necesario después de modificar archivos de unidades de servicio manualmente.

Exportar a Hojas de cálculo

Comandos para Ver y Analizar Logs

Los logs son cruciales para entender qué está pasando en tu sistema, depurar errores y monitorear la seguridad. En Linux, muchos logs importantes se encuentran en el directorio /var/log.

Comando Ejemplo Explicación
journalctl journalctl Systemd Journal: Herramienta para consultar y visualizar el "journal" de systemd, que centraliza logs de todo el sistema. Muestra el log completo del sistema, de los más recientes a los más antiguos.
nan journalctl -u nginx.service Muestra los logs específicos de una unidad de servicio (ej., Nginx).
nan journalctl -f Sigue los logs en tiempo real, similar a tail -f. Útil para depurar servicios activos.
nan journalctl -p err Muestra solo los mensajes de log con un nivel de prioridad de "error" o superior. Otros niveles: emerg, alert, crit, warning, notice, info, debug.
nan journalctl --since "2025-06-29 10:00:00" Muestra logs desde una fecha y hora específicas. Puedes usar formatos como "yesterday", "1 hour ago", etc.
nan journalctl --until "2025-06-30 09:00:00" Muestra logs hasta una fecha y hora específicas.
nan journalctl -k Muestra solo los mensajes de log del kernel.
nan journalctl -b Muestra los logs del arranque actual del sistema. journalctl -b -1 muestra los logs del arranque anterior.
nan journalctl _PID=1234 Muestra los logs generados por un proceso con un PID específico.
nan journalctl -o json Muestra los logs en formato JSON, útil para análisis programático.
tail tail -f /var/log/syslog File End: Muestra las últimas líneas de un archivo. -f ("follow") es fundamental para monitorear logs en tiempo real a medida que se escriben.
nan tail -n 50 /var/log/auth.log Muestra las últimas 50 líneas del archivo especificado.
cat cat /var/log/nginx/access.log Concatenate: Muestra el contenido completo de un archivo de log. Util para logs pequeños o para ver el principio.
less less /var/log/dmesg Less: Permite ver el contenido de un archivo de log página por página. Es ideal para archivos grandes, ya que no carga todo el archivo en memoria. Usa Flechas o PgUp/PgDn para navegar, / para buscar, y q para salir.
grep grep "error" /var/log/apache2/error.log Global Regular Expression Print: Filtra líneas que coincidan con un patrón dentro de un archivo de log. Muy potente para buscar errores, advertencias o mensajes específicos.
nan grep -i "failed password" /var/log/auth.log Busca "failed password" ignorando mayúsculas/minúsculas (-i) en el log de autenticación.
nan grep -v "info" /var/log/syslog Muestra todas las líneas que NO contienen el patrón "info" (-v para invertir la coincidencia).
nan grep -C 3 "warning" /var/log/messages Muestra las líneas que contienen "warning" y 3 líneas de contexto antes y después (-C 3).
awk awk '{print $1, $4}' /var/log/access.log Aho, Weinberger, Kernighan: Un lenguaje de procesamiento de texto muy potente para analizar y manipular datos de logs. Este ejemplo imprime el primer y cuarto campo de cada línea.
sed sed 's/old_text/new_text/g' /var/log/app.log Stream Editor: Otro potente editor de flujo para transformar texto. Este ejemplo reemplaza todas las ocurrencias de "old_text" por "new_text".
zcat / zgrep zcat /var/log/syslog.1.gz Zipped Cat/Grep: Utilidades para trabajar directamente con archivos de log comprimidos (.gz) sin necesidad de descomprimirlos primero. zgrep "error" /var/log/apache2/*.gz busca en todos los logs comprimidos de Apache.

Vim

Comandos Básicos de Navegación en Vim

Comando Ejemplo Explicación
h h Mueve el cursor un carácter a la izquierda.
j j Mueve el cursor una línea hacia abajo.
k k Mueve el cursor una línea hacia arriba.
l l Mueve el cursor un carácter a la derecha.
w w Mueve el cursor al inicio de la siguiente palabra.
b b Mueve el cursor al inicio de la palabra anterior.
e e Mueve el cursor al final de la palabra actual.
0 (cero) 0 Mueve el cursor al principio de la línea actual.
$ $ Mueve el cursor al final de la línea actual.
gg gg Mueve el cursor a la primera línea del archivo.
G G Mueve el cursor a la última línea del archivo.
Ctrl + f Ctrl + f Avanza una pantalla completa.
Ctrl + b Ctrl + b Retrocede una pantalla completa.
número + G 10G Mueve el cursor a la línea especificada (en este caso, a la línea 10).
nan nan nan
nan nan nan

Modos de Vim

Vim tiene diferentes modos de operación. Es fundamental entenderlos:

Modo Normal (Command Mode): Es el modo por defecto al iniciar Vim. Desde aquí, puedes navegar, eliminar, copiar y pegar texto usando comandos de una o dos letras.

Modo Inserción (Insert Mode): Para ingresar a este modo, presiona i, a, o, etc. En este modo, puedes escribir texto normalmente. Para salir y volver al Modo Normal, presiona Esc.

Modo Visual (Visual Mode): Para seleccionar texto. Presiona v para selección por carácter, V para selección por línea o Ctrl + v para selección en bloque.

Modo Línea de Comandos (Command-Line Mode / Ex Mode): Para ejecutar comandos de Vim. Se accede presionando : desde el Modo Normal.

Comandos de Edición en Vim (Modo Normal)

Comando Ejemplo Explicación
i i Entra en Modo Inserción antes del cursor.
a a Entra en Modo Inserción después del cursor.
o o Entra en Modo Inserción en una nueva línea debajo de la actual.
O O Entra en Modo Inserción en una nueva línea encima de la actual.
dd dd Elimina la línea actual.
dw dw Elimina la palabra desde el cursor hasta el final.
d$ d$ Elimina desde el cursor hasta el final de la línea.
x x Elimina el carácter bajo el cursor.
yy yy Copia la línea actual.
yw yw Copia la palabra desde el cursor hasta el final.
y$ y$ Copia desde el cursor hasta el final de la línea.
p p Pega el contenido copiado o cortado después del cursor/línea.
P P Pega el contenido copiado o cortado antes del cursor/línea.
u u Deshace la última acción.
Ctrl + r Ctrl + r Rehace la última acción deshecha.
r ra Reemplaza el carácter bajo el cursor por el que se teclee (a en el ejemplo).
R R Entra en modo de reemplazo (sobrescribe texto). Presiona Esc para salir.
~ ~ Cambia la capitalización del carácter bajo el cursor.
.` (punto) . Repite la última acción de edición.
nan nan nan
nan nan nan

Comandos de Búsqueda y Reemplazo en Vim

Comando Ejemplo Explicación
/ /patron Busca hacia adelante el "patron". Presiona n para siguiente, N para anterior.
? ?patron Busca hacia atrás el "patron". Presiona n para siguiente, N para anterior.
: :%s/viejo/nuevo/g Reemplaza todas las ocurrencias de "viejo" por "nuevo" en todo el archivo (% para todo el archivo, g para global).
: :%s/viejo/nuevo/gc Similar al anterior, pero pregunta antes de cada reemplazo (c para confirmar).
nan nan nan
nan nan nan

Comandos de Guardar y Salir en Vim (Modo Línea de Comandos)

Comando Ejemplo Explicación
:w :w Guarda el archivo.
:q :q Sale de Vim (si no hay cambios sin guardar).
:wq :wq Guarda el archivo y sale de Vim.
:x :x Igual que :wq.
:q! :q! Sale de Vim sin guardar los cambios (ignora las modificaciones).
:w! :w! Guarda el archivo forzando la escritura (útil si los permisos son restrictivos).
:wq! :wq! Guarda el archivo forzando la escritura y sale.
nan nan nan
nan nan nan

Comandos Adicionales y Trucos de Vim

Comando Ejemplo Explicación
Ctrl + [ Ctrl + [ Equivalente a Esc para salir del Modo Inserción.
número + dd 5dd Elimina 5 líneas.
número + yy 3yy Copia 3 líneas.
Ctrl + v Ctrl + v y luego I Para edición en bloque: selecciona el bloque, presiona I (mayúscula), escribe texto y presiona Esc.
J J Une la línea actual con la siguiente.
ciw ciw Elimina la palabra actual y entra en Modo Inserción.
cis cis Elimina la sentencia actual y entra en Modo Inserción.
dip dip Elimina el párrafo actual.
:%s//g :%s/foo/bar/g seguido de u Deshace el último reemplazo global.
:e! :e! Recarga el archivo desde el disco, descartando los cambios locales.
:set nu :set nu Muestra los números de línea. Para ocultarlos: :set nonu.
:set ic :set ic Ignora mayúsculas/minúsculas en las búsquedas. Para desactivar: :set noic.

Git Bash

Comandos Básicos de Git para Operación Diaria

Comando Ejemplo Explicación
git init git init Inicializa un nuevo repositorio Git en el directorio actual.
git clone git clone https://github.com/usuario/repo.git Clona un repositorio existente desde una URL remota a tu máquina local.
git status git status Muestra el estado actual del repositorio: archivos modificados, nuevos, en stage, etc. Es tu mejor amigo para saber qué está pasando.
git add git add . Añade los cambios de archivos al área de "staging" (para ser incluidos en el próximo commit). . añade todos los archivos nuevos/modificados. git add archivo.txt añade un archivo específico.
git commit git commit -m "Mensaje descriptivo del commit" Guarda los cambios del área de staging en el historial del repositorio. -m permite añadir un mensaje conciso directamente.
nan git commit -am "Mensaje" Combina git add . y git commit -m para archivos ya rastreados (que no son nuevos). ¡Muy útil para cambios rápidos!
git push git push origin main Sube los commits locales al repositorio remoto. origin es el nombre predeterminado del remoto, main la rama.
git pull git pull origin main Descarga los cambios del repositorio remoto y los fusiona con tu rama local actual.

Exportar a Hojas de cálculo

Comandos para Gestión y Navegación de Ramas (Branches)

Las ramas son fundamentales en Git para el desarrollo colaborativo y organizado.

Comando Ejemplo Explicación
git branch git branch Lista todas las ramas locales. La rama actual se marca con un asterisco.
nan git branch nueva-feature Crea una nueva rama llamada nueva-feature.
nan git branch -d vieja-rama Elimina una rama local (solo si está fusionada). git branch -D la elimina forzosamente.
git checkout git checkout nueva-feature Cambia a otra rama (o a un commit específico).
nan git checkout -b nueva-feature Crea una nueva rama y cambia a ella en un solo paso. ¡Muy común!
nan git checkout main Vuelve a la rama main (o master).
nan git checkout -- archivo.txt Descarta los cambios locales en un archivo específico, restaurándolo a la última versión del commit. ¡Cuidado, se pierden los cambios!
git switch git switch nueva-feature Una alternativa más moderna y clara a git checkout para cambiar de rama.
nan git switch -c nueva-feature Crea una nueva rama y cambia a ella (alternativa a git checkout -b).
git merge git merge feature-a Fusiona los cambios de la rama feature-a en tu rama actual.
git rebase git rebase main Reorganiza los commits de tu rama sobre otra (ej., main), creando un historial de commits lineal y limpio. Requiere comprender bien su funcionamiento para evitar problemas.

Exportar a Hojas de cálculo

Comandos de Revisión de Historial y Diferencias

Comandos esenciales para entender el historial de tu proyecto y ver los cambios.

Comando Ejemplo Explicación
git log git log Muestra el historial de commits del repositorio.
nan git log --oneline Muestra el historial de commits de forma concisa (una línea por commit).
nan git log --graph --oneline --all Muestra el historial en un gráfico de árbol ASCII, ideal para visualizar ramas y fusiones.
nan git log -p Muestra el historial de commits junto con los cambios (diff) introducidos por cada commit.
nan git log --author="Tu Nombre" Filtra los commits por autor.
nan git log --grep="bugfix" Filtra los commits por contenido en el mensaje del commit.
git diff git diff Muestra las diferencias entre el directorio de trabajo y el área de staging.
nan git diff --staged Muestra las diferencias entre el área de staging y el último commit.
nan git diff HEAD~1 HEAD Muestra las diferencias entre el commit anterior (HEAD~1) y el commit actual (HEAD).
nan git diff rama-a rama-b Muestra las diferencias entre dos ramas.
git show git show <commit_hash> Muestra los detalles de un commit específico, incluyendo los cambios introducidos.

Exportar a Hojas de cálculo

Comandos para Deshacer Cambios y Limpieza

Inevitables para corregir errores o limpiar tu área de trabajo.

Comando Ejemplo Explicación
git restore git restore archivo.txt Deshace los cambios locales en un archivo específico (lo restaura a la última versión del commit o del stage). Similar a git checkout -- archivo.txt.
nan git restore --staged archivo.txt Desquita un archivo del área de staging, pero mantiene los cambios locales.
git reset git reset HEAD~1 Mueve la rama actual hacia atrás un commit, manteniendo los cambios en el directorio de trabajo (modo --soft por defecto si no se especifica). git reset --hard HEAD~1 descarta los cambios y los elimina del historial. ¡Cuidado con --hard!
git revert git revert <commit_hash> Crea un nuevo commit que deshace los cambios de un commit anterior. Esto es más seguro que git reset --hard porque mantiene el historial.
git clean git clean -n Muestra qué archivos no rastreados (que no están en Git) serían eliminados (simulación).
nan git clean -f Elimina los archivos no rastreados del directorio de trabajo. (-f es forzar).
nan git clean -df Elimina archivos y directorios no rastreados (-d).
git stash git stash save "Mensaje opcional" Guarda temporalmente los cambios sin commit para poder cambiar de rama o realizar otra tarea.
nan git stash list Lista los stashes guardados.
nan git stash pop Aplica el stash más reciente y lo elimina de la lista de stashes.
nan git stash apply Aplica el stash más reciente, pero lo mantiene en la lista de stashes.

Exportar a Hojas de cálculo

Comandos para Colaboración y Repositorios Remotos

Comando Ejemplo Explicación
git remote git remote -v Muestra los repositorios remotos configurados y sus URLs.
nan git remote add upstream https://github.com/original/repo.git Añade un nuevo remoto, útil para repositorios bifurcados (forks) para sincronizar con el proyecto original.
git fetch git fetch origin Descarga los cambios del remoto, pero no los fusiona automáticamente con tu rama local (útil para revisar antes de fusionar).

Docker

Comandos Básicos de Docker para Operación Diaria

Estos comandos te permitirán interactuar con contenedores e imágenes Docker.

Comando Ejemplo Explicación
docker run docker run -p 80:80 nginx Crea y ejecuta un nuevo contenedor a partir de una imagen. -p mapea puertos (local:contenedor). nginx es la imagen.
nan docker run -d --name mi-web-app -p 8080:80 mi-imagen-personal Ejecuta un contenedor en segundo plano (-d), le asigna un nombre (--name), y mapea un puerto.
nan docker run -it ubuntu /bin/bash Ejecuta un contenedor en modo interactivo (-it) y abre una shell (/bin/bash). Útil para explorar la imagen.
docker ps docker ps Lista los contenedores en ejecución.
nan docker ps -a Lista todos los contenedores, incluyendo los que no están en ejecución.
docker stop docker stop mi-contenedor Detiene un contenedor en ejecución (envía una señal SIGTERM, permitiendo una salida limpia).
nan docker stop $(docker ps -aq) Detiene todos los contenedores en ejecución.
docker start docker start mi-contenedor Inicia un contenedor detenido.
docker restart docker restart mi-contenedor Reinicia un contenedor.
docker rm docker rm mi-contenedor Elimina un contenedor detenido.
nan docker rm -f mi-contenedor Elimina un contenedor en ejecución de forma forzada (-f).
nan docker rm $(docker ps -aq) Elimina todos los contenedores (activos y detenidos).

Exportar a Hojas de cálculo

Comandos para Gestión de Imágenes Docker

Las imágenes son las plantillas a partir de las cuales se crean los contenedores.

Comando Ejemplo Explicación
docker images docker images Lista las imágenes Docker disponibles localmente.
nan docker images -a Lista todas las imágenes, incluyendo las capas intermedias.
docker pull docker pull ubuntu:latest Descarga una imagen desde Docker Hub (o un registro configurado). latest es el tag predeterminado.
docker build docker build -t mi-app:1.0 . Construye una imagen Docker a partir de un Dockerfile. -t para asignar un tag (nombre:versión). El . indica el contexto de la construcción.
docker rmi docker rmi mi-imagen:1.0 Elimina una imagen localmente. Primero debes eliminar los contenedores que la usan.
nan docker rmi -f mi-imagen Fuerza la eliminación de una imagen, incluso si hay contenedores que la usan.
docker push docker push usuario/mi-imagen:1.0 Sube una imagen a un registro remoto como Docker Hub. Requiere docker login.
docker search docker search ubuntu Busca imágenes en Docker Hub.

Exportar a Hojas de cálculo

Comandos para Inspección y Depuración

Estos comandos son clave para entender qué está pasando dentro de tus contenedores.

Comando Ejemplo Explicación
docker logs docker logs mi-contenedor Muestra los logs de un contenedor.
nan docker logs -f mi-contenedor Sigue los logs de un contenedor en tiempo real (-f).
nan docker logs --tail 100 mi-contenedor Muestra las últimas 100 líneas de los logs.
docker exec docker exec -it mi-contenedor /bin/bash Ejecuta un comando dentro de un contenedor en ejecución. Es tu forma de acceder a la shell de un contenedor.
nan docker exec mi-contenedor ls -l /app Ejecuta un comando no interactivo dentro del contenedor.
docker inspect docker inspect mi-contenedor Muestra información de bajo nivel sobre un contenedor (configuración, estado, red, volúmenes, etc.) en formato JSON.
nan docker inspect mi-imagen Muestra información detallada sobre una imagen.
docker stats docker stats Muestra un flujo en vivo de métricas de uso de CPU, memoria, E/S de red y disco para todos los contenedores en ejecución.

Exportar a Hojas de cálculo

Comandos para Gestión de Redes y Volúmenes

Docker permite crear redes y volúmenes para una mejor gestión de la comunicación y la persistencia de datos.

Comando Ejemplo Explicación
docker network docker network ls Lista las redes Docker disponibles.
nan docker network create mi-red-personal Crea una nueva red definida por el usuario.
nan docker network connect mi-red-personal mi-contenedor Conecta un contenedor a una red específica.
nan docker network inspect bridge Muestra detalles de una red, incluyendo los contenedores conectados.
docker volume docker volume ls Lista los volúmenes Docker disponibles.
nan docker volume create mi-volumen-datos Crea un nuevo volumen Docker.
nan docker run -v mi-volumen-datos:/app/data mi-app Ejecuta un contenedor y monta un volumen en una ruta específica dentro del contenedor.
nan docker volume inspect mi-volumen-datos Muestra detalles de un volumen.
nan docker volume rm mi-volumen-datos Elimina un volumen (solo si no está en uso).

Exportar a Hojas de cálculo

Comandos de Limpieza de Recursos

Es crucial limpiar los recursos de Docker para evitar que ocupen demasiado espacio.

Comando Ejemplo Explicación
docker system prune docker system prune Elimina datos de Docker no utilizados: contenedores detenidos, redes no usadas, imágenes colgantes (dangling images) y el caché de construcción.
nan docker system prune -a Elimina todos los objetos no utilizados, incluyendo imágenes no usadas por ningún contenedor. ¡Cuidado!
docker container prune docker container prune Elimina solo los contenedores detenidos.
docker image prune docker image prune Elimina solo las imágenes colgantes (imágenes que no están asociadas a ningún tag ni son usadas por ningún contenedor).
nan docker image prune -a Elimina todas las imágenes no usadas por ningún contenedor.

Exportar a Hojas de cálculo

Terraform

Comandos de Terraform para Operación Diaria

Terraform se basa en un ciclo de vida de init -> plan -> apply.

Comando Ejemplo Explicación
terraform init terraform init Inicializa un directorio de trabajo de Terraform. Descarga los plugins de los proveedores necesarios (AWS, Azure, Google Cloud, etc.) y configura el backend para almacenar el estado. Es el primer comando que debes ejecutar en un nuevo proyecto.
nan terraform init -backend-config="bucket=mybucket" Inicializa con configuraciones específicas para el backend (ej. para un bucket S3 de estado remoto).
terraform validate terraform validate Valida la sintaxis de tus archivos de configuración (.tf). Comprueba si el código es sintácticamente correcto y coherente con las configuraciones del proveedor.
terraform plan terraform plan Genera un plan de ejecución. Muestra qué acciones Terraform realizará (crear, modificar, destruir recursos) sin ejecutarlas realmente. Es crucial para revisar y evitar sorpresas.
nan terraform plan -out="mi_plan.tfplan" Guarda el plan de ejecución en un archivo. Útil para revisión manual o para pasar a terraform apply sin que se recalcule el plan.
nan terraform plan -var="region=us-east-1" Pasa una variable de entorno al plan. Las variables se definen en archivos .tfvars o directamente en línea.
terraform apply terraform apply Ejecuta las acciones definidas en el plan. Este comando crea, actualiza o destruye los recursos en tu infraestructura real según la configuración de Terraform. Te pedirá confirmación antes de ejecutar.
nan terraform apply "mi_plan.tfplan" Aplica un plan previamente guardado. Esto garantiza que exactamente lo que viste en el plan es lo que se aplica.
nan terraform apply -auto-approve Ejecuta el apply sin pedir confirmación. ¡Úsalo con extrema precaución, preferentemente en entornos CI/CD!
terraform destroy terraform destroy Elimina todos los recursos gestionados por la configuración de Terraform. Este comando desaprovisiona la infraestructura. Te pedirá confirmación.
nan terraform destroy -auto-approve Destruye recursos sin pedir confirmación. ¡MUY PELIGROSO! No usar en producción.

Exportar a Hojas de cálculo

Comandos para Gestión del Estado de Terraform

El "estado" de Terraform (terraform.tfstate) es un archivo JSON que mapea tus recursos de configuración a los recursos reales en la nube.

Comando Ejemplo Explicación
terraform state terraform state list Lista todos los recursos gestionados en el archivo de estado actual.
nan terraform state show aws_instance.my_server Muestra los atributos detallados de un recurso específico en el estado.
nan terraform state rm aws_instance.old_server Elimina un recurso del archivo de estado. ¡No elimina el recurso real! Útil si Terraform perdió el control de un recurso o para importarlo.
terraform import terraform import aws_instance.existing_server i-0abcdef1234567890 Importa un recurso existente de la infraestructura a tu estado de Terraform, permitiendo que Terraform lo gestione. Requiere un bloque resource correspondiente en tu código.
terraform output terraform output Muestra los valores de salida (outputs) definidos en tu configuración de Terraform.
nan terraform output my_instance_ip Muestra el valor de una salida específica.
nan terraform output -json Muestra los outputs en formato JSON.

Exportar a Hojas de cálculo

Comandos Adicionales y Herramientas Útiles

Comando Ejemplo Explicación
terraform fmt terraform fmt Formatea tus archivos .tf para que tengan un estilo consistente y legible. ¡Muy recomendable usarlo siempre!
terraform graph terraform graph > graph.dot Genera una representación visual de tu plan de ejecución en formato DOT. Puedes usar Graphviz para convertirlo a una imagen (ej. dot -Tpng graph.dot -o graph.png).
terraform console terraform console Abre una consola interactiva para evaluar expresiones de Terraform y depurar variables o lógica.
terraform workspace terraform workspace list Lista los workspaces (espacios de trabajo) disponibles. Permite usar la misma configuración con diferentes estados (ej. dev, staging, prod).
nan terraform workspace new dev Crea un nuevo workspace.
nan terraform workspace select dev Cambia al workspace especificado.
terraform taint terraform taint aws_instance.my_server Marca un recurso como "tainted" (contaminado), forzando a Terraform a destruirlo y recrearlo en el siguiente apply.
terraform untaint terraform untaint aws_instance.my_server Quita el "taint" de un recurso.

Kubernetes

Comandos Básicos de kubectl para Operación Diaria

kubectl es la herramienta de línea de comandos para interactuar con un clúster de Kubernetes.

Comando Ejemplo Explicación
kubectl config kubectl config get-contexts Muestra los contextos de configuración disponibles. Un contexto define un clúster, un usuario y un namespace.
nan kubectl config use-context mi-cluester Cambia al contexto especificado para apuntar a un clúster diferente.
kubectl apply kubectl apply -f deployment.yaml Aplica una configuración a un recurso de Kubernetes. Crea o actualiza recursos según un archivo YAML/JSON.
kubectl get kubectl get pods Lista los recursos de un tipo específico (ej. pods). Puedes usar alias como po, deploy, svc.
nan kubectl get pods -o wide Muestra información detallada de los pods, incluyendo la IP del nodo y del pod.
nan kubectl get deployments -n mi-namespace Muestra los deployments en un namespace específico. -n para namespace.
nan kubectl get all Muestra un resumen de los recursos más comunes (pods, deployments, services, replicasets) en el namespace actual.
kubectl describe kubectl describe pod mi-pod-123 Muestra información detallada de un recurso específico, incluyendo eventos, estado, configuraciones, etc. Indispensable para depuración.
nan kubectl describe svc mi-servicio Muestra detalles de un servicio, incluyendo sus endpoints.
kubectl delete kubectl delete -f deployment.yaml Elimina recursos definidos en un archivo YAML/JSON.
nan kubectl delete pod mi-pod Elimina un recurso específico.
nan kubectl delete deploy --all Elimina todos los deployments en el namespace actual.

Exportar a Hojas de cálculo

Comandos para Depuración y Troubleshooting de Pods

Cuando algo no funciona como esperas, estos comandos son tu primera línea de defensa.

Comando Ejemplo Explicación
kubectl logs kubectl logs mi-pod-123 Muestra los logs de un contenedor dentro de un pod. Si hay varios contenedores, especifica con -c.
nan kubectl logs -f mi-pod-123 -c mi-contenedor Sigue los logs de un contenedor específico en tiempo real (-f).
nan kubectl logs --tail=100 mi-pod-123 Muestra las últimas 100 líneas de los logs de un pod.
kubectl exec kubectl exec -it mi-pod-123 -- /bin/bash Ejecuta un comando en un contenedor dentro de un pod. -i para interactivo, -t para TTY. Útil para acceder a la shell de un contenedor.
nan kubectl exec mi-pod-123 -- ls -l /app Ejecuta un comando no interactivo dentro del contenedor.
kubectl port-forward kubectl port-forward mi-pod-123 8080:80 Abre un túnel para acceder a un puerto de un pod localmente. Mapea el puerto local 8080 al puerto 80 del pod.
kubectl top kubectl top pod mi-pod-123 Muestra el uso de CPU y memoria de los pods o nodos (requiere el Metrics Server en el clúster).
nan kubectl top node Muestra el uso de CPU y memoria de los nodos.

Exportar a Hojas de cálculo

Comandos para Gestión de Namespaces y Contextos

Los Namespaces te ayudan a organizar recursos en entornos aislados dentro del mismo clúster.

Comando Ejemplo Explicación
kubectl get ns kubectl get namespaces Lista todos los namespaces disponibles en el clúster.
kubectl create ns kubectl create namespace dev Crea un nuevo namespace llamado dev.
kubectl delete ns kubectl delete namespace old-project Elimina un namespace y todos los recursos contenidos en él. ¡Cuidado!
kubectl config set-context kubectl config set-context $(kubectl config current-context) --namespace=dev Cambia el namespace por defecto para el contexto actual. Los comandos futuros apuntarán a este namespace.
nan kubectl config unset contexts.$(kubectl config current-context).namespace Elimina el namespace por defecto del contexto actual.

Exportar a Hojas de cálculo

Comandos para Gestión de Configuraciones (ConfigMaps y Secrets)

Permiten desacoplar la configuración y las credenciales de tus aplicaciones de la imagen del contenedor.

Comando Ejemplo Explicación
kubectl create configmap kubectl create configmap mi-config --from-literal=clave=valor Crea un ConfigMap a partir de un valor literal.
nan kubectl create configmap app-config --from-file=./app.properties Crea un ConfigMap a partir de un archivo.
kubectl get cm kubectl get configmaps Lista los ConfigMaps.
kubectl describe cm kubectl describe configmap mi-config Muestra los detalles de un ConfigMap, incluyendo sus datos.
kubectl create secret kubectl create secret generic mi-db-pass --from-literal=password=supersecret Crea un Secret genérico a partir de un valor literal.
nan kubectl create secret docker-registry mi-reg-cred --docker-server=... --docker-username=... Crea un Secret para autenticación con un registro de Docker.
kubectl get secret kubectl get secrets Lista los Secrets. Los datos están codificados en base64.

Exportar a Hojas de cálculo

Comandos para Escalado y Actualizaciones (Deployments)

Gestionar el número de réplicas de tus aplicaciones y desplegar nuevas versiones.

Comando Ejemplo Explicación
kubectl scale kubectl scale deployment mi-app --replicas=3 Escala el número de réplicas de un deployment a 3.
kubectl rollout status kubectl rollout status deployment/mi-app Muestra el estado de un rollout (actualización) en progreso para un deployment.
kubectl rollout history kubectl rollout history deployment/mi-app Muestra el historial de rollouts para un deployment.
kubectl rollout undo kubectl rollout undo deployment/mi-app Deshace el último rollout, volviendo a la versión anterior.
kubectl set image kubectl set image deployment/mi-app mi-app=mi-imagen:v2.0 Actualiza la imagen de un contenedor dentro de un deployment. Inicia un nuevo rollout.

Exportar a Hojas de cálculo

Terraform Cloud

Terraform Cloud (app.terraform.io), lo cual es excelente porque simplifica mucho la gestión del estado y la colaboración en equipos. Si bien el proceso lógico de revisión y mantenimiento es consistente, Terraform Cloud añade una capa de automatización y herramientas web que lo hacen más eficiente.

Aquí tienes una guía paso a paso de las operaciones diarias comunes en Terraform Cloud, con un enfoque en la revisión y el mantenimiento desde la interfaz web.

Guía Paso a Paso para Operaciones Diarias en Terraform Cloud

Terraform Cloud centraliza el estado, los logs, las variables y la ejecución de Terraform, haciendo que la colaboración y el mantenimiento sean más robustos.

1. Entender la Estructura Básica en Terraform Cloud

Organización: Es tu cuenta de Terraform Cloud. Dentro de ella, tienes varios Workspaces.

Workspace: Es el corazón de cada proyecto de Terraform. Cada workspace está asociado a un directorio de tu repositorio Git y gestiona su propio estado de Terraform. Es donde se ejecutan los terraform plan y terraform apply.

VCS (Version Control System) Integration: Generalmente, tus workspaces estarán conectados a un repositorio Git (GitHub, GitLab, Bitbucket, Azure DevOps). Los cambios en tu código Terraform (.tf files) en el repositorio desencadenan ejecuciones automáticas en Terraform Cloud.

2. Ciclo Diario de Desarrollo y Despliegue con Terraform Cloud

El flujo de trabajo más común implica cambios en el código y el monitoreo de las ejecuciones.

Paso 1: Hacer Cambios en el Código Terraform (Localmente en tu IDE)

1. Clonar el Repositorio: Asegúrate de tener el repositorio Git de tu infraestructura clonado localmente.

2. Crear una Rama: Siempre trabaja en una nueva rama para tus cambios. Esto es una buena práctica de Git y es crucial para el flujo de Terraform Cloud:

Bash

git checkout -b feature/nueva-vpc

3. Modificar el Código: Abre tus archivos .tf en VS Code (o tu IDE preferido) y realiza los cambios necesarios (ej., añadir un nuevo recurso, modificar una configuración, etc.).

4. Validar y Formatear (Opcional, pero Recomendado): Antes de subir tus cambios, puedes ejecutar las validaciones básicas localmente:

Bash

terraform validate

terraform fmt

Si usas la extensión de Terraform en VS Code, terraform fmt a menudo se ejecuta al guardar el archivo.

5. Confirmar y Subir Cambios: Guarda tus cambios, haz un commit y súbelos a tu rama en el repositorio remoto:

Bash

git add .

git commit -m "feat: Añadir nueva VPC para desarrollo"

git push origin feature/nueva-vpc

Paso 2: Revisar la Ejecución del Plan en Terraform Cloud (Interfaz Web)

Una vez que subes tus cambios a una rama conectada a un workspace en Terraform Cloud, este detectará los cambios y automáticamente iniciará un terraform plan.

1. Acceder a la Ejecución:

Ve a app.terraform.io e inicia sesión.

En tu Organización, navega al Workspace relevante.

En la sección "Runs" (Ejecuciones), verás la nueva ejecución desencadenada por tu git push. Haz clic en ella.

2. Revisar el Plan:

La página de la ejecución mostrará los diferentes pasos (Planificación, Aplicación, Completado).

Haz clic en la pestaña "Plan" para ver el resultado detallado del terraform plan.

¡Analiza cuidadosamente los cambios propuestos! Busca:

Recursos a añadir (+): ¿Son los recursos que esperabas crear?

Recursos a modificar (~): ¿Las modificaciones son correctas y no afectan a otros recursos inesperadamente?

Recursos a destruir (-): ¿Se van a eliminar recursos que deben permanecer? (Esto es crítico y a menudo indica un error en la configuración).

Recursos que se reemplazarán (taint/replace): Indica que un recurso será destruido y recreado. Esto puede causar interrupciones.

Si el plan no es lo que esperabas, vuelve a tu código local, corrige y sube los cambios de nuevo. Terraform Cloud iniciará una nueva ejecución.

3. Compartir para Revisión (si aplica): Si trabajas en equipo, este es el momento de compartir el enlace de la ejecución con tus compañeros para que revisen el plan. Es una de las grandes ventajas de Terraform Cloud, ya que todos pueden ver el plan exacto.

Paso 3: Aplicar los Cambios (Interfaz Web)

Una vez que el plan es revisado y aprobado (por ti o por tu equipo).

1. Confirmar Aplicación:

En la página de la ejecución del plan, si el plan es satisfactorio, verás un botón "Confirm & Apply" (Confirmar y Aplicar).

Haz clic en él. Te pedirá una confirmación adicional.

2. Monitorear la Aplicación:

Terraform Cloud ejecutará el terraform apply. Puedes ver los logs de la aplicación en tiempo real en la pestaña "Apply" de la ejecución.

Espera a que la ejecución finalice y muestre "Applied" o "Completed".

3. Verificar en la Nube: Después de un apply exitoso, es una buena práctica ir a la consola de tu proveedor de nube (AWS, Azure, GCP) y verificar que los recursos se crearon o modificaron como se esperaba.

Paso 4: Fusionar la Rama (Git)

Una vez que la infraestructura se ha aplicado correctamente.

1. Fusionar la Rama: Si trabajas en equipo y tu ejecución fue desde una rama de característica, ahora es el momento de fusionar esa rama a tu rama principal (ej., main o master). Esto suele hacerse a través de una Pull Request (PR) o Merge Request (MR) en tu sistema de control de versiones.

Al fusionar, Terraform Cloud puede configurarse para ejecutar un nuevo plan en la rama principal, o incluso un apply automático si la política lo permite (para entornos de CD).

3. Operaciones de Mantenimiento y Revisión desde Terraform Cloud

Además del ciclo de despliegue, Terraform Cloud ofrece herramientas para el mantenimiento y la auditoría.

1. Revisar el Estado (State)

Acceder al Estado: En el Workspace, ve a la sección "States".

Ver Historial: Aquí verás el historial de todos los archivos de estado guardados. Puedes descargar versiones anteriores del estado si necesitas analizarlas.

Inspeccionar Recursos: Dentro de cada estado, puedes hacer clic en "Inspect" para ver un listado de todos los recursos gestionados y sus atributos actuales. Es muy útil para auditar lo que Terraform cree que existe en tu infraestructura.

2. Gestión de Variables

Configurar Variables: En el Workspace, ve a "Variables".

Tipos de Variables: Puedes definir:

Environment Variables: Variables de entorno para el proceso de Terraform.

Terraform Variables: Variables definidas en tu código Terraform (variable "name" {}).

Sensitive: Marca las variables sensibles (contraseñas, claves API) para que no aparezcan en los logs de la UI.

Uso: Mantén aquí las credenciales del proveedor, regiones, o cualquier valor que cambie entre entornos sin modificar el código.

3. Auditoría de Ejecuciones (Runs)

Historial Completo: La sección "Runs" es tu registro de auditoría. Puedes ver quién inició una ejecución, cuándo, qué rama se usó, el estado final (aplicado, fallido, cancelado) y acceder a los logs completos.

Filtrar: Usa los filtros para buscar ejecuciones por estado, usuario o fecha.

4. Gestión de Conectividad y Proveedores

Configuración de Proveedores: Asegúrate de que las credenciales de tus proveedores de nube (AWS, Azure, GCP) estén configuradas correctamente en las variables del workspace (a menudo como variables de entorno marcadas como sensibles).

Agentes Remotos (Self-Hosted Agents): Si necesitas que Terraform Cloud acceda a una infraestructura privada (ej., un VPC restringido), configurar un "Self-Hosted Agent" desde la sección "Agents" de tu organización es clave.

Proceso Lógico de Revisión y Mantenimiento Diario/Periódico

1. Monitoreo del Tablero Principal: Abre Terraform Cloud (app.terraform.io) y revisa el tablero principal de tu organización. Busca cualquier Workspace con ejecuciones fallidas o en estado "Errored".

2. Priorizar Ejecuciones Fallidas: Si hay fallos, navega a la ejecución, revisa la pestaña "Plan" y "Apply" para identificar los errores en los logs. Usa esta información para depurar el código Terraform o la configuración del proveedor.

3. Revisión de Planes (Antes de Aplicar): Haz que la revisión del terraform plan sea un paso obligatorio. Entrena a tu equipo para leer y comprender el plan. Si es posible, implementa "Sentinel Policies" (políticas de gobernanza de HashiCorp) para automatizar la validación de planes.

4. Auditoría de Cambios: Periódicamente, revisa el historial de "Runs" para entender quién hizo qué cambios y cuándo. Esto es vital para la resolución de problemas y la seguridad.

5. Gestión de Variables Sensibles: Asegúrate de que todas las variables que contengan información sensible (claves API, contraseñas) estén marcadas como "sensitive" en Terraform Cloud.

6. Sincronización del Código: Mantén tu código Terraform en Git siempre como la fuente de la verdad. Los cambios manuales en la infraestructura que no se reflejen en el código causarán "drift" (desviación del estado) y problemas futuros.

7. Limpieza del Estado (Solo si es Absolutamente Necesario): Evita manipular el estado directamente (usando terraform state rm localmente) a menos que sepas exactamente lo que haces. Para la mayoría de los casos de "drift", un terraform apply debería corregirlo.

Terraform Cloud está diseñado para hacer que este proceso sea robusto y colaborativo. Al seguir estos pasos, puedes mantener tu infraestructura versionada, auditable y gestionada eficientemente.

Azure Devops

Preparando tu Entorno para Azure DevOps en Windows 11

Aunque gran parte de Azure DevOps se gestiona desde la web, la interacción con los repositorios Git y la ejecución de pipelines CI/CD a menudo implican herramientas de línea de comandos.

1. Herramientas Esenciales

Git (Ya lo tienes): Para interactuar con Azure Repos.

Azure CLI: La interfaz de línea de comandos de Azure permite interactuar con los recursos de Azure, incluyendo algunas funcionalidades de Azure DevOps (aunque la mayoría de las operaciones de DevOps se hacen con la CLI de Azure DevOps o la interfaz web).

Instalación: Sigue la guía oficial de Microsoft: https://learn.microsoft.com/es-es/cli/azure/install-azure-cli-windows?tabs=powershell

Verificación: Abre una nueva terminal y ejecuta az --version.

Login: az login para autenticarte con tu cuenta de Azure.

Azure DevOps CLI Extension: Una extensión para la Azure CLI que añade comandos específicos de Azure DevOps. ¡Esta es la clave para la automatización desde la línea de comandos!

Instalación: Después de instalar Azure CLI, ejecuta: az extension add --name azure-devops

Verificación: az devops --version

Login: az devops login --organization https://dev.azure.com/tu_organizacion (reemplaza tu_organizacion).

Visual Studio Code (Recomendado): Para editar código, incluyendo YAML de pipelines. Instala extensiones relevantes como "Azure DevOps" o "YAML".

2. Elegir tu Terminal

Al igual que con Terraform, la Terminal Integrada de Visual Studio Code (con PowerShell) es la mejor práctica para un flujo de trabajo fluido. Te permite tener tu código, tus commits Git y la ejecución de comandos de Azure DevOps CLI en un solo lugar.

Componentes Principales de Azure DevOps

Azure DevOps se divide en varios servicios clave:

Azure Boards: Planificación de proyectos, seguimiento de ítems de trabajo (historias de usuario, tareas, errores).

Azure Repos: Repositorios Git privados para tu código.

Azure Pipelines: Integración Continua (CI) y Entrega Continua (CD) para automatizar builds, pruebas y despliegues.

Azure Test Plans: Gestión de pruebas manuales y automatizadas.

Azure Artifacts: Gestión de paquetes (NuGet, npm, Maven, Python).

Guía de Operaciones Diarias en Azure DevOps (Interfaz Web)

El flujo de trabajo diario en Azure DevOps se centra principalmente en la interfaz web para la gestión del proyecto y el monitoreo, y en la línea de comandos para la interacción con el código.

1. Gestión de Proyectos (Azure Boards)

Aquí es donde tu equipo planifica, rastrea y colabora en el trabajo.

Exportar a Hojas de cálculo

2. Gestión de Código (Azure Repos - Git)

Interactuar con tus repositorios Git. Esto se hace principalmente desde tu IDE (VS Code) o la línea de comandos, y luego se revisa en la web.

Exportar a Hojas de cálculo

3. Ejecución y Monitoreo de Pipelines (Azure Pipelines)

Automatización de builds, pruebas y despliegues.

Exportar a Hojas de cálculo

4. Gestión de Artefactos (Azure Artifacts)

Publicar y consumir paquetes.

Exportar a Hojas de cálculo

Proceso Lógico de Revisión y Mantenimiento Diario/Periódico en Azure DevOps

1. Tablero Diario (Azure Boards):

Comienza tu día revisando Boards > Sprints para ver el progreso del equipo, los ítems de trabajo asignados a ti y si hay bloqueadores.

Mantén tus ítems de trabajo actualizados (estado, tiempo restante, comentarios).

Participa en las Daily Scrums usando el tablero del sprint.

2. Monitoreo de Pipelines (Azure Pipelines):

Revisa regularmente Pipelines > Builds y Pipelines > Releases para ver el estado de las últimas ejecuciones.

Actúa rápidamente sobre los fallos: Un pipeline roto detiene el equipo. Depura los logs de las ejecuciones fallidas lo antes posible.

Asegúrate de que tus PRs estén desencadenando los pipelines de CI correctamente.

3. Revisión de Código (Azure Repos - Pull Requests):

Prioriza las revisiones de Pull Requests. Una revisión oportuna evita cuellos de botella en el desarrollo.

Proporciona feedback constructivo y claro.

Asegúrate de que las políticas de rama (ej., mínimo de aprobaciones, resolución de comentarios, paso de pipelines de CI) se cumplan antes de fusionar.

4. Limpieza y Mantenimiento:

Eliminar ramas antiguas: Periódicamente, elimina ramas de Git que ya se han fusionado y no son necesarias.

Limpiar espacio de pipelines: Si usas agentes auto-hospedados, monitorea el espacio en disco. Azure DevOps tiene configuraciones para retener artefactos y logs por un tiempo limitado, pero revisa si necesitas ajustes.

Gestionar Work Items cerrados: Asegúrate de que los ítems de trabajo se cierren una vez que el trabajo esté completo y verificado.

5. Seguridad y Permisos:

Revisa periódicamente los permisos de tu organización, proyectos y repositorios para asegurarte de que solo los usuarios autorizados tengan acceso.

Utiliza grupos de seguridad en lugar de asignar permisos a usuarios individuales siempre que sea posible.

Azure DevOps, al ser una plataforma integrada, te permite tener una visión holística de tu proyecto. El uso combinado de la interfaz web para la gestión y monitoreo de alto nivel, y la CLI para tareas de automatización o interacciones rápidas, te permitirá ser muy eficiente.

Guía de Depuración y Buenas Prácticas para Pipelines en

Esta guía se enfoca en un enfoque estructurado para identificar, diagnosticar y resolver problemas en tus pipelines, así como en prácticas que pueden prevenir muchos de ellos.

1. Entendiendo el Contexto del Pipeline

Antes de empezar a "depurar", es vital entender qué se supone que el pipeline debe hacer y qué recursos utiliza.

Paso 1.1: Revisar la Definición del Pipeline (YAML/Script)

¿Qué buscar? Entender la secuencia de pasos, las tareas que se ejecutan, las variables utilizadas, los agentes o pools de agentes, y las dependencias entre etapas (stages).

Preguntas clave: ¿Está el pipeline configurado para el entorno correcto (producción vs. no producción)? ¿Usa las credenciales o conexiones de servicio adecuadas?

Acción: Abre el archivo de definición del pipeline (probablemente un archivo .yml o .yaml en tu repositorio de código) y léelo detenidamente.

Paso 1.2: Identificar el Entorno y Recursos Implicados

¿Qué buscar? Qué suscripción de Azure usa el pipeline (por ejemplo, LATAM MCP Non-Production), qué grupos de recursos, servicios de Azure específicos (App Services, Bases de Datos, Key Vaults, etc.).

Acción: Verifica si la suscripción activa de tu CLI de Azure coincide con la suscripción que el pipeline está intentando usar (recuerda az account show y az account set). Accede al portal de Azure y verifica el estado de los recursos implicados.

2. Recopilación de Información: El Primer Fallo

Cuando un pipeline falla, la información inicial que te da el sistema es tu punto de partida más valioso.

Paso 2.1: Analizar los Logs del Pipeline

¿Qué buscar? La línea exacta donde falló la ejecución. Los logs suelen indicar el paso (task) y la acción que estaba realizando. Busca palabras clave como Error, Failed, Unauthorized, Denied, Timeout.

Mensajes de Error: Lee el mensaje de error completo. A menudo, el mensaje es descriptivo y te dará una pista directa sobre la causa (por ejemplo, "ResourceNotFound", "AccessDenied", "InvalidParameter").

Códigos de Salida (Exit Codes): Si ves un código de salida no cero (por ejemplo, Process completed with exit code 1), significa que un comando falló. Investiga qué significa ese código en el contexto del comando ejecutado.

Acción: Navega a la ejecución fallida del pipeline en Azure DevOps (o la herramienta de CI/CD que usen), haz clic en la etapa o el paso que falló para expandir los logs y revísalos de abajo hacia arriba o busca el error.

Paso 2.2: Contexto del Agente de Build

¿Qué buscar? Si el error ocurre durante la ejecución de un script o comando, considera si el agente de build tiene las herramientas necesarias instaladas o si tiene acceso a la red externa si es necesario.

Acción: Si puedes, verifica la imagen del agente (si es autoalojado) o la versión del software preinstalado (si es de Microsoft/cloud).

3. Diagnóstico y Reproducción (Cuando sea Posible)

Una vez que tienes el error, es hora de entender la causa raíz.

Paso 3.1: Recrear el Fallo Localmente (Si Aplica)

¿Qué buscar? Si el pipeline ejecuta comandos o scripts (por ejemplo, Azure CLI, PowerShell, Bash, scripts de Terraform, scripts de build), intenta ejecutar esos mismos comandos con los mismos parámetros y credenciales en tu máquina local (o en un entorno de desarrollo seguro que replique las condiciones del agente).

Beneficio: Si el error se reproduce localmente, es probable que sea un problema con el script, los permisos o los datos, no con el pipeline en sí. Si no se reproduce, el problema puede estar en el entorno del agente o en cómo el pipeline pasa las variables.

Acción: Copia el comando exacto del log del pipeline y ejecútalo en tu terminal con las variables de entorno adecuadas (¡cuidado con las credenciales!).

Paso 3.2: Verificar Permisos y Conexiones de Servicio

¿Qué buscar? Muchos fallos en Azure se deben a problemas de permisos. El servicio principal o identidad gestionada que usa la conexión de servicio de Azure DevOps (o tu herramienta de CI/CD) debe tener los roles y permisos adecuados en la suscripción y los grupos de recursos de Azure.

Acción: En Azure Portal, navega a la suscripción/recurso afectado y revisa Control de acceso (IAM). Asegúrate de que la identidad del pipeline tenga los roles necesarios (ej. Colaborador, o roles específicos como "Storage Blob Data Contributor" si estás subiendo archivos).

Paso 3.3: Revisar Variables y Secretos

¿Qué buscar? Asegúrate de que todas las variables y secretos que el pipeline consume sean correctos y estén disponibles. Los secretos (contraseñas, claves API) deben estar almacenados de forma segura (ej. Azure Key Vault, Azure DevOps Variable Groups marcados como secreto) y ser accedidos correctamente.

Errores comunes: Variable no definida, variable con valor incorrecto, secreto expirado o inaccesible.

Acción: Si sospechas de una variable, puedes imprimir su valor en los logs (¡nunca imprimas secretos!). Si es un secreto, verifica su existencia y vigencia en Key Vault o en el grupo de variables.

4. Estrategias de Depuración Avanzadas y Buenas Prácticas

Estas técnicas te ayudarán a depurar de forma más eficiente y a prevenir problemas.

Paso 4.1: Habilitar Logs de Diagnóstico (Debug Logging)

¿Cómo? La mayoría de las plataformas de CI/CD (Azure DevOps, GitHub Actions, etc.) permiten aumentar la verbosidad de los logs. En Azure DevOps, puedes establecer una variable de pipeline llamada system.debug a true (o marcar la opción "Enable system diagnostics" al ejecutar un pipeline manualmente).

Beneficio: Obtendrás mucha más información sobre lo que está haciendo el agente, las variables internas, las llamadas a la API, etc.

Advertencia: ¡Nunca habilites logs de diagnóstico en pipelines de producción a menos que sea una emergencia y sepas cómo limpiar los logs de cualquier secreto expuesto!

Paso 4.2: Aislar el Problema (Comentar o Simplificar)

¿Cómo? Si un pipeline grande falla y no estás seguro dónde, comenta secciones del pipeline o simplifica etapas para aislar el paso problemático. Puedes crear una copia del pipeline original para este fin.

Acción: Ejecuta el pipeline con una versión mínima y ve agregando pasos hasta que el fallo reaparezca.

Paso 4.3: Usar Pasos de "Print" o "Echo"

¿Cómo? Inserta pasos simples en tu pipeline que impriman el valor de variables en diferentes puntos. Esto te ayuda a verificar si las variables tienen el valor esperado en el momento de la ejecución.

Ejemplo (Azure DevOps YAML):

YAML

- script: echo "Valor de miVariable: $(miVariable)"

displayName: 'Verificar miVariable'

¡Cuidado: No imprimas secretos!

Paso 4.4: Control de Versiones del Pipeline

Buenas Prácticas: Trata tus definiciones de pipeline (archivos YAML) como código. Revísalas, usa ramas, y haz commits pequeños y descriptivos.

Beneficio: Si un cambio reciente causó el fallo, puedes revertirlo fácilmente o compararlo con una versión que funcionaba.

Paso 4.5: Monitoreo y Alertas

Buenas Prácticas: Configura alertas para fallos de pipeline críticos. Utiliza dashboards para monitorear el éxito y la duración de tus pipelines.

Beneficio: Te enterarás de los problemas proactivamente y podrás identificar patrones.

Paso 4.6: Documentación y Conocimiento Compartido

Buenas Prácticas: Documenta las causas comunes de fallos en tus pipelines y sus soluciones. Comparte este conocimiento con tu equipo.

Beneficio: Reduce el tiempo de depuración futuro y empodera a todo el equipo.

5. Resolución y Verificación

Una vez que crees que has identificado y solucionado el problema:

Paso 5.1: Probar la Solución

Acción: Ejecuta el pipeline nuevamente con tu cambio. Idealmente, primero en un entorno de no producción.

Paso 5.2: Limpieza Post-Depuración

Acción: Si habilitaste logs de depuración o insertaste pasos de impresión de variables, ¡asegúrate de eliminarlos antes de fusionar tus cambios a ramas principales o de producción!

Pensamiento Final: La depuración de pipelines es una habilidad que mejora con la práctica. Cada fallo es una oportunidad de aprender más sobre el sistema y cómo funciona. Al seguir un enfoque metódico y aplicar estas buenas prácticas, reducirás el tiempo de inactividad y mejorarás la calidad de tus despliegues.

Azure Devops SRE

Guía de Prácticas Diarias para un SRE en Azure DevOps

Esta guía te ayudará a mantener la fiabilidad, la eficiencia y la observabilidad en los sistemas que operas, utilizando Azure DevOps como tu plataforma central.

1. Monitoreo y Observabilidad Activa

El monitoreo es el corazón de las operaciones SRE. No es solo reaccionar, es anticipar.

Paso 1.1: Revisar Dashboards de Monitoreo Clave

Frecuencia: Diaria (al inicio de la jornada y periódicamente).

Qué buscar:

Salud General: Estado de los servicios críticos en Azure (App Services, Bases de Datos, VMs, etc.).

Rendimiento: Latencia, utilización de CPU/Memoria, IOPS de disco, capacidad de red.

Disponibilidad: Uptime de aplicaciones y servicios.

Errores/Excepciones: Incrementos inusuales en la tasa de errores.

Alertas Activas: Revisar y triar cualquier alerta disparada en Azure Monitor o herramientas de terceros.

Herramientas: Azure Monitor Dashboards, Application Insights, Log Analytics Workspaces, Grafana (si usan).

Acción: Identifica anomalías, picos inusuales, o cualquier indicador fuera de los umbrales esperados.

Paso 1.2: Revisar Logs Críticos

Frecuencia: Diaria, o a demanda si hay alertas o incidentes.

Qué buscar: Mensajes de error, advertencias significativas, eventos de seguridad inusuales, o patrones que indiquen problemas emergentes.

Herramientas: Azure Log Analytics, Application Insights, Azure Diagnostics Logs.

Acción: Correlacionar eventos entre diferentes servicios para entender la cadena de un problema.

Paso 1.3: Revisar el Estado de los Pipelines de CI/CD

Frecuencia: Diaria.

Qué buscar:

Fallos Recientes: Identificar si algún pipeline de build o release ha fallado.

Duración: Anomalías en el tiempo de ejecución de los pipelines (ej. un pipeline que solía durar 5 minutos ahora dura 20).

Pendientes/Atascados: Pipelines en estado "pendiente" o "en cola" por mucho tiempo.

Herramientas: Azure DevOps -> Pipelines (Builds/Releases), Dashboards personalizados de Azure DevOps.

Acción: Si hay fallos, prioriza la depuración (usando la guía anterior). Si hay anomalías en duración, investiga posibles cuellos de botella o regresiones.

2. Gestión Proactiva de Incidentes y Problemas

La anticipación y la respuesta rápida son claves para el SRE.

Paso 2.1: Triaje de Alertas y Notificaciones

Frecuencia: Continuo a lo largo del día.

Qué buscar:

Prioridad: Entender la severidad de la alerta (crítica, advertencia, informativa).

Impacto: Evaluar qué usuarios o servicios están siendo afectados.

Contexto: Buscar información adicional en los logs o dashboards relacionados con la alerta.

Herramientas: Azure Monitor Alerts, sistemas de gestión de incidentes (ej. ServiceNow, PagerDuty si están integrados).

Acción: Clasificar la alerta, iniciar el proceso de respuesta a incidentes si es necesario, o escalarla al equipo correspondiente.

Paso 2.2: Participar en el Proceso de Post-Mortem (Post-Incident Review)

Frecuencia: Según ocurran incidentes mayores.

Qué buscar: Entender la causa raíz de los incidentes, identificar acciones correctivas y preventivas, y documentar las lecciones aprendidas.

Acción: Colaborar con los equipos de desarrollo y operaciones para mejorar la resiliencia del sistema y evitar futuras ocurrencias. Implementar las mejoras acordadas.

3. Mantenimiento y Optimización de la Plataforma

Un SRE no solo reacciona, también optimiza y mejora.

Paso 3.1: Gestión de Recursos de Azure

Frecuencia: Semanal o quincenal (revisión general), o a demanda (limpieza).

Qué buscar:

Recursos No Utilizados/Zombies: Identificar VMs apagadas pero no desasignadas, discos sin usar, cuentas de almacenamiento vacías.

Optimización de Costos: Oportunidades para escalar recursos a modelos más pequeños, usar instancias reservadas (si aplica), o cambiar planes de precios.

Actualizaciones de Plataforma: Estar al tanto de las notificaciones de Azure sobre el fin de vida útil de versiones de software, actualizaciones de servicios PaaS, etc.

Herramientas: Azure Cost Management + Billing, Azure Advisor, Azure Resource Graph Explorer.

Acción: Recomendar y ejecutar limpiezas, reasignaciones o actualizaciones para optimizar el rendimiento y el costo.

Paso 3.2: Salud de los Agentes de Azure DevOps

Frecuencia: Diaria (para colas de build/release), semanal (para mantenimiento de agentes).

Qué buscar:

Disponibilidad de Agentes: Asegurarse de que haya suficientes agentes disponibles en las colas para manejar la carga de los pipelines.

Espacio en Disco: Monitorear el espacio en disco en agentes autoalojados.

Versiones de Herramientas: Asegurarse de que las herramientas necesarias en los agentes (Node.js, .NET SDKs, Python, etc.) estén actualizadas o en las versiones requeridas por los pipelines.

Herramientas: Azure DevOps -> Project Settings -> Agent Pools.

Acción: Limpiar cachés, actualizar herramientas, o escalar el número de agentes si es necesario.

Paso 3.3: Revisión de Seguridad y Conformidad (Compliance)

Frecuencia: Semanal o quincenal.

Qué buscar:

Azure Security Center: Revisar recomendaciones de seguridad.

Azure Policy: Verificar el cumplimiento de las políticas de gobernanza.

Key Vaults: Asegurar que los secretos roten regularmente y que los permisos de acceso sean los mínimos necesarios.

Vulnerabilidades: Escaneos de vulnerabilidades en imágenes de contenedores o dependencias de software (si se usan).

Acción: Aplicar parches, ajustar políticas, rotar secretos y colaborar con el equipo de seguridad para mitigar riesgos.

4. Automatización y Mejora Continua

La filosofía SRE impulsa la automatización para reducir la carga operativa.

Paso 4.1: Identificar Tareas Repetitivas para Automatización

Frecuencia: Continuo.

Qué buscar: Cualquier tarea manual que se realice más de una vez, especialmente si es propensa a errores humanos.

Acción: Proponer y desarrollar scripts (PowerShell, Azure CLI, Python), Azure Functions o Azure Automation runbooks para automatizar estas tareas (ej. limpieza de recursos, rotación de secretos, reportes).

Paso 4.2: Refinar Pipelines de CI/CD Existentes

Frecuencia: Periódica, después de incidentes o como parte de la optimización.

Qué buscar:

Eficiencia: Reducir tiempos de ejecución, optimizar el uso de agentes.

Fiabilidad: Añadir más pruebas automatizadas, mejorar la gestión de errores.

Gobernanza: Integrar verificaciones de seguridad (SAST/DAST) o de calidad de código.

Acción: Trabajar con los equipos de desarrollo para implementar mejoras en los pipelines.

Paso 4.3: Documentación y Compartir Conocimiento

Frecuencia: Continuo.

Qué buscar: Cualquier conocimiento nuevo adquirido (resolución de incidentes, nuevas configuraciones, automatizaciones).

Acción: Documentar procedimientos, soluciones a problemas comunes, diagramas de arquitectura y compartir este conocimiento con el equipo para construir una base de conocimiento robusta.

5. Colaboración y Comunicación

Un SRE no trabaja aislado.

Paso 5.1: Comunicación con Equipos de Desarrollo

Frecuencia: Diaria/Según sea necesario.

Qué buscar: Discutir próximos lanzamientos, cambios en la infraestructura, problemas recurrentes que necesiten atención del desarrollo.

Acción: Proporcionar feedback sobre la operabilidad de las aplicaciones, sugerir mejoras para la observabilidad y participar en la planificación.

Paso 5.2: Participar en Reuniones de Stand-up o Sincronización

Frecuencia: Diaria.

Acción: Compartir el estado de los sistemas, cualquier incidente reciente, o próximas actividades de mantenimiento.

Guía Detallada de Prácticas Diarias para un SRE en Azure DevOps

Aquí tienes el desglose paso a paso de cada área, para que puedas implementar estas prácticas de manera efectiva en tu día a día.

1. Monitoreo y Observabilidad Activa

El monitoreo no es solo una herramienta, es una mentalidad. Tu objetivo es entender el estado de los sistemas en todo momento y detectar anomalías antes de que se conviertan en incidentes.

Paso 1.1: Revisar Dashboards de Monitoreo Clave

1. Inicio de la Jornada:

Acción: Abre tus dashboards principales en Azure Monitor (o tu herramienta de observabilidad consolidada como Grafana, si aplica).

Foco: Busca el "pulso" general de la plataforma:

KPIs de alto nivel: Latencia general de aplicaciones, tasas de error globales, uso de recursos agregados (CPU, memoria, red).

Salud de servicios críticos: Verifica los gráficos de los servicios más importantes (ej. App Services que soportan los canales digitales, bases de datos principales, AKS clusters).

Pregunta: ¿Hay alguna tendencia inesperada o un cambio brusco desde el día anterior?

2. Filtro por Entorno:

Acción: Si tus dashboards permiten filtros (por entorno, región, aplicación), aplica los filtros para los entornos más sensibles o los que sabes que tienen actividad reciente (ej. donde hubo un despliegue anoche).

Foco: Presta especial atención a los entornos de Producción (PR) y a los de Pre-Producción/Staging si se están realizando pruebas intensivas.

3. Identificar Anomalías:

Acción: Busca patrones inusuales: picos repentinos en el uso de CPU/memoria sin un aumento de tráfico, caídas inexplicables en la latencia, incrementos en el recuento de errores HTTP 5xx o errores de base de datos.

Herramienta: Utiliza las funcionalidades de "Drill-down" o "Explore" de Azure Monitor para ir de un gráfico de alto nivel a métricas más detalladas del recurso específico.

Paso 1.2: Revisar Logs Críticos

1. Acceso Consolidado:

Acción: Navega a tu Azure Log Analytics Workspace central (o el repositorio de logs que utilicen).

Foco: Asegúrate de que los logs de todos los servicios críticos estén siendo centralizados aquí.

2. Consultas Predefinidas:

Acción: Ejecuta consultas KQL (Kusto Query Language) predefinidas para buscar errores y advertencias. Ejemplos:

AppRequests | where ResultCode >= 500 (para errores HTTP en App Services)

AzureDiagnostics | where Category == "AegOperationLogs" and status_s == "Failed" (para fallos de servicios específicos)

traces | where severityLevel >= 3 (para errores y críticas en Application Insights)

Foco: Busca mensajes de error con descripciones específicas que puedan indicar problemas de configuración, dependencias o cuellos de botella.

3. Correlación de Eventos:

Acción: Si detectas un problema en un servicio, intenta correlacionar sus logs con los logs de servicios dependientes (ej. si falla la app, verifica los logs de la base de datos o del servicio de autenticación).

Herramienta: Utiliza los IDs de correlación o IDs de transacción que Application Insights y otros servicios de Azure propagan para trazar una solicitud completa.

Paso 1.3: Revisar el Estado de los Pipelines de CI/CD

1. Dashboard de Pipelines:

Acción: Accede al hub de Pipelines en Azure DevOps.

Foco: Revisa las últimas ejecuciones de tus pipelines de Build (CI) y Release (CD).

2. Identificar Fallos Recientes:

Acción: Busca rápidamente cualquier pipeline en estado "Failed" o "Partially succeeded".

Prioridad: Prioriza la investigación de los fallos en pipelines críticos (ej. despliegues de producción, builds de ramas principales).

3. Análisis de Duración y Cola:

Acción: Observa si algún pipeline está tomando significativamente más tiempo de lo normal para completarse. También, verifica las colas de agentes para ver si hay pipelines esperando excesivamente.

Herramienta: Azure DevOps -> Project Settings -> Agent Pools para ver la actividad de los agentes.

Foco: Los aumentos de duración o las colas largas pueden indicar problemas de rendimiento en el agente o falta de capacidad.

2. Gestión Proactiva de Incidentes y Problemas

Ser proactivo significa no solo responder, sino también aprender de cada problema.

Paso 2.1: Triaje de Alertas y Notificaciones

1. Monitorización Continua:

Acción: Mantén abierto tu sistema de gestión de alertas (Azure Monitor, PagerDuty, etc.) durante toda la jornada. Configura notificaciones audibles o visuales para alertas críticas.

Foco: Reacciona inmediatamente a cualquier alerta clasificada como "Crítica" o "Error".

2. Evaluación Inicial:

Acción: Para cada alerta, haz las siguientes preguntas:

¿Qué es? Lee el título y la descripción de la alerta.

¿Quién/Qué afecta? Identifica el alcance del impacto (ej. un servicio específico, una región, un grupo de usuarios).

¿Cuál es la severidad? ¿Es un incidente que requiere respuesta inmediata o una advertencia que requiere investigación?

3. Recopilación de Contexto:

Acción: Antes de actuar, consulta los dashboards o logs relacionados con la alerta para obtener más detalles. Busca patrones o eventos relacionados que hayan ocurrido justo antes.

Herramienta: Utiliza los enlaces directos en la alerta a métricas o logs en Azure Monitor.

4. Acción y Escalada:

Acción:

Si es incidente: Inicia el protocolo de respuesta a incidentes de MetLife (notificar al equipo, abrir un ticket en el sistema de gestión de incidentes, iniciar una llamada de puente si es necesario).

Si es advertencia: Abre un ticket de investigación en tu sistema de seguimiento (ej. Azure Boards, Jira) y comienza a investigar la causa.

Si es informativa: Registra si es necesario y monitorea la situación.

Paso 2.2: Participar en el Proceso de Post-Mortem (Post-Incident Review)

1. Programación y Asistencia:

Acción: Asegúrate de estar presente y participar activamente en las reuniones de Post-Mortem para cualquier incidente significativo en el que estuviste involucrado o que afectó a tu dominio.

Foco: Las post-mortem deben ser "sin culpas" y enfocarse en el aprendizaje.

2. Análisis de Causa Raíz:

Acción: Contribuye a la identificación de la causa raíz del incidente (ej. un bug de software, una configuración errónea, falta de capacidad, problema de dependencia).

Herramienta: Diagramas de causa-efecto (espina de pescado), 5 Whys.

3. Identificación de Acciones Correctivas/Preventivas:

Acción: Propone y ayuda a definir acciones concretas para evitar la recurrencia del incidente o mitigar su impacto en el futuro. Estas acciones pueden ser:

Mejoras en el monitoreo/alertas.

Cambios en la arquitectura o el código.

Actualizaciones de la infraestructura.

Mejoras en los procesos de despliegue o prueba.

Documentación o entrenamiento.

4. Seguimiento de Acciones:

Acción: Asegúrate de que las acciones acordadas se registren en el sistema de seguimiento (Azure Boards) y haz un seguimiento de su progreso hasta su finalización. ¡No hay post-mortem sin seguimiento de acciones!

3. Mantenimiento y Optimización de la Plataforma

Un SRE busca constantemente la eficiencia y la mejora continua de la infraestructura.

Paso 3.1: Gestión de Recursos de Azure

1. Revisión de Costos y Uso:

Frecuencia: Semanal o quincenal (dependiendo del volumen de cambios).

Acción: Navega a Azure Cost Management + Billing en el portal de Azure.

Foco:

Análisis de Costos: Identifica los servicios que más consumen.

Recomendaciones de Optimización: Revisa las recomendaciones de Azure Advisor en la categoría "Costo" y "Rendimiento".

Recursos Inactivos/Infrautilizados: Busca VMs apagadas pero no desasignadas, discos sin adjuntar, cuentas de almacenamiento con poco uso, o App Services con planes de precios sobredimensionados.

Herramienta: Utiliza la vista "Resource groups" y "Tags" para filtrar por entorno y dueño.

2. Limpieza de Recursos "Zombie":

Acción: Identifica y trabaja con los equipos dueños para desasignar o eliminar recursos que ya no son necesarios (ej. entornos de prueba temporales que quedaron activos).

Práctica: ¡Automatiza esta limpieza si es posible!

3. Gestión de Obsolescencia/Actualizaciones:

Acción: Mantente al tanto de las notificaciones del Centro de Mensajes de Azure sobre versiones de software que van a dejar de ser compatibles o sobre nuevas versiones de servicios PaaS.

Foco: Planifica con los equipos de desarrollo las actualizaciones necesarias para evitar problemas de compatibilidad o seguridad.

Paso 3.2: Salud de los Agentes de Azure DevOps

1. Monitoreo de Agentes:

Frecuencia: Diaria para la actividad de la cola; semanal para el mantenimiento profundo.

Acción: En Azure DevOps, ve a Project Settings -> Agent Pools.

Foco:

Estado: ¿Todos los agentes están "Online"?

Demanda vs. Capacidad: ¿Hay un cuello de botella en la cola de pipelines esperando agentes?

Uso del Disco: Si tienes agentes autoalojados, monitorea el espacio en disco restante. Los pipelines pueden fallar por falta de espacio.

2. Mantenimiento Programado:

Acción: Para agentes autoalojados, programa tareas de limpieza periódicas para el espacio en disco (ej. eliminar artefactos de builds antiguos, caché).

Acción: Asegúrate de que las herramientas y SDKs en los agentes estén actualizados a las versiones requeridas por tus equipos de desarrollo. Considera usar imágenes personalizadas si la configuración es muy específica.

Paso 3.3: Revisión de Seguridad y Conformidad (Compliance)

1. Azure Security Center / Microsoft Defender for Cloud:

Frecuencia: Semanal.

Acción: Revisa el "Secure Score" y las recomendaciones activas.

Foco: Presta atención a las recomendaciones de alta severidad relacionadas con configuraciones de red (NSGs), bases de datos, almacenamiento y máquinas virtuales.

2. Azure Policy Compliance:

Frecuencia: Semanal o quincenal.

Acción: Revisa el informe de conformidad en Azure Policy.

Foco: Identifica recursos "No conformes" y entiende la razón. Esto te ayudará a aplicar las políticas de gobernanza de MetLife.

3. Gestión de Secretos (Azure Key Vault):

Frecuencia: Semanal (revisión de acceso), Mensual/Trimestral (revisión de rotación).

Acción: Verifica que los secretos y certificados en Key Vault estén configurados para rotar automáticamente o ten un proceso para su rotación manual.

Foco: Asegúrate de que solo las identidades y aplicaciones autorizadas tengan acceso mínimo necesario (Principio de Menor Privilegio).

4. Automatización y Mejora Continua

La automatización libera tiempo para tareas de mayor valor y reduce errores.

Paso 4.1: Identificar Tareas Repetitivas para Automatización

1. Registro de Tareas Manuales:

Frecuencia: Continuo (cada vez que hagas algo manualmente que parece repetitivo).

Acción: Lleva un pequeño registro mental o físico de las tareas que realizas a menudo de forma manual.

Ejemplos: Crear entornos de prueba efímeros, aprovisionar recursos estándar, realizar cambios de configuración repetitivos, generar informes.

2. Evaluación de Candidatos:

Acción: Para cada tarea repetitiva, evalúa:

¿Con qué frecuencia la hago?

¿Cuánto tiempo me lleva?

¿Es propensa a errores si la hago manualmente?

¿Hay una API o un comando de Azure CLI/PowerShell que la pueda ejecutar?

3. Proponer y Desarrollar Automatización:

Acción: Una vez identificada una buena candidata, empieza a diseñar cómo automatizarla (ej. un script de PowerShell/Azure CLI, un Runbook de Azure Automation, una Azure Function, una tarea personalizada en un pipeline de Azure DevOps).

Prioridad: Empieza con automatizaciones pequeñas que resuelvan un dolor inmediato.

Paso 4.2: Refinar Pipelines de CI/CD Existentes

1. Revisión Post-Incidente:

Frecuencia: Siempre después de un incidente importante o un despliegue problemático.

Acción: Pregunta: ¿Podría el pipeline haber prevenido este problema? ¿Podría haberlo detectado antes?

Foco: Añadir nuevas pruebas automatizadas, mejorar los pasos de validación, integrar escaneos de seguridad, implementar "rollbacks" automatizados.

2. Optimización de Rendimiento:

Frecuencia: Periódica o cuando los tiempos de ejecución de los pipelines se vuelven problemáticos.

Acción: Busca oportunidades para paralelizr tareas, optimizar la descarga de dependencias, usar cachés de pipeline, reducir el número de pasos o usar agentes más potentes.

3. Gobernanza y Cumplimiento:

Acción: Trabaja con los equipos de seguridad y cumplimiento para integrar verificaciones automatizadas dentro del pipeline (ej. escaneos de vulnerabilidades, linting de código, análisis de seguridad estático/dinámico).

Paso 4.3: Documentación y Compartir Conocimiento

1. Documentar Resoluciones:

Frecuencia: Siempre que resuelvas un problema complejo o inusual.

Acción: Crea entradas en una base de conocimiento (Wiki de Azure DevOps, Confluence) para la resolución de problemas comunes, pasos de depuración, y configuraciones complejas.

Foco: Incluye síntomas, pasos de depuración, la solución, y cómo prevenirlo en el futuro.

2. Documentar Procedimientos y Automatizaciones:

Acción: Documenta claramente cómo funcionan las nuevas automatizaciones, cómo se ejecutan y qué prerequisitos tienen.

3. Sesiones de Intercambio de Conocimiento:

Frecuencia: Mensual o trimestral.

Acción: Organiza o participa en sesiones donde el equipo SRE y los equipos de desarrollo compartan conocimientos sobre nuevas características de Azure, mejoras en pipelines, o lecciones aprendidas de incidentes.

5. Colaboración y Comunicación

Un SRE es un puente entre el desarrollo y las operaciones.

Paso 5.1: Comunicación con Equipos de Desarrollo

1. Reuniones de Sincronización:

Acción: Participa en los "stand-ups" diarios o reuniones de planificación de los equipos de desarrollo con los que trabajas más de cerca.

Foco: Entiende qué están desarrollando, qué despliegues están planeando y si hay algún cambio significativo que pueda afectar la infraestructura o las operaciones.

2. Proporcionar Feedback Operacional:

Acción: Si identificas patrones de problemas en una aplicación (ej. una app que consume demasiada memoria, o logs que no son útiles para la depuración), proporciona feedback constructivo a los desarrolladores.

Foco: Sugiere mejoras en la observabilidad (más telemetría, mejores logs), en la resiliencia de la aplicación o en la eficiencia del código.

3. Colaboración en el Diseño:

Acción: Si un equipo está diseñando una nueva aplicación o un cambio importante, involúcrate temprano para asegurar que la operabilidad, escalabilidad y fiabilidad sean consideradas desde el principio.

Paso 5.2: Participar en Reuniones de Stand-up o Sincronización del Equipo SRE

1. Actualización Diaria:

Acción: En el stand-up de tu propio equipo SRE, proporciona una actualización concisa sobre:

Estado de los sistemas monitoreados.

Cualquier incidente reciente o en curso.

Tareas de mantenimiento o automatización en las que estás trabajando.

Bloqueos o necesidades de ayuda.

Foco: Mantener a todo el equipo informado y coordinado.

Esta guía detallada te proporcionará un marco robusto para tus operaciones diarias como SRE en MetLife. Recuerda que la adaptabilidad es clave: ajusta estas prácticas según las necesidades específicas de los sistemas que administras y la madurez de tu equipo.

🧾 Pizarrón

Aquí irá el pizarrón interactivo en el futuro. Por ahora es solo una sección de prueba.

🧠 ChatGPT

Aquí se integrará la API de ChatGPT o una interfaz interactiva.