#Introduction
In this tutorial, How to set up an NFS server and client using Ansible. I use Vagrant. In my example, Ansible creates multiple servers here. Now, let’s go to the Ansible Setup NFS server and client.
Ansible file and folder
[vagrant@ansible_controller ~]$ tree .
.
├── ansible
│   ├── ansible.cfg
│   ├── exports.j2
│   └── hosts
├── nfs-client.yml
└── nfs-server.yml
1 directory, 5 filesAnsible script
nfs-server.yml file for NFS Server as below
---
- hosts: nfs-server
  become: yes
  tasks:
    - name: install nfs-utils
      yum: name=nfs-utils state=latest
    - name: Create a mountable directory if it does not exist
      file:
        path: /home/vagrant/nfs_test
        state: directory
        owner: vagrant
        group: vagrant
        mode: '0775'
    - name: enable rpcbind nfslock nfs
      service:
        name: "{{ item }}"
        enabled: yes
      with_items:
        - rpcbind
        - nfslock
        - nfs
    - name: Copy exports file.
      template:
        src: ./ansible/exports.j2
        dest: /etc/exports
        owner: root
        group: root
        mode: 0644
    - name: NFS apply change configrue
      shell: systemctl reload nfs;exportfs -anfs-client.yml file for nfs clients as below
---
- hosts: nfs-clients
  become: yes
  tasks:
    - name: install nfs-utils
      yum: name=nfs-utils state=latest
    - name: Create a mountable directory if it does not exist
      file:
        path: /mnt/web_storage
        state: directory
        owner: vagrant
        group: vagrant
        mode: '0775'
    - name: Mount volumn
      shell: sudo mount 192.168.3.9:/home/vagrant/nfs_test /mnt/web_storageexports.j2 file with content as below
# /etc/exports: the access control list for filesystems which may be exported
#   to NFS clients.  See exports(5).
/mnt/nfs_test            *(rw,sync,no_root_squash,no_subtree_check)My example hosts file as below
[nfs-server]
servernfs
[nfs-clients]
server1File ansible/ansible.cfg example as below
[defaults]
inventory = ./hosts
forks = 15
log_path=$HOME/ansible/ansible.log
host_key_chcking = False
gathering = smartAnsible run command for NFS server
[vagrant@ansible_controller ~]$ ansible-playbook -i ansible/hosts nfs-server.ymlThe output terminal as picture below

Ansible run command for NFS client
[vagrant@ansible_controller ~]$ ansible-playbook -i ansible/hosts nfs-client.ymlThe output terminal as picture below

Conclusion
You have to use ansible setup NFS server and NFS client. I hope will this your helpful. Thank you for reading the DevopsRoles page!


it does not mount when i try
shell: sudo mount 192.168.3.9:/home/vagrant/nfs_test /mnt/web_storage
My example /etc/hosts as below:
[vagrant@ansible_controller ~]$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 ansible_controller
192.168.3.10 ansible_controller
192.168.3.11 server1
192.168.3.9 servernfs
Thanks, have a nice day!
Hi @jack,
you can check connection from nfs client to nfs server. telnet 192.168.3.9 111
Check /etc/hosts ?
thanks
There might be a mistake here – you create a “/home/vagrant/nfs_test” but then you add “/mnt/nfs_test” to your exports file. These paths should be the same.