From b09c23776ce2e306509fa970ebedf5cc1bb56e91 Mon Sep 17 00:00:00 2001 From: openoms Date: Wed, 28 Sep 2022 15:15:09 +0100 Subject: [PATCH] add devenv scripts for packer and coder --- k8s/devenv.coder.sh | 144 ++++++++++++++++++++++++++++++++++++++++ packer/devenv.packer.sh | 79 ++++++++++++++++++++++ 2 files changed, 223 insertions(+) create mode 100644 k8s/devenv.coder.sh create mode 100644 packer/devenv.packer.sh diff --git a/k8s/devenv.coder.sh b/k8s/devenv.coder.sh new file mode 100644 index 0000000..f179ac1 --- /dev/null +++ b/k8s/devenv.coder.sh @@ -0,0 +1,144 @@ +#!/bin/bash + +function help() { + echo " +Script to set up a local enviroment to run https://github.com/GaloyMoney/charts/tree/main/dev +Usage: +devenv.coder.sh [on|off|clone_all_galoy|start_dev_charts]" + exit 1 +} + +USER=k3d + +function clone_all_galoy() { +mkdir GaloyMoney && cd GaloyMoney +# clone all repos +curl -s https://api.github.com/users/GaloyMoney/repos | grep \"clone_url\" | awk '{print $2}' | sed -e 's/"//g' -e 's/,//g' | xargs -n1 git clone +} + +function setup_devenv_k3d() { + # dedicated user + sudo adduser --disabled-password --gecos "" coder + sudo usermod -aG sudo coder + + # tools + sudo apt update + sudo apt install -y git tmux gnupg unzip curl + + # coder + #sudo -u $USER bash -c 'curl -L https://coder.com/install.sh | sh' + sudo -u $USER bash -c 'curl -fsSL https://code-server.dev/install.sh | sh' + + +# fzf + sudo -u $USER sh -c 'git clone --depth 1 https://github.com/junegunn/fzf.git /home/coder/.fzf; /home/coder/.fzf/install --all' + + cpu=$(dpkg --print-architecture) + + # kubectl + if ! kubectl version; then + kubectl_version="1.24.1" + curl -LO https://storage.googleapis.com/kubernetes-release/release/v${kubectl_version}/bin/linux/${cpu}/kubectl + chmod +x ./kubectl + sudo mv ./kubectl /usr/local/bin + fi + sudo -u $USER mkdir .kube + sudo -u $USER touch home/coder/.kube/config + + # terraform + if ! terraform version; then + if [ "${cpu}" = amd64 ]; then + if ! sudo apt install terraform; then + sudo apt-get install -y software-properties-common + curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - + sudo apt-add-repository "deb [arch=$(dpkg --print-architecture)] https://apt.releases.hashicorp.com $(lsb_release -cs) main" + sudo apt-get update + sudo apt-get install -y terraform + fi + elif [ "${cpu}" = arm64 ]; then + # RPI + wget -O terraform_1.2.4_linux_arm64.zip https://releases.hashicorp.com/terraform/1.2.4/terraform_1.2.4_linux_arm64.zip || exit 1 + wget https://releases.hashicorp.com/terraform/1.2.4/terraform_1.2.4_SHA256SUMS + sha256sum -c terraform_1.2.4_SHA256SUMS --ignore-missing || exit 1 + wget https://releases.hashicorp.com/terraform/1.2.4/terraform_1.2.4_SHA256SUMS.sig || exit 1 + gpg --verify terraform_1.2.4_SHA256SUMS.sig || exit 1 + unzip terraform_1.2.4_linux_arm64.zip + sudo mv ./terraform /usr/local/bin/ + fi + fi + + # docker + if ! docker version; then + # look for raspiblitz install script + if [ -f /home/admin/config.scripts/blitz.docker.sh ]; then + /home/admin/config.scripts/blitz.docker.sh on + else + # https://docs.docker.com/desktop/linux/install/debian/ + curl -fsSL https://get.docker.com -o get-docker.sh + sh get-docker.sh + fi + fi + sudo groupadd docker + sudo usermod -aG docker coder + + # k3d + if ! k3d version; then + wget -q -O - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash + fi + + # KUBE_CONFIG_PATH + echo 'export KUBE_CONFIG_PATH=~/.kube/config' \ + | sudo -u $USER tee -a /home/coder/.bashrc +# aliases +echo "\ +alias egrep='egrep --color=auto' +alias fgrep='fgrep --color=auto' +alias g='git' +alias grep='grep --color=auto' +alias gs='git status' +alias k='kubectl' +alias l='ls -CF' +alias la='ls -A' +alias ll='ls -alF' +alias ls='ls --color=auto' +alias tf='terraform'" \ + | sudo -u $USER tee -a /home/coder/.bash_aliases + +if [ "${cpu}" = arm64 ]; then + # https://code.pinske.eu/k3d-raspi.html + if ! grep "cgroup_memory=1 cgroup_enable=memory" < /boot/cmdline.txt; then + sudo sed -i s/$/ cgroup_memory=1 cgroup_enable=memory/ /boot/cmdline.txt + echo "# Will need to reboot to create a cluster successfully" + fi +fi +} + +function start_dev_charts() { + # starting the charts + cd /home/coder/ + sudo -u $USER git clone https://github.com/GaloyMoney/charts + cd /home/coder/charts/dev + + sudo -u $USER direnv allow + sudo -u $USER make create-cluster + sudo -u $USER make init + sudo -u $USER bash -c 'export KUBE_CONFIG_PATH=~/.kube/config; make deploy-services' + sudo -u $USER bash -c 'export KUBE_CONFIG_PATH=~/.kube/config; make deploy' +} + +function delete_cluster() { + ## REMOVE + cd /home/coder/charts/dev + sudo -u $USER make delete-cluster + # k3d cluster delete && rm terraform.tfstate +} + +if [ "$1" = "on" ]; then + setup_devenv_k3d +elif [ "$1" = "start_dev_charts" ]; then + start_dev_charts +elif [ "$1" = "off" ]; then + delete_cluster +else + help +fi diff --git a/packer/devenv.packer.sh b/packer/devenv.packer.sh new file mode 100644 index 0000000..81f046d --- /dev/null +++ b/packer/devenv.packer.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +function help() { + echo " +Script to set up a local enviroment to run packer +Usage: +devenv.packer.sh [on|off]" + exit 1 +} + +USER="packer" + +function setup_devenv_packer() { + # dedicated user + sudo adduser --disabled-password --gecos "" ${USER} + #sudo usermod -aG sudo packer + + # tools + sudo apt update + sudo apt install -y git tmux gnupg unzip curl + + # fzf + sudo -u ${USER} sh -c 'git clone --depth 1 https://github.com/junegunn/fzf.git /home/${USER}/.fzf; /home/${USER}/.fzf/install --all' + + # docker + if ! docker version; then + # look for raspiblitz install script + if [ -f /home/admin/config.scripts/blitz.docker.sh ]; then + /home/admin/config.scripts/blitz.docker.sh on + else + # https://docs.docker.com/desktop/linux/install/debian/ + curl -fsSL https://get.docker.com -o get-docker.sh + sh get-docker.sh + fi + fi + sudo groupadd docker + sudo usermod -aG docker packer + +# Install packer +if ! packer version; then + echo -e "\nInstalling packer..." + curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - + sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" + sudo apt-get update -y && sudo apt-get install packer -y +fi + +export PATH=$PATH:/usr/local/go/bin +if ! go version; then + echo -e "Installing Go..." + wget --progress=bar:force https://go.dev/dl/go1.18.4.linux-amd64.tar.gz + sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.18.4.linux-amd64.tar.gz + sudo rm -rf go1.18.4.linux-amd64.tar.gz +fi + +# Install Packer Arm Plugin +echo -e "\nInstalling Packer Arm Plugin..." +cd /home/${USER} +sudo -u ${USER} git clone https://github.com/mkaczanowski/packer-builder-arm +cd packer-builder-arm +sudo -u ${USER} /usr/local/go/bin/go mod download +sudo -u ${USER} /usr/local/go/bin/go build + +echo "\ +alias egrep='egrep --color=auto' +alias fgrep='fgrep --color=auto' +alias g='git' +alias grep='grep --color=auto' +alias gs='git status' +" | sudo -u ${USER} tee -a /home/${USER}/.bash_aliases +} + + +if [ "$1" = "on" ]; then + setup_devenv_packer +elif [ "$1" = "off" ]; then + sudo userdel -rf packer +else + help +fi