No description
Find a file
semantic-release-bot 17abf7fe46 chore(release): 1.12.0 [skip ci]
# [1.12.0](https://github.com/de-it-krachten/ansible-role-nfs/compare/v1.11.0...v1.12.0) (2026-07-26)

### Bug Fixes

* Standarize vars.yml ([d7a5fe9](d7a5fe9be9))

### Features

* Add support for ansible-core 2.20+ ([4f6a5f3](4f6a5f3fca))
* Added support for Fedora 44 ([709e4a3](709e4a3397))
* Added support for Ubuntu 26.04 LTS ([ff62b67](ff62b67a71))
* Drop support for Fedora 42 ([597d6cb](597d6cb5c0))
2026-07-26 19:56:08 +00:00
.github/workflows Update CI 2026-07-23 14:50:37 +02:00
defaults feat: Add NFS v4 ACL tools 2025-03-14 20:56:26 +01:00
handlers feat: Add support for ansible-core 2.20+ 2026-06-07 16:25:19 +02:00
meta Update CI 2026-06-07 17:04:08 +02:00
molecule/default Update CI 2026-07-25 17:30:48 +02:00
tasks feat: Add support for ansible-core 2.20+ 2026-06-07 16:25:19 +02:00
templates Refactor to support server+server+kerberos 2021-10-18 00:20:33 +02:00
.ansible-lint Update CI 2026-06-07 17:04:08 +02:00
.cicd Update CI 2026-06-09 11:09:23 +02:00
.cicd.overwrite Update CI 2026-03-14 19:45:55 +01:00
.collections fix: Fix for correctly resolving default vars 2024-02-02 12:03:06 +01:00
.gitignore feat: Update supported platforms & CI 2024-12-29 02:23:03 +01:00
.releaserc.yml Update CI 2026-03-06 22:53:01 +01:00
.roles feat: Update CI to latest standards 2022-10-09 01:18:24 +02:00
.yamllint feat: Update supported platforms & CI 2024-12-29 02:23:03 +01:00
CHANGELOG.md chore(release): 1.12.0 [skip ci] 2026-07-26 19:56:08 +00:00
README.md Update CI 2026-06-07 17:04:08 +02:00

CI

ansible-role-nfs

Install NFS server/client versions v3/v4

Dependencies

Roles

None

Collections

  • ansible.posix

Platforms

Supported platforms

  • Red Hat Enterprise Linux 81
  • Red Hat Enterprise Linux 91
  • Red Hat Enterprise Linux 101
  • CentOS 71
  • RockyLinux 8
  • RockyLinux 9
  • RockyLinux 10
  • OracleLinux 8
  • OracleLinux 9
  • OracleLinux 10
  • AlmaLinux 8
  • AlmaLinux 9
  • AlmaLinux 10
  • Debian 11 (Bullseye)1
  • Debian 12 (Bookworm)1
  • Debian 13 (Trixie)
  • Ubuntu 18.04 LTS1
  • Ubuntu 20.04 LTS1
  • Ubuntu 22.04 LTS1
  • Ubuntu 24.04 LTS
  • Ubuntu 26.04 LTS
  • Fedora 43
  • Fedora 441

Note: 1 : no automated testing is performed on these platforms

Role Variables

defaults/main.yml


# Install/confire NFS server
nfs_server: false

# Install/confire NFS client
nfs_client: true

# Configure NFS to use KRB5 (kerberos)
nfs_krb5: false

# Open firewall ports
nfs_firewall: true

# List of NFS exports to share on server
nfs_exports: []

# List of NFS mount to setup on clients
nfs_mounts: []

# Exclude this mount if this string is found in the source name/ip
nfs_mount_exclude: DUMMY

# Only perform NFS mount removals on clients
nfs_umount_only: false

# Enable the use of home directories located on remote NFS exports
# This will set the appropiate SELinux boolean
nfs_home_dir: false

# NFS implementation(s) to use
nfs_v3: false
nfs_v4: true

# Ports to use to make NFS v3 work through firewall
nfs_statd_port: "32766"
nfs_mountd_port: "32767"
nfs_lockd_port: "32768"

# List of NFS v3 ports
nfs_v3_server_firewall_ports:
  - port: '2049'
    proto: tcp
  - port: '111'
    proto: tcp
  - port: '111'
    proto: udp
  - port: "{{ nfs_statd_port }}"
    proto: tcp
  - port: "{{ nfs_statd_port }}"
    proto: udp
  - port: "{{ nfs_mountd_port }}"
    proto: tcp
  - port: "{{ nfs_mountd_port }}"
    proto: udp
  - port: "{{ nfs_lockd_port }}"
    proto: tcp
  - port: "{{ nfs_lockd_port }}"
    proto: udp

# List of NFS v4 ports
nfs_v4_server_firewall_ports:
  - port: '2049'
    proto: tcp

defaults/family-Debian.yml


# Install/confire NFS server
nfs_server: false

# Install/confire NFS client
nfs_client: true

# Configure NFS to use KRB5 (kerberos)
nfs_krb5: false

# Open firewall ports
nfs_firewall: true

# List of NFS mount
nfs_mounts: []

# Exclude this mount if this string is found in the source name/ip
nfs_mount_exclude: DUMMY

# Enable the use of home directories located on remote NFS exports
# This will set the appropiate SELinux boolean
nfs_home_dir: false

# NFS implementation(s) to use
nfs_v3: false
nfs_v4: true

# Ports to use to make NFS v3 work through firewall
nfs_statd_port: "32766"
nfs_mountd_port: "32767"
nfs_lockd_port: "32768"

# List of NFS v3 ports
nfs_v3_server_firewall_ports:
  - port: '2049'
    proto: tcp
  - port: '111'
    proto: tcp
  - port: '111'
    proto: udp
  - port: "{{ nfs_statd_port }}"
    proto: tcp
  - port: "{{ nfs_statd_port }}"
    proto: udp
  - port: "{{ nfs_mountd_port }}"
    proto: tcp
  - port: "{{ nfs_mountd_port }}"
    proto: udp
  - port: "{{ nfs_lockd_port }}"
    proto: tcp
  - port: "{{ nfs_lockd_port }}"
    proto: udp

# List of NFS v4 ports
nfs_v4_server_firewall_ports:
  - port: '2049'
    proto: 'tcp'

# Server packages
nfs_server_packages:
  - nfs-kernel-server
  - procps
  - nfs4-acl-tools

# Server packages for kerberos support
nfs_server_packages_krb5:
  - gssproxy

# Client packages
nfs_client_packages:
  - nfs-common
  - nfs4-acl-tools

# Server services
nfs_server_services:
  - nfs-kernel-server

# Server services for kerberos support
nfs_server_services_krb5:
  - rpc-gssd

# Client services for kerberos support
nfs_client_services_krb5:
  - rpc-gssd

defaults/family-RedHat.yml


# Install/confire NFS server
nfs_server: false

# Install/confire NFS client
nfs_client: true

# Configure NFS to use KRB5 (kerberos)
nfs_krb5: false

# Open firewall ports
nfs_firewall: true

# List of NFS mount
nfs_mounts: []

# Exclude this mount if this string is found in the source name/ip
nfs_mount_exclude: DUMMY

# Enable the use of home directories located on remote NFS exports
# This will set the appropiate SELinux boolean
nfs_home_dir: false

# NFS implementation(s) to use
nfs_v3: false
nfs_v4: true

# Ports to use to make NFS v3 work through firewall
nfs_statd_port: "32766"
nfs_mountd_port: "32767"
nfs_lockd_port: "32768"

# List of NFS v3 ports
nfs_v3_server_firewall_ports:
  - port: '2049'
    proto: tcp
  - port: '111'
    proto: tcp
  - port: '111'
    proto: udp
  - port: "{{ nfs_statd_port }}"
    proto: tcp
  - port: "{{ nfs_statd_port }}"
    proto: udp
  - port: "{{ nfs_mountd_port }}"
    proto: tcp
  - port: "{{ nfs_mountd_port }}"
    proto: udp
  - port: "{{ nfs_lockd_port }}"
    proto: tcp
  - port: "{{ nfs_lockd_port }}"
    proto: udp

# List of NFS v4 ports
nfs_v4_server_firewall_ports:
  - service: 'nfs'
    proto: tcp
  - service: 'mountd'
    proto: tcp
  - service: 'rpc-bind'
    proto: tcp

# Server packages
nfs_server_packages:
  - nfs-utils
  - nfs4-acl-tools

# Server packages for kerberos support
nfs_server_packages_krb5:
  - gssproxy

# Client packages
nfs_client_packages:
  - nfs-utils
  - nfs4-acl-tools

# Server services
nfs_server_services:
  - rpcbind
  - nfs-server

# Server services for kerberos support
nfs_server_services_krb5:
  - gssproxy
  - rpc-gssd

# Client services for kerberos support
nfs_client_services_krb5:
  - gssproxy
  - rpc-gssd

defaults/family-Suse.yml


# Install/confire NFS server
nfs_server: false

# Install/confire NFS client
nfs_client: true

# Configure NFS to use KRB5 (kerberos)
nfs_krb5: false

# Open firewall ports
nfs_firewall: true

# List of NFS mount
nfs_mounts: []

# Exclude this mount if this string is found in the source name/ip
nfs_mount_exclude: DUMMY

# Enable the use of home directories located on remote NFS exports
# This will set the appropiate SELinux boolean
nfs_home_dir: false

# NFS implementation(s) to use
nfs_v3: false
nfs_v4: true

# Ports to use to make NFS v3 work through firewall
nfs_statd_port: "32766"
nfs_mountd_port: "32767"
nfs_lockd_port: "32768"

# List of NFS v3 ports
nfs_v3_server_firewall_ports:
  - port: '2049'
    proto: tcp
  - port: '111'
    proto: tcp
  - port: '111'
    proto: udp
  - port: "{{ nfs_statd_port }}"
    proto: tcp
  - port: "{{ nfs_statd_port }}"
    proto: udp
  - port: "{{ nfs_mountd_port }}"
    proto: tcp
  - port: "{{ nfs_mountd_port }}"
    proto: udp
  - port: "{{ nfs_lockd_port }}"
    proto: tcp
  - port: "{{ nfs_lockd_port }}"
    proto: udp

# List of NFS v4 ports
nfs_v4_server_firewall_ports:
  - service: 'nfs'
    proto: tcp
  - service: 'mountd'
    proto: tcp
  - service: 'rpc-bind'
    proto: tcp

# Server packages
nfs_server_packages:
  - nfs-kernel-server
  - nfs4-acl-tools

# Server packages for kerberos support
nfs_server_packages_krb5:
  - gssproxy

# Client packages
nfs_client_packages:
  - nfs-client
  - nfs4-acl-tools

# Server services
nfs_server_services:
  - rpcbind
  - nfs-server

# Server services for kerberos support
nfs_server_services_krb5:
  - gssproxy
  - rpc-gssd

# Client services for kerberos support
nfs_client_services_krb5:
  - gssproxy
  - rpc-gssd

Example Playbook

molecule/default/converge.yml


- name: sample playbook for role 'nfs'
  hosts: all
  become: true
  tasks: null
- name: sample playbook for role 'nfs'
  hosts: nfs_servers
  become: true
  vars:
    nfs_v3: false
    nfs_v4: true
    __nfs_server: '{{ groups[''nfs_servers''] | first }}'
    __nfs_client: '{{ groups[''nfs_clients''] | first }}'
    export_path: /export/test
    clients: '{{ [ ( inventory_hostname | regex_replace(''-server'', ''-client''))
      ] }}'
  tasks:
    - name: Create path to export
      ansible.builtin.file:
        path: '{{ export_path }}'
        state: directory
        mode: '0755'
    - name: Setup NFS server
      ansible.builtin.include_role:
        name: nfs
      vars:
        nfs_server: true
        nfs_exports: []
    - name: Setup NFS server
      ansible.builtin.include_role:
        name: nfs
      vars:
        nfs_server: true
        nfs_exports:
          - path: '{{ export_path }}'
            clients: '{{ clients }}'
            options: rw,sync,no_root_squash
    - name: Setup NFS server
      ansible.builtin.include_role:
        name: nfs
      vars:
        nfs_server: true
        nfs_exports: []
- name: sample playbook for role 'nfs'
  hosts: nfs_clients
  become: true
  vars:
    nfs_v3: false
    nfs_v4: true
    __nfs_server: '{{ groups[''nfs_servers''] | first }}'
    __nfs_client: '{{ groups[''nfs_clients''] | first }}'
    export_path: /export/test
    server: '{{ ( inventory_hostname | regex_replace(''-client'', ''-server'')) }}'
  tasks:
    - name: Setup NFS client
      ansible.builtin.include_role:
        name: nfs
      vars:
        nfs_server: false
        nfs_mounts:
          - src: '{{ server }}:{{ export_path }}'
            target: /mnt
            type: nfs
            options: rw,sync