provisioning-catalog/components/external_nfs/taskserv/install-external_nfs.sh

52 lines
1.7 KiB
Bash
Raw Normal View History

#!/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