Skip to content

Instantly share code, notes, and snippets.

@jonbrouse
Created February 14, 2017 18:17
Show Gist options
  • Save jonbrouse/1ae0f27d67eb9ab8a28b299fcda91feb to your computer and use it in GitHub Desktop.
Save jonbrouse/1ae0f27d67eb9ab8a28b299fcda91feb to your computer and use it in GitHub Desktop.
#!/bin/bash
USER_NAME=$1
# Software Versions
DOCKER_COMPOSE_VERSION=1.10.0
DOCKER_MACHINE_VERSION=0.9.0
PACKER_VERSION=0.12.2
TERRAFORM_VERSION=0.8.5
# Software Packages
DEBIAN_FRONTEND=noninteractive
APT_PACKAGES="ant apache2-utils awscli build-essential cmake cowsay curl dos2unix \
git gem g++ libcurl4-openssl-dev libncurses-dev libmysqlclient-dev \
libreadline-dev nodejs npm pylint python-pip python3-pip ruby-full screen traceroute \
unzip whois"
GEM_PACKAGES="bundle hiera-eyaml jekyll puppet-lint"
NPM_PACKAGES="bower doctoc"
PIP_PACKAGES="awscli virtualenv boto3"
function create_user {
USER_CHECK="$(getent passwd $USER_NAME)"
if [ -z "$USER_CHECK" ]; then
echo "User $USER_NAME is being added..."
groupadd ${USER_NAME} -g 1111
useradd ${USER_NAME} --no-user-group -g ${USER_NAME} -u 1111 -d /home/${USER_NAME}/ -s /bin/bash -m -G vagrant,docker
echo "${USER_NAME}:${USER_NAME}" | sudo chpasswd
cat <<EOF > /etc/sudoers.d/${USER_NAME}
${USER_NAME} ALL=(ALL) NOPASSWD:ALL
EOF
sudo su - ${USER_NAME} -c 'git config --global user.email "jbrouse19@gmail.com"'
sudo su - ${USER_NAME} -c 'git config --global user.name "Jon Brouse"'
sudo su - ${USER_NAME} -c "mkdir /home/${USER_NAME}/scratch"
fi
}
function install_packer {
mkdir -p /opt/packer
curl -SLo /opt/packer/packer_${PACKER_VERSION}_linux_amd64.zip https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_linux_amd64.zip
unzip /opt/packer/packer_${PACKER_VERSION}_linux_amd64.zip -d /opt/packer
ln -s /opt/packer/packer /usr/local/bin/
}
function install_terraform {
mkdir -p /opt/terraform
curl -SLo /opt/terraform/terraform_${TERRAFORM_VERSION}_linux_amd64.zip https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip
unzip /opt/terraform/terraform_${TERRAFORM_VERSION}_linux_amd64.zip -d /opt/terraform
ln -s /opt/terraform/terraform /usr/local/bin/
}
function install_docker {
apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual apt-transport-https ca-certificates
#sudo apt-key add --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
#apt-key add --keyserver https://yum.dockerproject.org/gpg --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
curl -fsSL https://yum.dockerproject.org/gpg | sudo apt-key add -
add-apt-repository "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -cs) main"
apt-get update && apt-get -y install docker-engine
usermod -aG docker vagrant
curl -sSL "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
curl -sSL "https://github.com/docker/machine/releases/download/v${DOCKER_MACHINE_VERSION}/docker-machine-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-machine
chmod +x /usr/local/bin/docker-machine
}
#### Setup Environment
cat <<EOF > /etc/vim/vimrc.local
colorscheme desert
EOF
cat <<'EOF' >> /etc/profile
export VISUAL=vim
export EDITOR="\\$VISUAL"
EOF
#### Add some software
apt-get update && apt-get upgrade -y && apt-get install -y ${APT_PACKAGES}
gem install ${GEM_PACKAGES}
npm install -g gulp ${NPM_PACKAGES}
pip install --upgrade pip && pip install ${PIP_PACKAGES}
pip3 install --upgrade pip && pip3 install ${PIP_PACKAGES}
if [ -z $(which packer) ]; then
install_packer
elif [ "$(packer version | head -n 1 | awk '{print $2}')" != "v${PACKER_VERSION}" ]; then
rm -rf /opt/packer && rm /usr/local/bin/packer
install_packer
fi
if [ -z $(which terraform) ]; then
install_terraform
elif [ "$(terraform version | head -n 1 | awk '{print $2}')" != "v${TERRAFORM_VERSION}" ]; then
rm -rf /opt/terraform && rm /usr/local/bin/terraform
install_terraform
fi
install_docker
create_user $USER_NAME
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment