Last active
May 24, 2023 03:26
-
-
Save dwallraff/d280e63ca6e3f1e71605ae8dc2db3e01 to your computer and use it in GitHub Desktop.
Personal jumpbox bootstrap script -- curl -L dwallraff.com/jumpbox | bash
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /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 [email protected]: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 [email protected]) | |
# 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