20 Ideas DevOps para Principiantes: Construye tus fundamentos

Rossana SuarezRossana Suarez
9 min read

Si estás comenzando en DevOps, la mejor manera de adquirir habilidades es mediante proyectos prácticos. Los proyectos no solo te permiten aprender, sino también experimentar con herramientas y conceptos clave que se utilizan en la vida real. ¡Y lo mejor es que puedes ejecutar estos proyectos localmente, en plataformas como Killercoda o labs.iximiuz.com! Estas plataformas te brindan entornos ideales para practicar sin necesidad de configurar todo desde cero en tu máquina local.

A continuación, te traigo 20 ideas DevOps para principiantes que te ayudarán a construir una base sólida y a familiarizarte con las herramientas y conceptos fundamentales. ¡Vamos al challenge!

1. Automatización de Tareas Básicas con Scripts Bash

Aprende a usar Bash para automatizar tareas repetitivas de administración del sistema, como eliminar archivos antiguos o crear copias de seguridad. Este es un primer paso para familiarizarte con la automatización de procesos que se repiten en el entorno de desarrollo y administración de sistemas.

Enfoque:

  • Crea un script .sh que elimine logs antiguos de una carpeta específica.

  • Usa comandos como ls, rm, cp y tar para manejar archivos y directorios.

  • Añade condicionales (if/else) y bucles (for) para darle flexibilidad al script, de manera que puedas personalizar el comportamiento según las necesidades.

  • Practica con Killercoda: En Killercoda puedes realizar una gran variedad de prácticas que te permitirán afianzar lo aprendido con Bash, como la creación de scripts más complejos y la ejecución en entornos controlados.

Objetivo:

Familiarizarte con Bash, aprender a automatizar tareas comunes y comprender la lógica básica de programación en un entorno Unix/Linux.

2. Pipeline de CI/CD Básico con GitHub Actions

Configura un pipeline sencillo que ejecute pruebas automáticas cada vez que empujas código al repositorio. Ideal para entender cómo funciona la integración continua y cómo automatizar los procesos de construcción y prueba en tus proyectos.

Enfoque:

  • Crea un repositorio en GitHub y sube un pequeño proyecto (por ejemplo, una app en Node.js o Python).

  • Configura un archivo de flujo de trabajo en .github/workflows/main.yml para que se ejecute cada vez que se haga un push al branch principal.

  • Agrega pasos para hacer el checkout del código, instalar dependencias y correr pruebas automáticas.

  • Entrenamiento en CI/CD en GitHub: Si quieres comenzar a entrenarte con CI/CD en GitHub, cuentas con los pasos disponibles directamente en la documentación oficial de GitHub Actions. Aquí podrás entender cómo configurar y personalizar tus pipelines, lo que te permitirá automatizar tareas de forma eficiente y segura.

Objetivo:

Familiarizarte con GitHub Actions y aprender los fundamentos de la integración continua mediante la automatización de pruebas en un flujo de trabajo de CI/CD.s automáticas.

Deploying to a Server with GitHub Actions using ssh | by Balazs Kocsis |  Medium

3. Despliegue de un Sitio Estático con Docker

Aprende los principios de contenerización utilizando Docker para ejecutar un sitio web estático dentro de un contenedor. Este proyecto te permitirá familiarizarte con la creación de contenedores Docker para aplicaciones web simples.

Enfoque:

  • Crea una página web básica con HTML y CSS.

  • Escribe un Dockerfile usando una imagen base como nginx:alpine para servir tu sitio web.

  • Construye la imagen con docker build y corre el contenedor con docker run para poner en marcha tu sitio estático.

  • Refuerza tus conocimientos de Docker: Puedes usar esta web, que ofrece varios temas sobre sitios estáticos, y si deseas profundizar más en Docker, este tutorial sobre Docker es increíble para aprender más sobre la contenerización y cómo utilizar Docker en diferentes escenarios.

Objetivo:

Familiarizarte con la creación y ejecución de contenedores Docker para sitios estáticos, lo que te permitirá aplicar principios de contenerización en proyectos reales.

💡
Podrías usar esta web donde hay varios temas de sitios estáticos y a los contenedores.

4. Monitoreo Básico del Sistema en Linux

Familiarízate con los comandos básicos de Linux para monitorear el rendimiento de tu sistema, como CPU, memoria y espacio en disco.

Enfoque:

  • Utiliza comandos como top, htop, df -h y free -h para monitorear los recursos del sistema.

  • Puedes escribir un script que verifique la carga del sistema y avise si hay problemas de rendimiento.

  • Practica con Killercoda

5. Automatización de Instalación de Paquetes en Linux

Crea un script para automatizar la instalación de software en un servidor Linux. Esto te ayudará a entender cómo mantener tus servidores consistentes.

Enfoque:

  • Escribe un script en Bash que instale herramientas esenciales como git, docker, nodejs.

  • Usa apt o yum según el sistema operativo que estés utilizando.

  • Practica con Killercoda

6. Control de Versiones con Git

Aprende los conceptos básicos de Git, la herramienta más usada para el control de versiones en proyectos de software.

Enfoque:

  • Inicializa un repositorio con git init.

  • Realiza un commit, crea ramas y haz merges de manera sencilla.

  • Aprende a resolver conflictos de fusión.

  • Practica con Killercoda

7. Provisionamiento de Servidores con Ansible

Ansible es una herramienta de automatización que te permite configurar servidores y aplicaciones de manera eficiente. Ideal para principiantes en IaC (Infraestructura como Código).

Enfoque:

  • Instala Ansible en tu máquina y escribe un playbook básico para instalar un servidor web (como nginx).

  • Ejecuta el playbook con ansible-playbook y configura tu servidor automáticamente.

  • Practica con Killercoda

8. Rotación Automática de Logs

Aprende a gestionar archivos de logs para evitar que llenen el disco con información innecesaria.

Enfoque:

  • Usa logrotate para gestionar logs y asegurarte de que los archivos no crezcan demasiado.

  • Configura el archivo de configuración de logrotate para realizar la rotación y compresión de logs automáticamente.

  • Practica con Killercoda

9. Introducción a Terraform para IaC

Terraform es una herramienta de IaC que te permite gestionar infraestructuras en la nube. Comienza con algo simple como crear una máquina virtual en AWS.

Enfoque:

  • Instala Terraform y configura tu proveedor (por ejemplo, AWS).

  • Crea un archivo main.tf que defina una instancia de EC2 en AWS.

  • Usa terraform init, terraform plan, y terraform apply para provisionar la infraestructura.

💡
Puedes usar Localstack para practicas =)

10. Monitoreo de Uptime de un Sitio Web con Cron Jobs

Configura un cron job para verificar la disponibilidad de un sitio web y enviarte un aviso si está caído.

Enfoque:

  • Escribe un script que use curl para verificar el código de estado HTTP de un sitio.

  • Si el sitio está caído, el script enviará un correo electrónico o una alerta por Slack.

  • Programa el script para que se ejecute cada 5 minutos usando cron.

11. Pipeline de CI/CD con Jenkins y Docker

Configura un pipeline básico de CI/CD en Jenkins y usa Docker para crear un entorno de construcción consistente.

Enfoque:

  • Instala Jenkins y configúralo para usar Docker.

  • Crea un Jenkinsfile para definir las etapas del pipeline: checkout del código, construcción de la imagen Docker, pruebas y despliegue.

12. Despliegue de una Aplicación Web en AWS usando Terraform

Lleva el concepto de IaC un paso más allá creando una infraestructura en AWS para alojar una aplicación web.

Enfoque:

  • Usa Terraform para crear recursos en AWS, como una instancia EC2 y un grupo de seguridad.

  • Implementa una aplicación simple en la instancia y hazla accesible a través de un balanceador de carga.

13. Respaldo Automático de Bases de Datos con Shell Scripts

Aprende a crear copias de seguridad automatizadas de una base de datos y a almacenarlas en la nube.

Enfoque:

  • Escribe un script que use mysqldump o pg_dump para crear una copia de seguridad de la base de datos.

  • Comprime la copia de seguridad y súbela a un servicio de almacenamiento en la nube como AWS S3.

14. Configuración Básica de Kubernetes con Minikube

Configura un clúster Kubernetes localmente con Minikube y aprende los conceptos básicos como Pods y Servicios.

Enfoque:

  • Instala Minikube y kubectl en tu máquina.

  • Inicia un clúster local con minikube start y despliega una aplicación simple en Kubernetes.

15. Gestión Centralizada de Logs con ELK Stack

Aprende a recolectar y visualizar logs usando Elasticsearch, Logstash y Kibana (ELK).

Enfoque:

  • Despliega Elasticsearch y Kibana utilizando Docker.

  • Usa Logstash para procesar logs de un servidor o aplicación y visualízalos en Kibana.

16. CI/CD para Microservicios con Docker y Kubernetes

Aprende cómo gestionar una arquitectura de microservicios usando Docker y Kubernetes.

Enfoque:

  • Configura un repositorio para múltiples microservicios.

  • Crea un pipeline de CI/CD que construya imágenes Docker, ejecute pruebas y las despliegue en Kubernetes.

17. Gestión de Configuración de Servidores con Puppet

Puppet es una herramienta poderosa para gestionar la configuración de servidores. Ideal para principiantes que quieren aprender IaC.

Enfoque:

  • Instala Puppet y configura un servidor web con nginx usando un manifiesto de Puppet.

18. Revisiones Automáticas de Calidad de Código con SonarQube

Integra SonarQube en tu pipeline para realizar análisis estáticos de código y asegurar que se cumplan los estándares de calidad.

Enfoque:

  • Configura un servidor de SonarQube y conéctalo a tu pipeline de CI/CD.

  • Ejecuta análisis de calidad de código cada vez que se haga un commit en el repositorio.

19. Implementación de un Servidor de Nginx con Docker y Ansible

Aprende a automatizar la implementación de un servidor Nginx usando Docker y Ansible para la configuración de servidores de forma eficiente.

Enfoque:

  • Crea un archivo Dockerfile para desplegar Nginx en un contenedor Docker.

  • Utiliza Ansible para automatizar la instalación de Docker y la configuración del contenedor Nginx en un servidor remoto.

  • Configura un playbook de Ansible para asegurarte de que el servidor tenga el contenedor Docker con Nginx funcionando automáticamente.

Objetivo:

Familiarizarte con la integración de Docker y Ansible para la gestión y configuración de servidores.

20. Automatización del Proceso de Certificados con Let's Encrypt

Automatiza la obtención y renovación de certificados SSL/TLS usando Let's Encrypt.

Enfoque:

  • Usa certbot para obtener y renovar certificados SSL de manera automática.

  • Configura un cron job para renovar los certificados periódicamente.


Estos fundamentos de DevOps son esenciales para cualquiera que quiera adentrarse en el mundo de la automatización, integración continua y gestión de infraestructuras. A medida que avanzas en estos proyectos, estarás construyendo no solo una base técnica sólida, sino también una mentalidad ágil y eficiente que te permitirá enfrentar desafíos reales en el desarrollo y despliegue de aplicaciones. Además, aprender y practicar con herramientas como Docker, GitHub Actions, Ansible y Terraform te abrirá puertas a muchas oportunidades en el mundo de la tecnología.

Recuerda que el camino en DevOps es un proceso continuo de aprendizaje y mejora. No tengas miedo de experimentar, probar nuevas herramientas y enfrentarte a desafíos. Cada pequeño paso te acerca más a ser un profesional completo en este campo.

¡Estamos todos juntos en esta ola!


Si tienes alguna duda o quieres seguir aprendiendo más sobre DevOps, puedes encontrarme en mis redes sociales. ¡Conéctate conmigo y sigamos compartiendo conocimiento y creciendo juntos!

0
Subscribe to my newsletter

Read articles from Rossana Suarez directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Rossana Suarez
Rossana Suarez

Soy Roxs 👩‍💻| Software Developer | DevOps | DevSecOps | en @295DevOps 🖼 Content Creator. No se puede crecer si no estas dispuesto a saltar a la zona de peligro 🔥