mk-docker-opts.sh 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #!/bin/sh
  2. usage() {
  3. echo "$0 [-f FLANNEL-ENV-FILE] [-d DOCKER-ENV-FILE] [-i] [-c] [-m] [-k COMBINED-KEY]
  4. Generate Docker daemon options based on flannel env file
  5. OPTIONS:
  6. -f Path to flannel env file. Defaults to /run/flannel/subnet.env
  7. -d Path to Docker env file to write to. Defaults to /run/docker_opts.env
  8. -i Output each Docker option as individual var. e.g. DOCKER_OPT_MTU=1500
  9. -c Output combined Docker options into DOCKER_OPTS var
  10. -k Set the combined options key to this value (default DOCKER_OPTS=)
  11. -m Do not output --ip-masq (useful for older Docker version)
  12. " >&2
  13. exit 1
  14. }
  15. flannel_env="/run/flannel/subnet.env"
  16. docker_env="/run/docker_opts.env"
  17. combined_opts_key="DOCKER_OPTS"
  18. indiv_opts=false
  19. combined_opts=false
  20. ipmasq=true
  21. while getopts "f:d:icmk:?h" opt; do
  22. case $opt in
  23. f)
  24. flannel_env=$OPTARG
  25. ;;
  26. d)
  27. docker_env=$OPTARG
  28. ;;
  29. i)
  30. indiv_opts=true
  31. ;;
  32. c)
  33. combined_opts=true
  34. ;;
  35. m)
  36. ipmasq=false
  37. ;;
  38. k)
  39. combined_opts_key=$OPTARG
  40. ;;
  41. [\?h])
  42. usage
  43. ;;
  44. esac
  45. done
  46. if [ $indiv_opts = false ] && [ $combined_opts = false ]; then
  47. indiv_opts=true
  48. combined_opts=true
  49. fi
  50. if [ -f "$flannel_env" ]; then
  51. . $flannel_env
  52. fi
  53. if [ -n "$FLANNEL_SUBNET" ]; then
  54. DOCKER_OPT_BIP="--bip=$FLANNEL_SUBNET"
  55. fi
  56. if [ -n "$FLANNEL_MTU" ]; then
  57. DOCKER_OPT_MTU="--mtu=$FLANNEL_MTU"
  58. fi
  59. if [ -n "$FLANNEL_IPMASQ" ] && [ $ipmasq = true ] ; then
  60. if [ "$FLANNEL_IPMASQ" = true ] ; then
  61. DOCKER_OPT_IPMASQ="--ip-masq=false"
  62. elif [ "$FLANNEL_IPMASQ" = false ] ; then
  63. DOCKER_OPT_IPMASQ="--ip-masq=true"
  64. else
  65. echo "Invalid value of FLANNEL_IPMASQ: $FLANNEL_IPMASQ" >&2
  66. exit 1
  67. fi
  68. fi
  69. eval docker_opts="\$${combined_opts_key}"
  70. if [ "$docker_opts" ]; then
  71. docker_opts="$docker_opts ";
  72. fi
  73. echo -n "" >$docker_env
  74. for opt in $(set | grep "DOCKER_OPT_"); do
  75. OPT_NAME=$(echo $opt | awk -F "=" '{print $1;}');
  76. OPT_VALUE=$(eval echo "\$$OPT_NAME");
  77. if [ "$indiv_opts" = true ]; then
  78. echo "$OPT_NAME=\"$OPT_VALUE\"" >>$docker_env;
  79. fi
  80. docker_opts="$docker_opts $OPT_VALUE";
  81. done
  82. if [ "$combined_opts" = true ]; then
  83. echo "${combined_opts_key}=\"${docker_opts}\"" >>$docker_env
  84. fi