feat(shell): add prepare server script
begin with a new script for setup the basic structure of my servers, who tf needs ansible if we got sh
This commit is contained in:
parent
29c2dbcb86
commit
e24d9fa729
1 changed files with 108 additions and 0 deletions
108
shell/scripts/prepareServer.sh
Normal file
108
shell/scripts/prepareServer.sh
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
#! /usr/bin/env sh
|
||||||
|
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
--dry-run)
|
||||||
|
DRY_RUN=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--*)
|
||||||
|
echo "Illegal Operation"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
is_dry_run() {
|
||||||
|
if [ -z "$DRY_RUN" ]; then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
command_exists() {
|
||||||
|
command -v "$@" > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
check_distro() {
|
||||||
|
distro=""
|
||||||
|
if [ -r /etc/os-release ]; then
|
||||||
|
distro="$(. /etc/os-release && echo "$ID")"
|
||||||
|
fi
|
||||||
|
echo "$distro"
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_debian_version() {
|
||||||
|
version=""
|
||||||
|
vers_num="$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')"
|
||||||
|
case "$vers_num" in
|
||||||
|
12 | trixie)
|
||||||
|
version="bookworm"
|
||||||
|
;;
|
||||||
|
11)
|
||||||
|
version="bullseye"
|
||||||
|
;;
|
||||||
|
10)
|
||||||
|
version="buster"
|
||||||
|
;;
|
||||||
|
9)
|
||||||
|
version="stretch"
|
||||||
|
;;
|
||||||
|
8)
|
||||||
|
version="jessie"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo "$version"
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_command() {
|
||||||
|
uid="$(id -u 2>/dev/null || true)"
|
||||||
|
sh_c="sh -c"
|
||||||
|
if [ "$uid" != 0 ]; then
|
||||||
|
if command_exists sudo; then
|
||||||
|
sh_c="sudo -E sh -c"
|
||||||
|
elif command_exists su; then
|
||||||
|
sh_c="su -c"
|
||||||
|
else
|
||||||
|
cat >&2 <<-'EOF'
|
||||||
|
Error: no method for command elevation found, but thats needed for this setup script
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if is_dry_run; then
|
||||||
|
sh_c="echo"
|
||||||
|
fi
|
||||||
|
echo $sh_c
|
||||||
|
}
|
||||||
|
|
||||||
|
install_apt() {
|
||||||
|
pre_reqs="apt-transport-https ca-certificates curl"
|
||||||
|
apt_repo="deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] $download_url/linux/$distro $version $channel"
|
||||||
|
(
|
||||||
|
if ! is_dry_run; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
$sh_c 'apt-get update -qq >/dev/null'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
install() {
|
||||||
|
sh_c="$(exec_command)"
|
||||||
|
distro="$( check_distro )"
|
||||||
|
version=""
|
||||||
|
channel="stable"
|
||||||
|
download_url="https://download.docker.com"
|
||||||
|
case "$distro" in
|
||||||
|
debian)
|
||||||
|
version="$( detect_debian_version )"
|
||||||
|
install_apt
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Sorry currently only debian is supported"
|
||||||
|
esac
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
install
|
Loading…
Reference in a new issue