All articles

Nfs-cfged

A basic nfs-cfged script might run as a systemd service:

#!/bin/bash # /usr/local/bin/nfs-cfged CONFIG_URL="file:///etc/nfs-config.json" EXPORTS_FILE="/etc/exports" while true; do curl -s $CONFIG_URL -o /tmp/nfs_config.json Generate new exports file jq -r '.exports[] | "(.path) (.clients|join(","))((.options))"' /tmp/nfs_config.json > /tmp/exports.new Validate if exportfs -o /tmp/exports.new; then cp /tmp/exports.new $EXPORTS_FILE exportfs -ra # Re-export all directories echo "$(date): nfs-cfged applied new configuration" | logger -t nfs-cfged else echo "$(date): ERROR - Invalid config, rolling back" | logger -t nfs-cfged -p err fi Nfs-cfged

"exports": [ "path": "/srv/nfs/shared", "clients": ["*.example.com", "10.0.0.0/8"], "options": "rw,sync,no_subtree_check" , "path": "/srv/nfs/backup", "clients": ["backup-server.internal"], "options": "ro,async,no_root_squash" ] A basic nfs-cfged script might run as a systemd service: #