Skip to content

Instantly share code, notes, and snippets.

@dwallraff
Last active May 24, 2023 03:26
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save dwallraff/d280e63ca6e3f1e71605ae8dc2db3e01 to your computer and use it in GitHub Desktop.
Save dwallraff/d280e63ca6e3f1e71605ae8dc2db3e01 to your computer and use it in GitHub Desktop.
Personal jumpbox bootstrap script -- curl -L dwallraff.com/jumpbox | bash
#! /usr/bin/env bash
#-- Dave Wallraff
# First things first, I'm the realest...
### personal jumpbox bootstrap script
# curl -L dwallraff.com/jumpbox | bash
# wrap in a function for curl|bash
do_stuff() {
######
## Install tools from repos
######
sudo apt-get update
OS_TOOLS=(\
apt-transport-https \
build-essential \
bzip2 \
ca-certificates \
coreutils \
curl \
dnsutils \
file \
git \
gnupg2 \
hping3 \
httpie \
iperf \
iputils-ping \
iputils-tracepath \
jq \
less \
man \
mosh \
mtr \
netcat \
nmap \
python \
python-dev \
python-pip \
rclone \
ruby \
ruby-dev \
shellcheck \
software-properties-common \
tcpdump \
tmate \
tmux \
traceroute \
unzip \
vim \
wamerican \
wget \
whois \
)
sudo apt-get install -y "${OS_TOOLS[@]}"
######
## Add other repos and tools
######
# cloudfoundry cli
curl https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -
echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list
# docker
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt-get update -y && sudo apt-get install -y cf-cli docker-ce
######
## Software not in repos
######
# bat
cd ~ && sudo wget -O bat.deb \
"$(curl -s https://api.github.com/repos/sharkdp/bat/releases/latest \
| jq --raw-output '.assets[] | .browser_download_url' | grep --color=never amd64 | grep -v --color=never musl)" && \
sudo dpkg -i bat.deb && sudo rm bat.deb
# terraform
cd /usr/local/bin && sudo wget -O terraform \
"$(curl -s https://www.terraform.io/downloads.html | grep --color=never -o '\".*linux_amd64.*zip.*\"' | jq -r '.')" &&
sudo unzip -o terraform && sudo chmod +x terraform
# gcp cli + kubectl
# CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
# export CLOUD_SDK_REPO
# echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install -y google-cloud-sdk kubectl
# aws cli
python -m pip install awscli --upgrade --user
# azure cli
AZ_REPO=$(lsb_release -c -s)
export AZ_REPO
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | sudo tee /etc/apt/sources.list.d/azure-cli.list
sudo apt-key adv --keyserver packages.microsoft.com --recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893
curl -L https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo apt-get update && sudo apt-get install -y azure-cli
# bosh
cd /usr/local/bin && sudo wget -O bosh \
"$(curl -s https://api.github.com/repos/cloudfoundry/bosh-cli/releases/latest \
| jq --raw-output '.assets[] | .browser_download_url' | grep --color=never linux)" && sudo chmod +x bosh
# om
cd /usr/local/bin && sudo wget -O om \
"$(curl -s https://api.github.com/repos/pivotal-cf/om/releases/latest \
| jq --raw-output '.assets[] | .browser_download_url' | grep --color=never linux)" && sudo chmod +x om
# pivnet
cd /usr/local/bin && sudo wget -O pivnet \
"$(curl -s https://api.github.com/repos/pivotal-cf/pivnet-cli/releases/latest \
| jq --raw-output '.assets[] | .browser_download_url' | grep --color=never linux)" && sudo chmod +x pivnet
# ombosh
cd /usr/local/bin && sudo wget -O ombosh https://raw.githubusercontent.com/zmb3/ombosh/master/ombosh.sh
sudo chmod +x /usr/local/bin/ombosh
# uaac cli
sudo gem install cf-uaac --no-rdoc --no-ri
# bbr
cd /usr/local/bin && sudo wget -O bbr \
"$(curl -s https://api.github.com/repos/cloudfoundry-incubator/bosh-backup-and-restore/releases/latest \
| jq --raw-output '.assets[] | .browser_download_url' | grep --color=never linux | grep -v --color=never sha256)" \
&& sudo chmod +x bbr
# credhub
cd /usr/local/bin && sudo wget -O credhub \
"$(curl -s https://api.github.com/repos/cloudfoundry-incubator/credhub-cli/releases/latest \
| jq --raw-output '.assets[] | .browser_download_url' | grep --color=never linux)" && sudo tar xzf credhub \
&& sudo chmod +x credhub
# fly cli
cd /usr/local/bin && sudo wget -O fly \
"$(curl -s https://api.github.com/repos/concourse/fly/releases/latest \
| jq --raw-output '.assets[] | .browser_download_url' | grep --color=never linux)" && sudo chmod +x fly
# dyff
cd /usr/local/bin && sudo wget -O dyff \
"$(curl -s https://api.github.com/repos/homeport/dyff/releases/latest \
| jq --raw-output '.assets[] | .browser_download_url' | grep --color=never linux)" && sudo chmod +x dyff
# 1Password cli
cd /usr/local/bin && sudo wget -O op.zip \
"$(curl -s https://app-updates.agilebits.com/product_history/CLI | grep --color=never -m 1 op_linux_amd64 \
| cut -d '"' -f 2)" && sudo unzip op.zip && sudo rm op.sig && sudo rm op.zip
# keybase
export KEYBASE_SYSTEMD=0
cd ~ || exit
curl -O https://prerelease.keybase.io/keybase_amd64.deb
sudo dpkg -i keybase_amd64.deb
sudo apt-get install -f -y
rm keybase_amd64.deb
run_keybase
# cleanup
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get autoremove
######
## Clone my stuffs
######
mkdir -p ~/code
mkdir -p ~/.tmux/plugins
git clone https://github.com/dwallraff/dotfiles ~/code/dotfiles
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
cd ~/code/dotfiles || return
git remote set-url origin git@github.com:dwallraff/dotfiles.git
cd ~ || return
######
## Link stuffs up
######
mkdir -p ~/.ssh/configs
mkdir -p ~/.gnupg
ln -sf ~/code/dotfiles/bashrc ~/.bashrc
ln -sf ~/code/dotfiles/vimrc ~/.vimrc
ln -sf ~/code/dotfiles/tmux.conf ~/.tmux.conf
ln -sf ~/code/dotfiles/gitconfig ~/.gitconfig
ln -sf ~/code/dotfiles/gpg-agent.conf ~/.gnupg/gpg-agent.conf
ln -sf ~/code/dotfiles/ssh_config ~/.ssh/config
ln -sf ~/code/dotfiles/ssh_config_includes/ ~/.ssh/configs
######
## Set timezone
######
sudo cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
#sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime
#sudo cp /usr/share/zoneinfo/America/Chicago /etc/localtime
}
do_stuff
######
## Afterwords
######
cat << 'EOF' > ~/README.txt
These things still need to be done:
# Get configs and keys
# Get secret key from 1Password.com
eval $(op signin my.1password.com dave.wallraff@gmail.com)
# rclone.conf
op get document $(op list documents | jq -r '. as $in | keys[] | select($in[.].overview.title | contains("rclone-conf")) | select($in[.].trashed=="N") as $res | $in[$res].uuid') > ~/.rclone.conf
# ssh keys
op get document $(op list documents | jq -r '. as $in | keys[] | select($in[.].overview.title | contains("gcp-key")) | select($in[.].trashed=="N") as $res | $in[$res].uuid') > ~/.ssh/gcp.key
op get document $(op list documents | jq -r '. as $in | keys[] | select($in[.].overview.title | contains("generic-key")) | select($in[.].trashed=="N") as $res | $in[$res].uuid') > ~/.ssh/generic.key
op get document $(op list documents | jq -r '. as $in | keys[] | select($in[.].overview.title | contains("github-key")) | select($in[.].trashed=="N") as $res | $in[$res].uuid') > ~/.ssh/github.key
op get document $(op list documents | jq -r '. as $in | keys[] | select($in[.].overview.title | contains("aws-dwallraff-pcf-key")) | select($in[.].trashed=="N") as $res | $in[$res].uuid') > ~/.ssh/aws-dwallraff-pcf.key
op get document $(op list documents | jq -r '. as $in | keys[] | select($in[.].overview.title | contains("sr-ht-key")) | select($in[.].trashed=="N") as $res | $in[$res].uuid') > ~/.ssh/sr.ht.key
chmod 600 ~/.ssh/*.key
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment