51 lines
1.7 KiB
Bash
51 lines
1.7 KiB
Bash
#!/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
|