script to create (or destroy) vpn for docker-on-mac

This commit is contained in:
Deepak Goel
2019-07-11 15:49:10 -07:00
parent 1f03fec912
commit 6962dc1b3d

96
mac-network.sh Normal file
View File

@@ -0,0 +1,96 @@
#!/bin/bash
DOCKER_IMAGE=onedata/docker-openvpn-kube-for-mac:1.3.0
# colors
GREEN='\033[1;32m'
RED='\033[0;31m'
WHITE='\033[1;37m'
NOCOLOR='\033[0m'
# marks
TICK='\xE2\x9C\x94'
CROSS='\xE2\x9D\x8C'
create() {
command -v docker > /dev/null 2>&1 || { echo >&2 "couldn't find docker client. Aborting..."; exit 1; }
[ ! "$(docker ps | grep docker-openvpn)" ] || { echo 'It seems VPN is already running. Do Nothing.'; exit 1; }
docker container rm docker-openvpn > /dev/null 2>&1
docker volume rm ovpn-data > /dev/null 2>&1
printf "${GREEN}"
printf "Creating docker volume ..........."
error=$(docker volume create --name ovpn-data 2>&1 >/dev/null)
check "$error"
printf "Initializing vpn config .........."
error=$(docker run -v ovpn-data:/etc/openvpn --rm $DOCKER_IMAGE ovpn_genconfig -u udp://localhost 2>&1 >/dev/null)
check "$error"
printf "Creating CA (may take sometime) .."
error=$(docker run -v ovpn-data:/etc/openvpn --rm -i -e "EASYRSA_BATCH=1" -e "EASYRSA_REQ_CN=Default CA" $DOCKER_IMAGE ovpn_initpki nopass 2>&1 >/dev/null)
check "$error"
printf "Creating client certificate ......"
error=$(docker run -v ovpn-data:/etc/openvpn --rm -i $DOCKER_IMAGE easyrsa build-client-full DockerForMac nopass 2>&1 >/dev/null)
check "$error"
printf "Starting vpn server .............."
error=$(docker run --dns 8.8.8.8 --restart=always -v ovpn-data:/etc/openvpn --name docker-openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN $DOCKER_IMAGE 2>&1 >/dev/null)
check "$error"
printf "Exporting client certificate ....."
docker run -v ovpn-data:/etc/openvpn --rm $DOCKER_IMAGE ovpn_getclient DockerForMac > ./DockerForMac.ovpn
printf "${TICK}\n"
printf "${WHITE}\n"
echo 'Please follow the below instructions '
echo '********************************************************'
echo '1. Install (or Run) Tunnelblink '
echo '2. Run open ./DockerForMac.ovpn '
echo '3. In Tunnelblink, select `Connect DockerForMac` '
echo '4. Wait for the server response (it will take a minute) '
printf "${NOCOLOR}\n"
}
destroy() {
printf "${GREEN}"
printf "Stopping vpn server ........."
docker container stop docker-openvpn > /dev/null 2>&1
docker container rm docker-openvpn > /dev/null 2>&1
printf "${TICK}\n"
printf "${WHITE}\n"
echo 'In Tunnelblink, select `Disconnect DockerForMac` '
printf "${NOCOLOR}\n"
}
check() {
if [ $? -eq 0 ]; then
printf "${TICK}\n"
else
printf "${CROSS}\n"
printf "${RED}ERROR: %s\n" "$1"
printf "${NOCOLOR}"
exit 1
fi
}
case "$1" in
create)
create
;;
destroy)
destroy
;;
*)
echo $"Valid arguments are: create | destroy"
exit 1
esac