#!/bin/bash # Info: Script to install nfs packages # Author: JesusPerezLorenzo # Release: 1.1 # Date: 8-07-2024 USAGE="install.sh " [ "$1" == "-h" ] && echo "$USAGE" && exit 1 _add_nfs_server() { chmod 1777 /tmp echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections DEBIAN_FRONTEND=noninteractive sudo apt-get -y -qq install sudo nfs-server } # Update and add packages to installation [ -z "$(type -P exporfs)" ] && _add_nfs_server [ -r "env-external_nfs" ] && . env-external_nfs WORK_PATH=${WORK_PATH:-/tmp} if [ -z "$NFS_IP" ] || [ -z "$NFS_NET" ] || [ -z "$NFS_SHARE_PATH" ] ; then echo "Error: IP NET SHARE_PATH not all set for NFS" exit 1 fi [ ! -d "$NFS_SHARE_PATH" ] && mkdir -p "$NFS_SHARE_PATH" && chmod 777 "$NFS_SHARE_PATH" if ! grep -q "$NFS_NET" /etc/exports ; then [ -r "exports" ] && sudo tee -a /etc/exports < exports && exportfs -a fi # Detect kubectl: k0s kubectl, standard kubectl, or kubeadm API server manifest KUBECTL="" if command -v k0s &>/dev/null && k0s kubectl get nodes &>/dev/null; then KUBECTL="k0s kubectl" elif command -v kubectl &>/dev/null && kubectl get nodes &>/dev/null; then KUBECTL="kubectl" elif [ -r "/etc/kubernetes/manifests/kube-apiserver.yaml" ]; then KUBECTL="kubectl" fi if [ -n "$KUBECTL" ]; then if $KUBECTL apply -f core-nfs.yaml && $KUBECTL apply -f storage-class.yaml; then [ -r "deploy-external-nfs.yaml" ] && $KUBECTL apply -f deploy-external-nfs.yaml echo "=== external-nfs: k8s resources applied ===" exit 0 else echo "Error: kubectl apply failed" && exit 1 fi else echo "=== external-nfs: NFS server configured (no k8s API available — skipping k8s resources) ===" fi