En este tema, exploraremos cómo la automatización y la gestión de configuración pueden aplicarse en escenarios del mundo real. Veremos ejemplos prácticos que ilustran cómo estas técnicas pueden mejorar la eficiencia, reducir errores y facilitar la gestión de infraestructuras TI.

  1. Automatización de Despliegue de Aplicaciones

Descripción del Caso

Una empresa de desarrollo de software necesita desplegar su aplicación web en múltiples entornos (desarrollo, pruebas, producción) de manera rápida y consistente.

Solución

Utilizar herramientas de automatización como Ansible, Chef o Puppet para gestionar el despliegue de la aplicación.

Ejemplo Práctico con Ansible

Paso 1: Instalación de Ansible

sudo apt update
sudo apt install ansible

Paso 2: Crear un Playbook de Ansible

---
- name: Desplegar aplicación web
  hosts: webservers
  become: yes

  tasks:
    - name: Instalar dependencias
      apt:
        name: "{{ item }}"
        state: present
      with_items:
        - nginx
        - git

    - name: Clonar repositorio de la aplicación
      git:
        repo: 'https://github.com/empresa/app-web.git'
        dest: /var/www/app-web

    - name: Configurar Nginx
      template:
        src: templates/nginx.conf.j2
        dest: /etc/nginx/sites-available/app-web
      notify:
        - restart nginx

  handlers:
    - name: restart nginx
      service:
        name: nginx
        state: restarted

Paso 3: Ejecutar el Playbook

ansible-playbook -i hosts deploy_app.yml

Explicación del Código

  • Instalación de dependencias: Se instalan Nginx y Git en los servidores web.
  • Clonación del repositorio: Se clona el código de la aplicación desde un repositorio de GitHub.
  • Configuración de Nginx: Se utiliza una plantilla para configurar Nginx y se reinicia el servicio.

Ejercicio Práctico

Crea un playbook de Ansible que despliegue una aplicación diferente, por ejemplo, una aplicación Node.js. Asegúrate de incluir la instalación de Node.js y la configuración del servidor web.

  1. Gestión de Configuración de Servidores

Descripción del Caso

Una empresa necesita mantener la configuración de sus servidores consistente y evitar la "deriva de configuración" (cuando los servidores se desincronizan con la configuración deseada).

Solución

Utilizar herramientas de gestión de configuración como Puppet para definir y aplicar configuraciones de manera automática.

Ejemplo Práctico con Puppet

Paso 1: Instalación de Puppet

sudo apt update
sudo apt install puppet

Paso 2: Crear un Manifiesto de Puppet

node 'servidor1' {
  package { 'nginx':
    ensure => installed,
  }

  service { 'nginx':
    ensure => running,
    enable => true,
  }

  file { '/etc/nginx/sites-available/default':
    ensure  => file,
    content => template('nginx/default.erb'),
    notify  => Service['nginx'],
  }
}

Paso 3: Aplicar el Manifiesto

puppet apply /etc/puppet/manifests/site.pp

Explicación del Código

  • Instalación de Nginx: Se asegura de que Nginx esté instalado.
  • Servicio de Nginx: Se asegura de que el servicio de Nginx esté corriendo y habilitado para iniciarse al arrancar el sistema.
  • Configuración de Nginx: Se utiliza una plantilla para configurar Nginx y se notifica al servicio para que se reinicie si la configuración cambia.

Ejercicio Práctico

Crea un manifiesto de Puppet que configure un servidor Apache en lugar de Nginx. Asegúrate de incluir la instalación del paquete, la configuración del servicio y la aplicación de una plantilla de configuración.

  1. Automatización de Tareas de Mantenimiento

Descripción del Caso

Una empresa necesita realizar tareas de mantenimiento rutinarias, como actualizaciones de software y limpieza de logs, de manera automática para reducir la carga de trabajo del equipo de TI.

Solución

Utilizar scripts de automatización y herramientas de gestión de tareas como cron para programar estas tareas.

Ejemplo Práctico con un Script Bash

Paso 1: Crear un Script de Mantenimiento

#!/bin/bash

# Actualizar paquetes
sudo apt update && sudo apt upgrade -y

# Limpiar logs antiguos
find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;

# Reiniciar servicios críticos
sudo systemctl restart nginx
sudo systemctl restart mysql

Paso 2: Programar el Script con cron

crontab -e

Añadir la siguiente línea para ejecutar el script cada domingo a las 2 AM:

0 2 * * 0 /path/to/maintenance_script.sh

Explicación del Código

  • Actualización de paquetes: Se actualizan todos los paquetes instalados en el sistema.
  • Limpieza de logs: Se eliminan los logs que tienen más de 30 días.
  • Reinicio de servicios: Se reinician servicios críticos como Nginx y MySQL.

Ejercicio Práctico

Crea un script de mantenimiento que incluya la limpieza de archivos temporales y la verificación del espacio en disco. Programa este script para que se ejecute diariamente.

Conclusión

En esta sección, hemos explorado cómo la automatización y la gestión de configuración pueden aplicarse en escenarios prácticos para mejorar la eficiencia y consistencia de la infraestructura TI. A través de ejemplos con Ansible, Puppet y scripts Bash, hemos visto cómo estas herramientas pueden simplificar tareas complejas y repetitivas. Los ejercicios prácticos proporcionados te ayudarán a aplicar estos conceptos en tus propios entornos.

A medida que avances en el curso, recuerda que la práctica constante y la experimentación son clave para dominar estas herramientas y técnicas. ¡Buena suerte!

Curso de Infraestructuras TI

Módulo 1: Introducción a las Infraestructuras TI

Módulo 2: Gestión de Servidores

Módulo 3: Gestión de Redes

Módulo 4: Gestión de Almacenamiento

Módulo 5: Alta Disponibilidad y Recuperación ante Desastres

Módulo 6: Monitoreo y Rendimiento

Módulo 7: Seguridad en Infraestructuras TI

Módulo 8: Automatización y Gestión de Configuración

Módulo 9: Tendencias y Futuro de las Infraestructuras TI

© Copyright 2024. Todos los derechos reservados