#!/bin/bash # #*************************************************************************** # Author: liwanggui # Email: liwanggui@163.com # Date: 2023-08-10 # FileName: install-flannel.sh # Description: 在线安装 flannel # Copyright (C): 2023 All rights reserved #*************************************************************************** # # 安装最新版本 docker: # $ curl -s https://dl.zrshuiwu.com/scripts/install-flannel.sh | bash # 安装指定版本的 flannel: # $ curl -s https://dl.zrshuiwu.com/scripts/install-flannel.sh | VERSION=v0.22.3 bash # VERSION="${VERSION:-latest}" GHPROXY="https://gh.wglee.org/" DOWNLOAD_BASE_URL="${GHPROXY}https://github.com/flannel-io/flannel/releases/download" FLANNEL_RELEASE_API="https://api.github.com/repos/flannel-io/flannel/releases/latest" INSTALL_DIR="/usr/local/bin" TEMPDIR="$(mktemp -d)" error () { echo -e "\e[0;31m[ERROR] - $(date +'%F %T') -\e[0m $@" } info () { echo -e "\e[0;34m[INFO] - $(date +'%F %T') -\e[0m $@" } _wget() { local url="$1" local save_name="$2" local opts if [[ -n "${save_name}" ]]; then opts="-O ${save_name}" fi info "下载 ${url}" if ! wget -q --show-progress --tries=3 --timeout=30 "${url}" ${opts}; then error "下载失败,请检查后重试!" /bin/rm -rf ${TEMPDIR} exit 1 fi } get_latest_version() { local api_url="$1" curl -s ${api_url} | grep tag_name | cut -f4 -d "\"" } install_flannel () { local download_url local iface if [[ "$VERSION" = "latest" ]]; then VERSION=$(get_latest_version ${FLANNEL_RELEASE_API}) fi download_url="${DOWNLOAD_BASE_URL}/${VERSION}/flannel-${VERSION}-linux-amd64.tar.gz" cd ${TEMPDIR} _wget $download_url tar xzvf $(basename $download_url) -C ${INSTALL_DIR} --exclude=README.md cd && /bin/rm -rf ${TEMPDIR} # get iterface name if [[ $(ls /sys/class/net/ | grep ^e | wc -l) -eq 1 ]]; then iface=$(ls /sys/class/net/ | grep ^e) else select iface in $(ls /sys/class/net/ | grep ^e); do [ -n $iface ] && break done fi info "创建配置文件 /etc/sysconfig/flanneld " cat >/etc/sysconfig/flanneld </usr/lib/systemd/system/flanneld.service <