Skip to content

Instantly share code, notes, and snippets.

@rpetrano
Created January 12, 2017 16:39
Show Gist options
  • Save rpetrano/0f50cfc7f2e4155fa47263ff7eaf3a31 to your computer and use it in GitHub Desktop.
Save rpetrano/0f50cfc7f2e4155fa47263ff7eaf3a31 to your computer and use it in GitHub Desktop.
Bootstrap multiple servers at once!
One server:
cat bootstrap.tar.gz | ssh "$server" 'tar -xzf-'
Moar servers (from file `serveri`):
while IFS=$'\n' read -r server; do cat bootstrap.tar.gz | ssh "$server" 'tar -xzf-'; done < serveri
#!/bin/bash
tmpdir=$(mktemp -d)
# vim
mkdir -p $tmpdir/.vim/{backup,swap,undo,view,colors}
cp /usr/share/vim/vim80/colors/zenburn.vim $tmpdir/.vim/colors/
cp ~/.vimrc $tmpdir
# git
cp ~/.gitconfig $tmpdir
# tmux
sed -e '/set -g mouse on/ {
a\
set -g mouse-resize-pane on\
set -g mouse-select-pane on\
set -g mouse-select-window on
c\
set -g mode-mouse on
}' < ~/.tmux.conf > $tmpdir/.tmux.conf
# ssh
mkdir -p $tmpdir/.ssh/
cp ~/.ssh/authorized_keys $tmpdir/.ssh/
cat ~/.ssh/id_rsa.pub >> $tmpdir/.ssh/authorized_keys
# bash
cp ~/.bashrc $tmpdir
# bash completion
mkdir -p $tmpdir/.local/share/bash-completion/
cp /usr/share/bash-completion/bash_completion $tmpdir/.bash_completion
cp -R /usr/share/bash-completion/completions $tmpdir/.local/share/bash-completion/
cat >> $tmpdir/.bashrc <<-';)'
# Load Bash completions from user directory
source ~/.bash_completion 2>/dev/null
;)
# build
tar -caf bootstrap.tar.gz -C $tmpdir .
# clean-up
rm -R "$tmpdir"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment