Ansible role for installing and configuring the NFS client
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Simon Cornet 58288d7fa3
All checks were successful
ci/woodpecker/push/linting Pipeline was successful
docs: improve readme
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-05 17:28:29 +02:00
.woodpecker chore(package): update cr.simoncor.net/dockerhub/davidanson/markdownlint-cli2 docker tag to v0.23.3 2026-09-20 05:49:07 +00:00
meta feat: add meta 2026-04-07 16:53:50 +02:00
tasks chore: migrate bare ansible_* facts to ansible_facts[] syntax 2026-05-19 09:19:05 +02:00
templates/systemd feat: initial commit 2026-04-07 16:43:41 +02:00
.ansible-lint fix: exclude only sops yml files from lint 2026-07-14 16:23:46 +02:00
.editorconfig chore: add .editorconfig and .gitattributes 2026-05-27 14:23:51 +02:00
.gitattributes chore: add .editorconfig and .gitattributes 2026-05-27 14:23:51 +02:00
.gitignore feat: initial commit 2026-04-07 16:43:41 +02:00
.markdownlint-cli2.jsonc style: ignore line length for markdown tables 2026-05-15 13:44:01 +02:00
.sops.yaml fix: correct sops regex to ya?ml 2026-07-14 16:01:53 +02:00
.yamllint chore: exclude .yml files from lint configs 2026-07-14 16:17:29 +02:00
ansible.cfg chore: sync linting and config files from common 2026-07-14 11:33:15 +02:00
readme.md docs: improve readme 2026-10-05 17:28:29 +02:00
renovate.json feat: initial commit 2026-04-07 16:43:41 +02:00

Ansible Role: NFS Client

Installs the NFS client and mounts NFS shares as systemd .mount units.

Requirements

Debian-family hosts (the install task uses apt and is guarded by os_family == "Debian"). The role needs root and a systemd-based host.

Dependencies

None (dependencies: []).

Variables

The role has no defaults/main.yaml. All configuration is the nfs_mount list, which has no default and must be defined (the role loops over it unconditionally).

Variable Required Default Description
nfs_mount Yes none List of NFS mounts to configure

Mount keys

Key Required Default Description
nfs_host Yes NFS server hostname or IP
nfs_dir Yes Exported directory on the NFS server
local_dir_path Yes Local mount point
nfs_opts Yes Mount options
nfs_fstype No nfs4 Filesystem type
local_dir_owner No root Owner of the local mount point
local_dir_group No root Group of the local mount point
local_dir_mode No 0775 Mode of the local mount point
before_service No List of systemd services that must start after this mount

Example

nfs_mount:

  # production share
  - nfs_host: "10.0.0.10"
    nfs_dir: "/srv/nfs/production"
    local_dir_path: "/mnt/production"
    nfs_opts: "rw,hard,intr,rsize=8192,wsize=8192"
    nfs_fstype: "nfs4"
    local_dir_owner: "www-data"
    local_dir_group: "www-data"
    local_dir_mode: "0755"
    before_service:
      - "nginx.service"
      - "php-fpm.service"

  # backup share
  - nfs_host: "nfs.example.com"
    nfs_dir: "/exports/backups"
    local_dir_path: "/mnt/backups"
    nfs_opts: "ro,soft,timeo=30"

Usage

This repository has no playbook.yaml. The role (nfs_client) is consumed as a role by other playbooks.

Operational notes

  • Installs nfs-common.
  • For every entry the role creates the local directory, writes /etc/systemd/system/<unit>.mount, reloads systemd, starts and enables the unit, and then re-applies the directory ownership and mode (the mounted share may have changed them).
  • The unit name is derived from local_dir_path (for example /mnt/production becomes mnt-production.mount; dashes in the path are escaped as \x2d).
  • Each unit is ordered after network-online.target and remote-fs.target, and before any before_service entries.