From 70c3bfbc78ec6e4d9a26ee5099ea9c760519b789 Mon Sep 17 00:00:00 2001 From: Jimmy Song Date: Fri, 15 Dec 2017 19:42:57 +0800 Subject: [PATCH] add flannel network plugin scripts --- tools/flannel/README.md | 5 ++ tools/flannel/mk-docker-opts.sh | 103 ++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 tools/flannel/README.md create mode 100755 tools/flannel/mk-docker-opts.sh diff --git a/tools/flannel/README.md b/tools/flannel/README.md new file mode 100644 index 000000000..a18bbc5c0 --- /dev/null +++ b/tools/flannel/README.md @@ -0,0 +1,5 @@ +# mk-docker-opts.sh + +flannel 0.7.1 release中的脚本 + +See https://github.com/coreos/flannel/releases diff --git a/tools/flannel/mk-docker-opts.sh b/tools/flannel/mk-docker-opts.sh new file mode 100755 index 000000000..cac279903 --- /dev/null +++ b/tools/flannel/mk-docker-opts.sh @@ -0,0 +1,103 @@ +#!/bin/sh + +usage() { + echo "$0 [-f FLANNEL-ENV-FILE] [-d DOCKER-ENV-FILE] [-i] [-c] [-m] [-k COMBINED-KEY] + +Generate Docker daemon options based on flannel env file +OPTIONS: + -f Path to flannel env file. Defaults to /run/flannel/subnet.env + -d Path to Docker env file to write to. Defaults to /run/docker_opts.env + -i Output each Docker option as individual var. e.g. DOCKER_OPT_MTU=1500 + -c Output combined Docker options into DOCKER_OPTS var + -k Set the combined options key to this value (default DOCKER_OPTS=) + -m Do not output --ip-masq (useful for older Docker version) +" >&2 + + exit 1 +} + +flannel_env="/run/flannel/subnet.env" +docker_env="/run/docker_opts.env" +combined_opts_key="DOCKER_OPTS" +indiv_opts=false +combined_opts=false +ipmasq=true + +while getopts "f:d:icmk:?h" opt; do + case $opt in + f) + flannel_env=$OPTARG + ;; + d) + docker_env=$OPTARG + ;; + i) + indiv_opts=true + ;; + c) + combined_opts=true + ;; + m) + ipmasq=false + ;; + k) + combined_opts_key=$OPTARG + ;; + [\?h]) + usage + ;; + esac +done + +if [ $indiv_opts = false ] && [ $combined_opts = false ]; then + indiv_opts=true + combined_opts=true +fi + +if [ -f "$flannel_env" ]; then + . $flannel_env +fi + +if [ -n "$FLANNEL_SUBNET" ]; then + DOCKER_OPT_BIP="--bip=$FLANNEL_SUBNET" +fi + +if [ -n "$FLANNEL_MTU" ]; then + DOCKER_OPT_MTU="--mtu=$FLANNEL_MTU" +fi + +if [ -n "$FLANNEL_IPMASQ" ] && [ $ipmasq = true ] ; then + if [ "$FLANNEL_IPMASQ" = true ] ; then + DOCKER_OPT_IPMASQ="--ip-masq=false" + elif [ "$FLANNEL_IPMASQ" = false ] ; then + DOCKER_OPT_IPMASQ="--ip-masq=true" + else + echo "Invalid value of FLANNEL_IPMASQ: $FLANNEL_IPMASQ" >&2 + exit 1 + fi +fi + +eval docker_opts="\$${combined_opts_key}" + +if [ "$docker_opts" ]; then + docker_opts="$docker_opts "; +fi + +echo -n "" >$docker_env + +for opt in $(set | grep "DOCKER_OPT_"); do + + OPT_NAME=$(echo $opt | awk -F "=" '{print $1;}'); + OPT_VALUE=$(eval echo "\$$OPT_NAME"); + + if [ "$indiv_opts" = true ]; then + echo "$OPT_NAME=\"$OPT_VALUE\"" >>$docker_env; + fi + + docker_opts="$docker_opts $OPT_VALUE"; + +done + +if [ "$combined_opts" = true ]; then + echo "${combined_opts_key}=\"${docker_opts}\"" >>$docker_env +fi