60 lines
2 KiB
Bash
60 lines
2 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
[ "$1" == "-h" ] && echo "install-youki.sh install|update|remove|restart|scripts|reinstall" && exit 1
|
||
|
|
|
||
|
|
SERVICE_NAME=""
|
||
|
|
SCRIPTS_DEPLOY_PATH=""
|
||
|
|
|
||
|
|
[ -r "env-youki" ] && . ./env-youki
|
||
|
|
[ -r "common.sh" ] && . ./common.sh
|
||
|
|
|
||
|
|
ARCH="$(uname -m | sed -e 's/amd64/x86_64/')"
|
||
|
|
YOUKI_VERSION="${YOUKI_VERSION:-1.7.18}"
|
||
|
|
YOUKI_URL="https://github.com/containers/youki/releases/download/v${YOUKI_VERSION}/youki-${YOUKI_VERSION}-${ARCH}-gnu.tar.gz"
|
||
|
|
CMD_TSK=${CMD_TSK:-${1:-install}}
|
||
|
|
export LC_CTYPE=C.UTF-8 LANG=C.UTF-8
|
||
|
|
|
||
|
|
_update_binary() {
|
||
|
|
[ -z "$YOUKI_VERSION" ] && return 1
|
||
|
|
local curr_vers has_youki
|
||
|
|
has_youki=$(type youki 2>/dev/null)
|
||
|
|
[ -n "$has_youki" ] && curr_vers=$(youki --version 2>/dev/null | awk '{print $2}')
|
||
|
|
[ "$curr_vers" == "$YOUKI_VERSION" ] && return 0
|
||
|
|
local dl_dir="/tmp/youki-dl"
|
||
|
|
rm -rf "$dl_dir" && mkdir -p "$dl_dir"
|
||
|
|
if ! curl -fsSL "$YOUKI_URL" -o "${dl_dir}/youki.tar.gz"; then
|
||
|
|
echo "error downloading youki"; rm -rf "$dl_dir"; return 1
|
||
|
|
fi
|
||
|
|
tar xzf "${dl_dir}/youki.tar.gz" -C "$dl_dir" youki
|
||
|
|
rm -f "${dl_dir}/youki.tar.gz"
|
||
|
|
[ ! -f "${dl_dir}/youki" ] && echo "error extracting youki" && rm -rf "$dl_dir" && return 1
|
||
|
|
chmod +x "${dl_dir}/youki" && sudo mv "${dl_dir}/youki" /usr/local/bin/youki
|
||
|
|
rm -rf "$dl_dir"
|
||
|
|
return 0
|
||
|
|
}
|
||
|
|
|
||
|
|
_config_youki() {
|
||
|
|
[ ! -r "/etc/containerd/config.toml" ] && return 0
|
||
|
|
grep -q "youki" /etc/containerd/config.toml && return 0
|
||
|
|
cat >> /etc/containerd/config.toml <<'EOF'
|
||
|
|
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.youki]
|
||
|
|
runtime_type = "io.containerd.runc.v2"
|
||
|
|
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.youki.options]
|
||
|
|
BinaryName = "/usr/local/bin/youki"
|
||
|
|
EOF
|
||
|
|
}
|
||
|
|
|
||
|
|
case "$CMD_TSK" in
|
||
|
|
reinstall)
|
||
|
|
sudo rm -f /usr/local/bin/youki ;&
|
||
|
|
install)
|
||
|
|
_update_binary || { echo "error youki install"; exit 1; }
|
||
|
|
_config_youki
|
||
|
|
;;
|
||
|
|
update) _common_update ;;
|
||
|
|
scripts) _common_deploy_scripts ;;
|
||
|
|
config) _config_youki ;;
|
||
|
|
restart) _common_service_restart ;;
|
||
|
|
remove) sudo rm -f /usr/local/bin/youki ;;
|
||
|
|
delete) sudo rm -f /usr/local/bin/youki ;;
|
||
|
|
esac
|