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