NFS Ansible
En este procedimiento, cubrirá los temas de almacenamiento de archivos de red (NFS), a través de ansible
Configurar playbook
Recuerde, estos son playbooks sugeridos y no son la única forma en que puede escribirlos para que los playbooks funcionen para usted.
Siempre puede cambiarlos usando raw, Shell o cmd para lograr los mismos resultados, pero estamos demostrando la mejor manera de lograr los objetivos.
Configuración de su entorno de laboratorio para NFS.
Las instantáneas son fáciles de crear en VirtualBox: simplemente debe hacer clic en el siguiente botón que se selecciona con el cursor del mouse para crear una instantánea, me vaso en 3 mv de Rocky Linux 8.X:
Hacer clic para tomar uno en la parte superior y luego nombrar su instantánea. Esto le permitirá determinar el estado de la imagen de la máquina cuando se tomó la instantánea. Esto se puede ver en la siguiente figura:

Almacenamiento en red NFS
NFS es una excelente manera de compartir archivos entre sistemas Linux. Es autenticación basada en máquina para que el sistema pueda tener acceso a los archivos de todos los usuarios. Esto es excelente para Linux cuando se comparten archivos pequeños a medida que aumenta la velocidad y los recursos compartidos del sistema se recuperan de manera más eficiente.
Profundicemos un poco más en NFS y lo que puede hacer para los usuarios de Rocky Linux 8.1 y Linux en general mediante la configuración práctica. Esto le mostrará cómo configurar NFS manualmente y mediante la automatización. Rocky Linux 8.1 es compatible con NFSv3 y NFSv4. NFSv3 puede usar UDP y TCP, mientras que NFSv4 usa TCP. Las versiones anteriores ya no son compatibles. Configuremos NFS en nuestros sistemas.
Inicialmente, vamos a instalar el paquete necesario si aún no está instalado. Este paquete es el nfs-utils paquete y es necesario para el cliente y las máquinas de destino. Proporciona todas las herramientas para acceder a las carpetas y montar las carpetas necesarias. Al instalarlo tanto en el servidor como en el cliente, se asegura de poder habilitar todas las dependencias necesarias para ejecutar el servicio.
Instalamos nfs-utils como se muestra en la siguiente figura:

Después de instalar la versión correcta, vamos a habilitar el daemon:
[usuario@rhel1 ~]$ sudo systemctl enable –now nfs-server
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
Luego, tenemos que abrir el firewall para asegurarnos de que la conectividad está permitida:
[usuario@rhel1 ~]$ sudo firewall-cmd –permanent –add-service=nfs
success
[usuario@rhel1 ~]$ sudo firewall-cmd –reload
Success
A continuación, configuraremos las exportaciones, que son las que le dicen al servidor NFS qué permitir a todo el mundo. Los ajustes son granulares y permiten un control exhaustivo. Las exportaciones le permiten decirle al sistema qué se puede leer y por qué máquinas. Puede permitir máquinas específicas a través de DNS, IP, rango de IP, etc.
Primero, hagamos un directorio compartido como root:
[usuario@rhel1 ~]$ sudo su –
[root@rhel1 ~]# cd
[root@rhel1 ~]# mkdir -p /share/folder
Esto será la carpeta que compartimos . Otros accederán para leer y escribir archivos. Estaremos editando el archivo /etc/exports para compartir esta carpeta.

Estos son algunos ejemplos de un archivo exports con el formato correcto. Hablaremos más sobre las configuraciones que se muestran en la siguiente captura de pantalla, como ( ):rw
Como puede ver, puede exportar recursos compartidos NFS a través de DNS como se indica. Puede exportar a través de IP y rango de IP. Puede usar el espacio delimitado para varias ubicaciones compartidas sino desea apilarlos. También puede poner restricciones como solo lectura o lectura-escritura. La opción no_root_squash permite el acceso raíz al directorio en lugar de nobody seleccionar al usuario. De forma predeterminada, si un cliente raíz crea un archivo, el usuario nobody es el propietario de ese archivo. Esto puede causar problemas con el acceso al archivo, por lo que es una buena idea usar no_root_squash. Esto le da acceso completo a la raíz de los archivos.
Entonces debe ejecutarse exportfs -r para actualizar las exportaciones para que se sirvan a los endpoints:
[root@rhel1 ~]# exportfs -r
Luego puede verificar sus exportaciones para asegurarse de que se están sirviendo con el comando: exportfs
[root@rhel1 ~]# exportfs
/share/folder rhel2
/share/folder rhel3
/share/folder 192.168.1.0/24
/share/folder *example.com
A continuación, vamos a montar la carpeta en otro sistema para que pueda compartir archivos.
En RHEL3, vamos a ejecutar el mount comando para montar el sistema de archivos. También puedes agregar esto para fstab hacer esto permanente:
[root@rhel3 ~]# mkdir –p /share
[root@rhel3 ~]# mount -t nfs 192.168.1.198:/share/folder /share
NFS Ansible Automation playbook
Vamos a profundizar en el playbook de Ansible Automation. Lo desglosaremos completamente para las exportaciones de NFS, para mostrar cada paso del playbook y lo que hace cada elemento. Por elemento , nos referimos a las variables y comandos establecidos dentro de un playbook de Ansible:
—
– hosts: exports
become: true
become_method: sudo
Aquí tenemos el comienzo del playbook. Los anfitriones son los objetivos del playbook. Estos son normalmente los servidores en los que desea realizar cambios. Estos se enumeran en el archivo de inventario. En este caso, estamos apuntando al grupo exports. En este caso, become le dice a Ansible que desea elevar al usuario y become_method le dice que desea usar sudo para elevar los permisos:
tasks:
– name: Make sure Directory exists
file:
path: /share/folder
owner: root
state: directory
Ahora vamos a pasar a las tareas. Estas son las acciones que queremos que Ansible tome. La primera tarea que vemos aquí es crear un directorio usando el módulo de archivo. El campo name es como un comentario para una mejor comprensión del código. A partir de ahí, vemos los otros elementos que configuramos, y luego están los valores predeterminados asumidos. , puede usar el archivo ansible-doc para ver el uso y los ejemplos:
– name: Install nfs utilities
package:
name: nfs-utils
state: “present”
En esta tarea, instalamos el paquete nfs-utilitis usando el instalador de paquetes genérico para Ansible. Al usar esos datos, sabe que usar dnf para instalar el software:
– name: the directory is shared
copy:
content: “/share/folder *(rw,no_root_squash)”
dest: /etc/exports
Usando el modulo copy, estamos reemplazando el archivo exports actual. Si se tratara de un archivo de exportación de varias líneas, tendría que ser una plantilla, lineinfile o todas las líneas tendrían que estar en la tarea.
Aquí, estamos usando el modulo service para habilitar e iniciar el servicio nfs-server. Esto asegurará que el servicio se inicie. El servicio se habilita al arrancar. El servicio también carga las exportaciones, ya que nfs-server se inicia después de actualizar el archivo exports :
– name: Enable and Start NFS Service
service:
name: nfs-server
state: started
enabled: yes
Usando el modulo firewalld, vamos a permitir una apertura permanente para el servicio de archivos NFS. Esto permitirá la conectividad con los recursos que optemos por compartir. Una vez que se completa, exports se completa el playbook, y el siguiente es el playbook : clients
– name: Open firewall for NFS-Server
firewalld:
service: nfs
immediate: yes
permanent: yes
state: enabled
Después terminar de crear el playbook, vamos a usar el comando:
ansible-playbook -i inventory nfs_server.yml -u usuario -k –ask-become –v
El parámetro -i indica el nombre del inventario a utilizar. El parámetro -u indica el nombre de usuario que se utilizará al ejecutar el playbook.
El parámetro –k indica solicitar la contraseña de usuario. El indicador –ask-become especifica que desea proporcionar la contraseña sudo para la ejecución del playbook.
Finalmente, –v muestra detalles adicionales para que pueda ver más registros de lo que sucede cuando se ejecuta el playbook.
Aquí, mostraremos una vista rápida del playbook utilizado para respaldar la configuración del cliente de utilizar un recurso compartido que se ha configurado para nosotros:
—
– hosts: clients
become: true
become_method: sudo
tasks:
– name: Install nfs utilities
package:
name: nfs-utils
state: present
– name: Add the NFS share and mount it with fstab
mount:
path: /share
src: 192.168.1.198:/share/folder
state: mounted
fstype: nfs
Instalamos nfs-utilits y luego monte el archivo en el /share/folder
Para ejecutar el playbook, usaremos el siguiente comando:
ansible-playbook -i inventory nfs_client.yml -u usuario -k –ask-become –v.
Archivos de este procedimiento:
https://github.com/agarciafer/rootdesdecero




