script to create (or destroy) vpn for docker-on-mac
This commit is contained in:
96
mac-network.sh
Normal file
96
mac-network.sh
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user