7 tareas diarias de administrador de sistemas para automatizar con Ansible

Ansible, un proyecto gratuito y de código abierto basado en Python de Red Hat, es una popular plataforma de gestión de configuración y automatización de TI.

Es multiplataforma y puede funcionar con la mayor√≠a de los sistemas operativos modernos, incluidos Linux, Windows y Mac. Admite un lenguaje declarativo escrito en YAML o YAML Ain’t Markup Language para describir la configuraci√≥n del sistema.

Ansible, junto con otras plataformas modernas de administración de configuración, ha revolucionado la automatización de TI y los estándares de la industria. Las herramientas de gestión de configuración se han convertido en parte del conjunto de herramientas DevOps y son una parte inseparable de cualquier ciclo de vida de proceso de TI moderno. Esto se aplica a cualquier entorno de infraestructura moderno, ya sea que se construya en un entorno local, híbrido o en la nube. No solo para DevOps, Ansible también puede ayudar a automatizar muchas tareas diarias realizadas por un administrador del sistema.

Una de las ventajas de usar Ansible es que no necesita agentes y no necesita mucho para comenzar, además del acceso SSH a la máquina de destino y la versión compatible de Python, que ya está instalada de forma predeterminada en la mayoría de los sistemas operativos modernos. Además, dado que es una herramienta liviana, se puede implementar y usar con un legado de sistemas innovadores.

Usos de Ansible

Orquestación

Ansible es una herramienta de elecci√≥n para orquestar varias tareas de implementaci√≥n y administraci√≥n del sistema. Los playbooks permiten usar los mismos flujos de trabajo de orquestaci√≥n en diferentes proyectos y los datos de configuraci√≥n basados ‚Äč‚Äčen YAML permiten almacenar y crear versiones de su infraestructura en el repositorio de Git o en cualquier plataforma de control de versiones compatible.

Implementación de aplicaciones

Ya sea que se trate de una aplicación de código simple de unas pocas líneas o de una implementación pesada de varios niveles, Ansible hace posible automatizar el ciclo de vida de implementación de la aplicación de un extremo a otro.

Seguridad y Cumplimiento

Ansible tambi√©n puede ayudar a garantizar que sus sistemas est√©n protegidos seg√ļn las pautas de su organizaci√≥n y cumplan con los est√°ndares de la industria. Puede ejecutarse en miles de servidores, generar una auditor√≠a y corregir esos agujeros de seguridad, dando al administrador un control total del entorno.

Veamos ahora algunas de las tareas comunes de Sysadmin que puede automatizar con Ansible.

Copie archivos desde un sistema local o remoto

Como administrador del sistema, es com√ļn copiar archivos de un directorio a otro. Los archivos de configuraci√≥n a menudo deben copiarse en servidores remotos o, a veces, necesitamos mover archivos de una ubicaci√≥n remota a otra.

El módulo de copia de Ansible puede ayudarlo a realizar estas tareas en un libro de jugadas.

Es una tarea rutinaria para un administrador de sistemas conocer el estado de los servidores administrados y realizar acciones predefinidas seg√ļn las pol√≠ticas de la organizaci√≥n. Una de esas tareas es conocer el tiempo de actividad del servidor. Con Ansible, podemos obtener f√°cilmente valores de tiempo de actividad e imprimirlos juntos. A continuaci√≥n se muestra un ejemplo para copiar la configuraci√≥n ntp de un servidor local a un servidor remoto mediante el m√≥dulo de copia:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Copy a new ntp configuration file and back up the original, if it differs
      copy:
        src: ./ntp.conf
        dest: /etc/ntp.conf
        owner: root
        group: root
        mode: '0644'
        backup: yes

Configurar trabajos cron adicionales

La configuración de trabajos programados para realizar tareas rutinarias es parte de la gestión de cualquier servidor. Puede programar copias de seguridad automáticas, parches, auditorías, etc., durante ciertos momentos del día o del mes de forma automática y dejando tiempo productivo para su uso.

cron es una de esas herramientas en Linux que admite la programación, y Ansible puede ayudarlo a agregar o modificar esos trabajos. Como ejemplo, el libro de jugadas a continuación demuestra cómo puede configurar un trabajo rsync como raíz en algunos o todos sus servidores fácilmente usando Ansible.

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Deploy cron job
      cron:
        name: "Set rsync job"
        user: root
        minute: "5"
        hour: "4"
        job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"

Administrar discos y sistemas de archivos

Ansible se puede usar para administrar discos, dise√Īos de particiones, sistemas de archivos y montajes, incluido /etc/fstab en servidores Linux. Diferentes m√≥dulos de Ansible lo hacen posible. Aqu√≠ hay un ejemplo que crea una partici√≥n en un disco de 100 GB, lo formatea con el sistema de archivos ext4, crea un nuevo directorio para montar la partici√≥n y finalmente lo monta en un directorio determinado. Tambi√©n se crea una entrada en /etc/fstab a trav√©s del montaje temporal o permanente seg√ļn las opciones del m√≥dulo.

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Create a partition
      parted:
        device: /dev/sdb
        number: 1
        part_end: "100%"
        state: present
    - name: Format new partition
      filesystem:
        fstype: ext4
        dev: /dev/sdb1
    - name: Create mount directory
      file:
        path: /data
        state: directory
    - name: Mount partition
      mount:
        path: /data
        src: /dev/sdb1
        fstype: ext4
        state: mounted

Recopilar registros del servidor

Mantener los registros en un lugar conveniente a veces es esencial para la seguridad, la auditoría y el análisis. Ansible permite la recopilación de registros de diferentes servidores en su entorno empresarial y los mantiene fácilmente en su ubicación definida. Aquí está el libro de jugadas para lograr esto:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
  
    - name: Find logs
      find:
        paths: /var/log/
        patterns: '*.log'
        recurse: yes
      register: _logs

    - name: Fetch logs
      fetch:
        src: "{{ item.path }}"
        dest: /tmp/logs
      with_items: "{{ _logs.files }}"

Instalar o eliminar paquetes y software

A menudo se requiere que los paquetes se instalen seg√ļn las solicitudes de los usuarios o como parte de las compilaciones iniciales del servidor. Tambi√©n es posible que necesitemos eliminar ciertos paquetes que ya no son necesarios o que tienen algunos errores cr√≠ticos, etc. Ansible le permite instalar o eliminar paquetes f√°cilmente sin la molestia de ir a cada servidor y ejecutar comandos manuales. Este es un ejemplo que demuestra la instalaci√≥n y eliminaci√≥n de un paquete para servidores Linux basados ‚Äč‚Äčen Ubuntu y RHEL/CentOS.

---
- hosts: ubuntu
  gather_facts: no
  tasks:
    - name: Install lsof utility
      apt:
        pkg: lsof
        state: latest
      sudo: yes
    - name: Remove ARP Scan utility
      apt:
        pkg: arp-scan
        state: absent
      sudo: yes
      
 ---
- hosts: centos
  gather_facts: no
  tasks:
    - name: Install lsof utility
      yum:
        pkg: lsof
        state: latest
      sudo: yes
    - name: Remove ARP Scan utility
      yum:
        pkg: arp-scan
        state: absent
      sudo: yes

Administrar usuarios

Los usuarios y grupos forman la estructura b√°sica en torno a la cual los sistemas basados ‚Äč‚Äčen Unix/Linux gestionan el acceso y los permisos. En una gran organizaci√≥n, administrar usuarios y grupos puede ser un gran desaf√≠o a pesar de la automatizaci√≥n para respaldar el entorno.

Con Ansible, el administrador del sistema tiene una excelente herramienta para crear, modificar y eliminar usuarios y grupos con todas las diferentes posibilidades compatibles con el sistema operativo.

Aqu√≠ hay un ejemplo simple que muestra la creaci√≥n y eliminaci√≥n de usuarios y grupos usando Ansible. Despu√©s de que se ejecute este libro de jugadas, los servidores de destino tendr√°n el grupo A y el grupo B creados con los GID dados, mientras que el usuario 1 se eliminar√°, si est√° presente. Se crear√° un nuevo usuario sin shell como usuario2 con UID dado, grupos asignados y contrase√Īa bloqueada.

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - group:
        gid: 12310
        name: groupA
        state: present
    - group:
        gid: 12311
        name: groupB
        state: present
    - user:
        name: user1
        state: absent
    - user:
        name: user2
        uid: 12427
        shell: /bin/false
        password_lock: yes
        groups: groupA, groupB

Gestión de servicios

Los servicios son demonios de proceso que se ejecutan en segundo plano y sirven alg√ļn servicio como sshd que proporciona conectividad SSH, etc. Con Ansible, puede administrar los servicios del sistema y del usuario, como iniciarlos, detenerlos y reiniciarlos. Aqu√≠ hay un libro de jugadas de muestra para demostrar eso:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Restart ssh daemon
      service:
        name: ssh
        state: restarted
    - name: Restart sssd daemon
      service:
        name: sssd
        state: stopped
    - name: Restart httpd daemon
      service:
        name: httpd
        state: started

En el ejemplo anterior, el servicio SSH se reiniciará mientras se detiene el servicio SSSD a continuación. El demonio httpd se inicia hacia el final. Como Ansible es idempotente, cualquier servicio que ya se haya iniciado o detenido no cambiará, mientras que el reinicio siempre cambia el estado del servicio. Recuerde verificar el nombre del servicio, ya que las diferentes distribuciones de Linux usan otros nombres incluso para el mismo servicio, como ssh y sshd.

Resumen ūüĎ®‚ÄćūüíĽ

Ansible facilita la vida de un administrador de sistemas al permitirle ejecutar tareas repetitivas y que consumen mucho tiempo de forma automatizada y reducir los errores humanos y el esfuerzo. Además, habilitará el almacenamiento de datos de configuración en un repositorio de código central como Git, lo que permitirá que varios usuarios colaboren y revisen cada actividad.

Para leer más sobre Ansible y su amplio conjunto de módulos, consulte su documentación.

Botón volver arriba