Explorar el Código

Add mk-docker-opts script to write Dockerd opts

Output FLANNEL_IPMASQ to subnet.env with value of --ip-masq.
dist/mk-docker-opts converts subnet.env into Docker daemon
options.
Eugene Yakubovich hace 10 años
padre
commit
10bbafb80b
Se han modificado 2 ficheros con 92 adiciones y 0 borrados
  1. 89 0
      dist/mk-docker-opts.sh
  2. 3 0
      main.go

+ 89 - 0
dist/mk-docker-opts.sh

@@ -0,0 +1,89 @@
+#!/bin/bash
+
+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)
+" >/dev/stderr 
+
+	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:ick:" 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
+			;;
+		\?)
+			usage
+			;;
+	esac
+done
+
+if [ $indiv_opts = false ] && [ $combined_opts = false ]; then
+	indiv_opts=true
+	combined_opts=true
+fi
+
+if [ -f "$flannel_env" ]; then
+	source $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 [ "$FLANNEL_IPMASQ" = true ] && [ $ipmasq = true ] ; then
+	DOCKER_OPT_IPMASQ="--ip-masq=false"
+fi
+
+eval docker_opts="\$${combined_opts_key}"
+docker_opts+=" "
+
+echo -n "" >$docker_env
+for opt in $(compgen -v DOCKER_OPT_); do
+	eval val=\$$opt
+
+	if [ "$indiv_opts" = true ]; then
+		echo "$opt=\"$val\"" >>$docker_env
+	fi
+
+	docker_opts+="$val "
+done
+
+if [ "$combined_opts" = true ]; then
+	echo "${combined_opts_key}=\"${docker_opts}\"" >>$docker_env
+fi

+ 3 - 0
main.go

@@ -95,6 +95,9 @@ func writeSubnetFile(sn *backend.SubnetDef) error {
 	if _, err = fmt.Fprintf(f, "FLANNEL_MTU=%d\n", sn.MTU); err != nil {
 		return err
 	}
+	if _, err = fmt.Fprintf(f, "FLANNEL_IPMASQ=%v\n", opts.ipMasq); err != nil {
+		return err
+	}
 	return nil
 }