Created
February 14, 2017 18:17
-
-
Save jonbrouse/1ae0f27d67eb9ab8a28b299fcda91feb to your computer and use it in GitHub Desktop.
This file contains 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
#!/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