diff --git a/.gitpod.dockerfile b/.gitpod.dockerfile new file mode 100644 index 0000000..e2b4a7b --- /dev/null +++ b/.gitpod.dockerfile @@ -0,0 +1,78 @@ +FROM gitpod/workspace-full + +# install tools we need +RUN set -ex; \ + pyenv global system; \ + sudo add-apt-repository ppa:ansible/ansible; \ + sudo add-apt-repository ppa:maxmind/ppa; \ + curl -s https://helm.baltorepo.com/organization/signing.asc | sudo apt-key add - ; \ + curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash; \ + echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list ; \ + sudo apt-get update; \ + sudo apt-get -y upgrade ; \ + sudo apt-get install -y \ + ansible \ + build-essential \ + httpie \ + fd-find \ + ffmpeg \ + geoipupdate \ + gitlab-runner \ + helm \ + htop \ + iotop \ + iptraf \ + jq \ + kitty-terminfo \ + libolm-dev \ + ncdu \ + postgresql \ + pwgen \ + python3-wheel \ + ripgrep \ + rsync \ + scdaemon \ + socat \ + tmux \ + unrar \ + unzip \ + vifm \ + vim \ + yamllint \ + zsh \ + zsh-syntax-highlighting \ + ; sudo rm -rf /var/lib/apt/lists/* + +RUN set -ex; \ + brew install \ + zoxide \ + fzf; + +# needed for tailscale +RUN sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-nft + +# install npm global packages we need +RUN set -ex; \ + npm install -g \ + standard-version \ + turbo \ + ; + +# make a place for all our warez +RUN sudo mkdir -p /usr/local/bin + +# install AWS' kubectl +# from https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html +ARG KUBECTL_URL="https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl" +RUN set -ex; \ + curl -o kubectl "${KUBECTL_URL}"; \ + chmod +x kubectl; \ + sudo mv kubectl /usr/local/bin + +# install cloudflared +# from https://github.com/cloudflare/cloudflared/releases +ARG CLOUDFLARED_VERSION="2023.2.1" +RUN set -ex; \ + wget --progress=dot:mega https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-amd64.deb; \ + sudo dpkg -i cloudflared-linux-amd64.deb; \ + cloudflared --version diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000..cccf8cc --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,41 @@ +--- +# build the docker image for our gitpod from this dockerfile +image: + file: .gitpod.dockerfile +# where gitpod should place our workspace (relative to /workspace) +workspaceLocation: "." +# all init+before are run in prebuilds, and on workspace startup +tasks: + - name: tailscaled + command: | + if [ -n "$TAILSCALE_AUTHKEY" ]; then + if [ -n "${TAILSCALE_STATE_MYPROJECT}" ]; then + # restore the tailscale state from gitpod user's env vars + sudo mkdir -p /var/lib/tailscale + echo "${TAILSCALE_STATE_MYPROJECT}" | sudo tee /var/lib/tailscale/tailscaled.state > /dev/null + fi + sudo tailscaled + fi + - name: tailscale + command: | + cd /workspace/guardianproject-ops/meta/ + if [ -n "$TAILSCALE_AUTHKEY" ]; then + if [ -n "${TAILSCALE_STATE_MYPROJECT}" ]; then + sudo -E tailscale up --authkey=${TAILSCALE_AUTHKEY} + else + sudo -E tailscale up --authkey=${TAILSCALE_AUTHKEY} --hostname "gitpod-${GITPOD_GIT_USER_NAME// /-}-$(echo ${GITPOD_WORKSPACE_CONTEXT} | jq -r .repository.name)" + # store the tailscale state into gitpod user + gp env TAILSCALE_STATE_MYPROJECT="$(sudo cat /var/lib/tailscale/tailscaled.state)" + fi + fi +# extra extensions we share +vscode: + extensions: + - redhat.vscode-yaml + - ms-azuretools.vscode-docker + - ms-kubernetes-tools.vscode-kubernetes-tools + - ms-vscode.makefile-tools + - bungcip.better-toml + - sleistner.vscode-fileutils + - esbenp.prettier-vscode + - darkriszty.markdown-table-prettify