Skip to content

KrlosAren/100-days-devops-journal

Repository files navigation

100 Days DevOps Journal

Reto personal de 100 días para aprender y practicar DevOps. Cada día se documenta un desafío, concepto o práctica relacionada con el mundo DevOps.

Reglas del reto

  1. Dedicar tiempo cada día a un tema de DevOps
  2. Documentar lo aprendido en el README del día correspondiente
  3. Incluir comandos, código y recursos utilizados
  4. Registrar problemas encontrados y sus soluciones
  5. Cada día se guarda en days/day-XX/ con su propio README.md

Progreso - DevOps General

Día Tema Estado
Día 01 Crear usuarios de servicio sin shell interactiva Completado
Día 02 Crear un usuario con fecha de expiración Completado
Día 03 Deshabilitar el acceso SSH directo como root Completado
Día 04 Permisos de ejecución y propiedad de archivos Completado
Día 05 SELinux Completado
Día 06 Crear un Cron Job con Cronie Completado
Día 07 Autenticación SSH sin contraseña (password-less) Completado
Día 08 Instalar Ansible con pip3 disponible para todos los usuarios Completado
Día 09 Troubleshooting: MariaDB no inicia por directorio faltante Completado
Día 10 Script de backup para sitio web estatico Completado
Día 11 Instalar y configurar Apache Tomcat Completado
Día 12 Troubleshooting de Apache: Puerto ocupado por otro proceso + Guia iptables Completado
Día 13 Implementar iptables para restringir acceso a Apache Completado
Día 14 Troubleshooting de Apache: Servicio caido por conflicto de puerto Completado
Día 15 Instalar y configurar Nginx con SSL (Self-Signed Certificate) Completado
Día 16 Configurar Nginx como Load Balancer Completado
Día 17 Configurar PostgreSQL: Crear usuario y base de datos Completado
Día 18 Instalar y configurar LAMP Stack (Linux, Apache, MariaDB, PHP) Completado
Día 19 Configurar Apache para servir múltiples sitios con Alias Completado
Día 20 Configurar Nginx + PHP-FPM para servir una aplicacion PHP Completado
Día 21 Crear un repositorio Git bare en un servidor Completado
Día 22 Clonar un repositorio Git bare en el mismo servidor Completado
Día 23 Fork de un repositorio Git en Gitea Completado
Día 24 Crear branches en un repositorio Git Completado
Día 25 Flujo completo de branch: crear, commitear, mergear y pushear Completado
Día 26 Agregar un remote adicional en Git y pushear a él Completado
Día 27 Revertir el último commit con git revert Completado
Día 28 Cherry-pick: copiar un commit específico entre branches Completado
Día 29 Flujo de Pull Request en Gitea: rama feature → master Completado
Día 30 Limpiar historial de commits con git reset Completado
Día 31 Restaurar un stash específico con git stash apply Completado
Día 32 Rebase de feature branch sobre master Completado
Día 33 Resolver conflictos de merge durante git pull --rebase Completado
Día 34 Crear un post-update hook para tagging automático en Git Completado
Día 35 Instalar Docker CE e iniciar el servicio Completado
Día 36 Desplegar contenedor Nginx con Docker Completado
Día 37 Copiar archivos a un contenedor con docker cp Completado
Día 38 Pull de imagen Docker y re-tagging Completado
Día 39 Crear imagen Docker desde un contenedor Completado
Día 40 Docker EXEC: instalar y configurar Apache en un contenedor Completado
Día 41 Escribir un Dockerfile Completado
Día 42 Crear una Docker Network Completado
Día 43 Docker Port Mapping Completado
Día 44 Escribir un Docker Compose File Completado
Día 45 Resolver errores en un Dockerfile Completado
Día 46 Desplegar PHP + MariaDB con Docker Compose Completado
Día 47 Dockerizar una app Flask en Python Completado
Día 48 Desplegar un Pod en un cluster de Kubernetes Completado
Día 49 Desplegar aplicaciones con Deployments en Kubernetes Completado
Día 50 Resource Requests y Limits en Pods de Kubernetes Completado
Día 51 Rolling Update en Kubernetes Deployments Completado
Día 52 Rollback de un Deployment a la versión anterior Completado
Día 53 Troubleshooting: VolumeMount mal alineado en Nginx + PHP-FPM Completado
Día 54 Shared Volumes en Kubernetes (emptyDir) Completado
Día 55 Sidecar Containers (patrón native con initContainers) Completado
Día 56 Deployment + Service NodePort para nginx Completado
Día 57 Variables de entorno en Pods y $(VAR) substitution Completado
Día 58 Deployment Grafana — autopsia de labels y selectors Completado
Día 59 Troubleshooting Deployment: typo en image + ConfigMap inexistente Completado
Día 60 Persistent Volumes en Kubernetes (PV + PVC + Pod + Service) Completado
Día 61 Init Containers en Kubernetes Completado
Día 62 Manejo de Secrets en Kubernetes Completado
Día 63 Deploy Iron Gallery — stack multi-componente (app + DB + 2 services + namespace) Completado
Día 64 Troubleshooting Python Flask en K8s — dos bugs simultáneos (image typo + port mismatch) Completado
Día 65 Deploy de Redis en K8s con ConfigMap montado como volumen Completado

Progreso - Kubernetes

Día Tema Estado
Día 01 Crear un Pod en Kubernetes Completado
Día 02 Crear un Deployment en Kubernetes Completado
Día 03 Crear un Namespace y desplegar un Pod en él Completado
Día 04 Resource Requests y Limits Completado
Día 05 Rolling Update de un Deployment Completado
Día 06 Rollback de un Deployment a una revisión previa Completado
Día 07 Crear un ReplicaSet con httpd Completado
Día 08 Crear un CronJob en Kubernetes Completado
Día 09 Crear un Job Countdown en Kubernetes Completado
Día 10 Pod con ConfigMap, Variable de Entorno y Volume Mount Completado
Día 11 Troubleshooting de Pod: ImagePullBackOff Completado
Día 12 Actualizar Deployment y Service sin eliminarlos Completado
Día 13 Crear un ReplicationController Completado
Día 14 Troubleshooting Nginx + PHP-FPM en Kubernetes Completado

Progreso - Ansible

Día Tema Estado
Día 01 Crear un archivo vacío con Ansible Completado
Día 02 Instalar e iniciar httpd con Ansible Completado
Día 03 Completado
Día 04 Copiar archivos a servidores de aplicación Completado
Día 05 Crear archivos con permisos y propietario específico Completado

Herramientas

Herramienta Descripción
sed Stream Editor — sustitución, filtrado y edición de texto en línea de comandos
kubectl Guía de Kubernetes: cómo seleccionar y editar componentes

Estructura del repositorio

100-days-devops-journal/
├── README.md
├── 100-devops-days/
│   ├── template.md
│   └── day-XXX/
│       └── README.md
├── kubernetes-journal/
│   ├── template.md
│   └── days/
│       └── day-XX/
│           └── README.md
└── ansible-journal/
    ├── template.md
    └── days/
        └── day-XX/
            └── README.md
  • Cada journal tiene su propia carpeta con la misma estructura de days/
  • Los scripts o archivos de código del día se guardan junto al README en la misma carpeta
  • Se usa template.md de cada journal como plantilla para crear nuevos días

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages