provisioning/taskservs/runc/default/install-runc.sh
2025-09-22 23:11:41 +01:00

111 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
# Info: Script to install/create/delete/update runc from file settings
# Author: JesusPerezLorenzo
# Release: 1.0
# Date: 12-10-2024
USAGE="install-runc.sh install | update | remvoe"
[ "$1" == "-h" ] && echo "$USAGE" && exit 1
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')"
OS="$(uname | tr '[:upper:]' '[:lower:]')"
[ -r "env-runc" ] && . ./env-runc
RUNC_VERSION="${RUNC_VERSION:-1.1.13}"
RUNC_URL=https://github.com/opencontainers/runc/releases/download/v$RUNC_VERSION/runc.$ARCH
CMD_TSKSRVC=${1:-install}
export LC_CTYPE=C.UTF-8
export LANG=C.UTF-8
ORG=$(pwd)
_init() {
[ -z "$RUNC_VERSION" ] && exit 1 # || [ -z "$RUNC_ARCH" ] || [ -z "$RUNC_URL" ] || [ -z "$RUNC_FILE" ] && exit 1
local curr_vers
local has_runc
has_runc=$(type runc 2>/dev/null)
if [ -n "$has_runc" ] ; then
curr_vers=$(runc --version | grep "^Version" | awk '{print $2}')
fi
if [ "$curr_vers" != "$RUNC_VERSION" ] ; then
if ! curl -fsSL "$RUNC_URL" -o runc ; then
echo "error downloading runc "
return 1
fi
if [ -r "runc" ] ; then
chmod +x runc
sudo mv runc /usr/local/bin
else
echo "error installing runc"
ret=1
fi
rm -f runc
[ "$ret" == 1 ] && return 1
[ -r "/usr/bin/runc" ] && mv /usr/bin/crun /usr/bin/_runc
fi
return 0
}
_config_runc() {
return 0
[ ! -d "/etc/runc" ] && mkdir -p /etc/runc
if [ -r "runc_config.toml" ] && [ ! -r "/etc/runc/config.toml" ] ; then
sudo cp runc_config.toml /etc/runc/config.toml
fi
if [ -r "crictl.yaml" ] && [ ! -r "/etc/runc-crictl.yaml" ] ; then
sudo cp crictl.yaml /etc/runc-crictl.yaml
fi
#if [ -r "crictl.yaml" ] && [ ! -r "/etc/crictl.yaml" ] ; then
# sudo cp crictl.yaml /etc/crictl.yaml
#fi
if [ -r "runc.service" ] && [ ! -r "/lib/systemd/runc.service" ] ; then
sudo cp runc.service /lib/systemd/system
[ ! -L "/etc/systemd/system/runc.service" ] && sudo ln -s /lib/systemd/system/runc.service /etc/systemd/system
sudo timeout -k 10 20 systemctl daemon-reload
fi
TARGET=/etc/modules-load.d/runc.conf
ITEMS="overlay br_netfilter"
for it in $ITEMS
do
has_item=$(sudo grep ^"$it" $TARGET 2>/dev/null)
[ -z "$has_item" ] && echo "$it" | sudo tee -a /etc/modules-load.d/runc.conf
done
_start_runc
}
_remove_runc() {
sudo timeout -k 10 20 systemctl stop runc
sudo timeout -k 10 20 systemctl disable runc
}
_start_runc() {
if [ "$RUNC_SYSTEMCTL_MODE" == "enabled" ] ; then
sudo timeout -k 10 20 systemctl enable runc
else
sudo timeout -k 10 20 systemctl disable runc
fi
sudo timeout -k 10 20 systemctl start runc
}
_restart_runc() {
sudo timeout -k 10 20 systemctl restart runc
}
[ "$CMD_TSKSRVC" == "remove" ] && _remove_runc && exit 0
if ! _init ; then
echo "error runc install"
exit 1
fi
[ "$CMD_TSKSRVC" == "update" ] && _restart_runc && exit 0
if ! _config_runc ; then
echo "error runc config"
exit 1
fi
#if ! _start_runc ; then
# echo "error runc start"
# exit 1
#fi