dev-setup.sh 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #!/usr/bin/env bash
  2. #
  3. # This script provisions a working Wormhole dev environment on a blank Debian VM.
  4. # It expects to run as a user without root permissions.
  5. #
  6. # Can safely run multiple times to update to the latest versions.
  7. #
  8. # Make sure this is Debian 10 or 11
  9. if [ "$(lsb_release -rs)" != "10" ] && [ "$(lsb_release -rs)" != "11" ]; then
  10. echo "This script is only for Debian 10 or 11"
  11. exit 1
  12. fi
  13. # Refuse to run as root
  14. if [[ $EUID -eq 0 ]]; then
  15. echo "This script must not be run as root" 1>&2
  16. exit 1
  17. fi
  18. # Check if we can use sudo to get root
  19. if ! sudo -n true; then
  20. echo "This script requires sudo to run."
  21. exit 1
  22. fi
  23. # Make sure Docker Debian package isn't installed
  24. if dpkg -s docker.io &>/dev/null; then
  25. echo "Docker is already installed from Debian's repository. Please uninstall it first."
  26. exit 1
  27. fi
  28. # Upgrade everything
  29. # (this ensures that an existing Docker CE installation is up to date before continuing)
  30. sudo apt-get upgrade -y
  31. # Install dependencies
  32. sudo apt-get update && sudo apt-get -y install bash-completion git git-review vim
  33. # Install Go
  34. ARCH=amd64
  35. GO=1.17.3
  36. (
  37. if [[ -d /usr/local/go ]]; then
  38. sudo rm -rf /usr/local/go
  39. fi
  40. TMP=$(mktemp -d)
  41. (
  42. cd "$TMP"
  43. curl -OJ "https://dl.google.com/go/go${GO}.linux-${ARCH}.tar.gz"
  44. sudo tar -C /usr/local -xzf "go${GO}.linux-${ARCH}.tar.gz"
  45. echo 'PATH=/usr/local/go/bin:$PATH' | sudo tee /etc/profile.d/local_go.sh
  46. )
  47. rm -rf "$TMP"
  48. )
  49. . /etc/profile.d/local_go.sh
  50. # Install Docker and add ourselves to Docker group
  51. if [[ ! -d /var/lib/docker ]]; then
  52. curl -fsSL https://get.docker.com -o get-docker.sh
  53. sudo sh get-docker.sh
  54. sudo gpasswd -a $USER docker
  55. fi
  56. sudo systemctl enable --now docker
  57. # Install Minikube
  58. curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
  59. sudo dpkg -i minikube_latest_amd64.deb
  60. # Install tilt
  61. curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | sudo bash
  62. # Shell aliases
  63. cat <<'EOF' | sudo tee /etc/profile.d/wormhole_aliases.sh
  64. alias kubectl="minikube kubectl --"
  65. alias vi=vim
  66. alias kc=kubectl
  67. . <(kubectl completion bash)
  68. . <(minikube completion bash)
  69. complete -F __start_kubectl kc
  70. function use-namespace {
  71. kubectl config set-context --current --namespace=$1
  72. }
  73. export DOCKER_BUILDKIT=1
  74. alias start-recommended-minikube="minikube start --driver=docker --kubernetes-version=v1.22.3 --cpus=16 --memory=16G --disk-size=120g"
  75. EOF
  76. cat <<EOF
  77. ┍━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┑
  78. │ │
  79. │ SUCCESS │
  80. │ │
  81. │ Re-log into your session to apply changes. │
  82. │ │
  83. └━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┘
  84. EOF