Diferencia entre revisiones de «Gestión de montajes NFS»

De jagfloriano.com
Ir a la navegaciónIr a la búsqueda
Línea 14: Línea 14:
== Playbooks incluidos ==
== Playbooks incluidos ==


* <code>check_mounts_cifs_nfs.yml</code>
* <code>check_mounts_nfs.yml</code>
<syntaxhighlight lang="yml">
<syntaxhighlight lang="yml">
---
---
Línea 20: Línea 20:
   become: true
   become: true
   vars:
   vars:
     fstab_host_pattern: "serverA|rkanserverB|serverC
     fstab_host_pattern: "serverA|rkanserverB|serverC"


   tasks:
   tasks:
     - name: Obtener lista de puntos de montaje NFS que coincidan con el source indicado
     - name: Obtener lista de puntos de montaje que coincidan con el source indicado
       shell: mount -l|grep nfs |egrep '{{ fstab_host_pattern }}' | awk '{print $3}'
       shell: mount -l|grep nfs |egrep '{{ fstab_host_pattern }}' | awk '{print $3}'
       register: mount_output_nfs
       register: mount_output
 
    - name: Mostrar los puntos de montaje encontrados
      debug:
        msg: "En {{ inventory_hostname }}, se encontraron estos puntos de montaje NFS: {{ mount_output_nfs.stdout_lines }}"
      when: mount_output_nfs.stdout_lines | length > 0
 
    - name: Obtener lista de puntos de montaje que coincidan con el source indicado
      shell: mount -l|grep cifs |egrep '{{ fstab_host_pattern }}' | awk '{print $3}'
      register: mount_output_cifs


     - name: Mostrar los puntos de montaje encontrados
     - name: Mostrar los puntos de montaje encontrados
       debug:
       debug:
         msg: "En {{ inventory_hostname }}, se encontraron estos puntos de montaje CIFS: {{ mount_output_cifs.stdout_lines }}"
         msg: "En {{ inventory_hostname }}, se encontraron estos puntos de montaje: {{ mount_output.stdout_lines }}"
       when: mount_output_cifs.stdout_lines | length > 0
       when: mount_output.stdout_lines | length > 0
</syntaxhighlight>
</syntaxhighlight>



Revisión del 17:34 2 ene 2026

Gestión de montajes NFS y CIFS con Ansible

Objetivo

Esta página describe el uso y la lógica de tres playbooks de Ansible orientados a la verificación y gestión de montajes de red (NFS y CIFS) en sistemas Linux.

Los playbooks permiten:

  • Auditar montajes existentes
  • Identificar montajes por tipo y origen
  • Montar shares definidos en /etc/fstab

---

Playbooks incluidos

  • check_mounts_nfs.yml
---
- hosts: all
  become: true
  vars:
     fstab_host_pattern: "serverA|rkanserverB|serverC"

  tasks:
    - name: Obtener lista de puntos de montaje que coincidan con el source indicado
      shell: mount -l|grep nfs |egrep '{{ fstab_host_pattern }}' | awk '{print $3}'
      register: mount_output

    - name: Mostrar los puntos de montaje encontrados
      debug:
        msg: "En {{ inventory_hostname }}, se encontraron estos puntos de montaje: {{ mount_output.stdout_lines }}"
      when: mount_output.stdout_lines | length > 0


  • umount_NFS.yml
---
- hosts: all
  become: true
  vars:
     fstab_host_pattern: "serverA|rkanserverB|serverC"

  tasks:
    - name: Obtener lista de puntos de montaje que coincidan con el source indicado
      shell: mount -l|grep nfs |egrep '{{ fstab_host_pattern }}' | awk '{print $3}'
      register: mount_output

    - name: Mostrar los puntos de montaje encontrados
      debug:
        msg: "En {{ inventory_hostname }}, se encontraron estos puntos de montaje: {{ mount_output.stdout_lines }}"
      when: mount_output.stdout_lines | length > 0

    - name: Desmontar puntos de montaje detectados.
      command: umount {{ item }}
      with_items: "{{ mount_output.stdout_lines }}"
      when: mount_output.stdout_lines | length > 0
      ignore_errors: yes
  • mount_shares.yml
---
- hosts: all
  become: true

  tasks:
    - name: Montar todos los shares del fstab
      command: mount -a

Cada playbook cubre un caso de uso distinto y puede utilizarse de forma independiente o como parte de un flujo de trabajo.

---

1. check_mounts.yml

¿Qué hace?

Este playbook comprueba los montajes NFS activos en los servidores y filtra aquellos cuyo origen coincide con un patrón definido.

Se utiliza principalmente para:

  • Auditorías de montajes
  • Validaciones previas a mantenimiento
  • Comprobaciones tras reinicios

---

Lógica principal

  • Ejecuta el comando mount
  • Filtra únicamente montajes NFS
  • Aplica un patrón sobre el host de origen
  • Muestra los resultados por servidor

---

Variables

fstab_host_pattern: "SERVER1|SERVER2|SERVER3"

Esta variable permite adaptar el playbook a distintos entornos sin modificar el código.

---

Cuándo usarlo

  • Antes de desmontar almacenamiento
  • Para verificar dependencias de un servidor
  • En tareas de inventario de NFS

---

2. check_mounts_cifs_nfs.yml

¿Qué hace?

Este playbook amplía el anterior e incluye la verificación tanto de montajes NFS como CIFS.

Es útil en entornos mixtos donde conviven:

  • Shares NFS (Linux/Unix)
  • Shares CIFS (Windows / NAS)

---

Lógica principal

  • Ejecuta mount en el host remoto
  • Separa resultados por tipo de filesystem
  • Muestra información estructurada al operador

---

Diferencia respecto a check_mounts.yml

Característica check_mounts.yml check_mounts_cifs_nfs.yml
NFS
CIFS No
Entornos mixtos No
Uso principal Auditoría NFS Auditoría global

---

Cuándo usarlo

  • Troubleshooting de accesos a red
  • Migraciones de almacenamiento
  • Análisis post-reboot
  • Entornos con NAS o servidores Windows

---

3. mount_shares.yml

¿Qué hace?

Este playbook monta todos los sistemas de ficheros definidos en /etc/fstab ejecutando mount -a en los servidores destino.

No modifica el fichero /etc/fstab, solo aplica su contenido.

---

Lógica principal

  • Ejecuta mount -a
  • Aplica a todos los hosts del inventario
  • No realiza validaciones previas

---

Cuándo usarlo

  • Tras un reinicio del servidor
  • Después de cambios en /etc/fstab
  • Recuperación de montajes NFS/CIFS
  • Validación tras incidentes

⚠️ Importante: Antes de ejecutar este playbook, asegurarse de que /etc/fstab es correcto. Un error puede provocar bloqueos del sistema.

---

Flujo recomendado de uso

Un uso habitual de estos playbooks sería:

  1. Ejecutar check_mounts_cifs_nfs.yml para conocer el estado actual
  2. Resolver incidencias detectadas
  3. Ejecutar mount_shares.yml para montar recursos necesarios
  4. Verificar nuevamente con check_mounts.yml

---

Ejecución de los playbooks

Ejemplo de ejecución:

ansible-playbook -i inventory check_mounts.yml
ansible-playbook -i inventory check_mounts_cifs_nfs.yml
ansible-playbook -i inventory mount_shares.yml

---

Conceptos que se aprenden con estos playbooks

  • Uso de comandos del sistema desde Ansible
  • Registro y análisis de salida
  • Auditoría de infraestructura
  • Separación de responsabilidades por playbook
  • Automatización segura de tareas repetitivas

---

Nota final

Estos playbooks están pensados como herramientas de apoyo al operador. Para entornos más complejos se recomienda evolucionar hacia roles Ansible y validaciones más avanzadas.