summaryrefslogtreecommitdiff
path: root/playbooks.d/nfs-server/playbook.bash
diff options
context:
space:
mode:
Diffstat (limited to 'playbooks.d/nfs-server/playbook.bash')
-rw-r--r--playbooks.d/nfs-server/playbook.bash75
1 files changed, 75 insertions, 0 deletions
diff --git a/playbooks.d/nfs-server/playbook.bash b/playbooks.d/nfs-server/playbook.bash
new file mode 100644
index 0000000..6856c72
--- /dev/null
+++ b/playbooks.d/nfs-server/playbook.bash
@@ -0,0 +1,75 @@
+#!/usr/bin/env bash
+
+playbook_add() {
+ pkg install nfs-utils
+
+ touch /etc/exports
+
+ playbook_sync
+
+ svc enable nfs
+ svc enable rpcbind
+
+ svc start nfs
+ svc start rpcbind
+}
+
+playbook_sync() {
+ local buffer="$(tmpfile)"
+ local exports="/etc/exports.d/kubernetes.exports"
+ local hash="$(file_hash "$exports")"
+
+ local root_options="ro,no_subtree_check"
+ local export_options="rw,no_root_squash,no_subtree_check"
+ local root_export="/mnt/exports"
+ local allowed_cidr=("10.57.0.0/16" "172.19.0.0/16")
+ local fsid
+
+ {
+ printf "%s" "$root_export"
+ for host in "${allowed_cidr[@]}"
+ do
+ printf " %s(fsid=%s,%s)" "$host" "0" "$export_options"
+ done
+ printf "\n"
+
+ for path in "$root_export"/*
+ do
+ fsid="$(config "$BASHTARD_PLAYBOOK.exports.$path.fsid" "")"
+
+ if [[ "$fsid" == "" ]]
+ then
+ warn "$BASHTARD_PLAYBOOK" "Generating fsid for $path"
+ fsid="$(uuidgen)"
+ $BASHTARD_BIN var "$BASHTARD_PLAYBOOK.exports.$path.fsid" "$fsid"
+ fi
+
+ printf "%s" "$path"
+ for host in "${allowed_cidr[@]}"
+ do
+ printf " %s(fsid=%s,%s)" "$host" "$fsid" "$export_options"
+ done
+ printf "\n"
+
+ unset fsid
+ done
+ } > "$buffer"
+
+ [[ "$(file_hash "$buffer")" == "$hash" ]] && return
+
+ mv -- "$buffer" "$exports"
+
+ [[ "$BASHTARD_ACTION" == "add" ]] && return
+
+ exportfs -rv
+}
+
+playbook_del() {
+ svc stop rpcbind
+ svc stop nfs
+
+ svc disable rpcbind
+ svc disable nfs
+
+ pkg uninstall nfs-utils
+}