Skip to content

Instantly share code, notes, and snippets.

@mevansam
Created October 31, 2016 09:55
Show Gist options
  • Save mevansam/68528535b969876c842abf0ecd697d74 to your computer and use it in GitHub Desktop.
Save mevansam/68528535b969876c842abf0ecd697d74 to your computer and use it in GitHub Desktop.
# This Vagrant file shoud default to VirtualBox
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
# Install bosh cli in jumpbox - This script will be skipped if the pre-provisioned box is used
bosh_cli_install_script = <<SCRIPT
set -x
# Proxy server #.#.#.#:# if any
PROXY=""
# Shared work dir
WORK_DIR=/vagrant
# Software versions
JQ_VERSION=1.5
GO_VERSION=1.7.3
JAVA_VERSION=8u112
JAVA_BUILD=15
JAVA_URL=http://download.oracle.com/otn-pub/java/jdk/$JAVA_VERSION-b$JAVA_BUILD/jdk-$JAVA_VERSION-linux-x64.tar.gz
PYTHON_VERSION=15.0.3
PYTHON_VIRTUALENV_URL=https://pypi.python.org/packages/8b/2c/c0d3e47709d0458816167002e1aa3d64d03bdeb2a9d57c5bd18448fd24cd/virtualenv-$PYTHON_VERSION.tar.gz#md5=a5a061ad8a37d973d27eb197d05d99bf
# Set proxy
if [ -n "$PROXY" ]; then
export HTTP_PROXY=$PROXY
export http_proxy=$PROXY
export HTTPS_PROXY=$PROXY
export https_proxy=$PROXY
GPG_PROXY="--keyserver-options $PROXY"
cat /etc/apt/apt.conf | grep "Acquire::http::Proxy" > /dev/null
if [ $? -ne 0 ]; then
echo "Acquire::http::Proxy \"$PROXY\";" >> /etc/apt/apt.conf
fi
fi
# Initialize
if [ ! -e $HOME/.updated ]; then
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y --force-yes install build-essential \
openssl libssl-dev libffi-dev libreadline6 libreadline6-dev libyaml-dev libxml2-dev libxslt1-dev \
libsqlite3-dev libpq-dev libmysqlclient-dev zlibc zlib1g-dev zip \
python-dev ruby-dev sqlite3 mysql-client
touch $HOME/.updated
fi
cat $HOME/.profile | grep "export PATH=\\\$HOME/.bin:\\\$PATH" > /dev/null
if [ $? -ne 0 ]; then
PATH_ADD="\\nexport PATH=\\\$HOME/.bin:\\\$HOME/.java/jdk/bin:\\\$HOME/.go/go/bin:\\\$PATH"
echo -e $PATH_ADD >> $HOME/.profile
echo -e $PATH_ADD >> $HOME/.bashrc
fi
# Install RVM
if [ ! -e $HOME/.rvm ]; then
gpg --keyserver hkp://keys.gnupg.net $GPG_PROXY --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -s -sSL https://get.rvm.io | bash -s stable
fi
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
# Instal Ruby and Bosh CLI
ruby=$(which ruby)
if [ "$ruby" == "/usr/bin/ruby" ] || [ -z "$ruby" ]; then
rvm install 2.2
rvm --default use 2.2
gem install bosh_cli --no-ri --no-rdoc
gem install cf-uaac --no-rdoc --no-ri
fi
which cf 2>&1 > /dev/null
if [ $? -ne 0 ]; then
mkdir -p $HOME/.bin
pushd $HOME/.bin
curl -s -L "https://cli.run.pivotal.io/stable?release=linux64-binary&source=github" | tar -zx
curl -s -L "https://github.com/stedolan/jq/releases/download/jq-$JQ_VERSION/jq-linux64" -o jq
chmod 0744 jq
popd
fi
if [ ! -e $HOME/.python ]; then
VIRT_ENV="virtualenv-$PYTHON_VERSION"
curl -s -o $VIRT_ENV.tar.gz -L $PYTHON_VIRTUALENV_URL
tar xvzf $VIRT_ENV.tar.gz
python $VIRT_ENV/virtualenv.py .python
rm -rf $VIRT_ENV
.python/bin/pip install $VIRT_ENV.tar.gz
rm -fr $VIRT_ENV.tar.gz
echo -e "\\nalias p=\\\"source ~/.python/bin/activate\\\"" >> $HOME/.bashrc
fi
if [ ! -e $HOME/.go ]; then
mkdir -p $HOME/.go
pushd $HOME/.go
curl -s -L https://storage.googleapis.com/golang/go$GO_VERSION.linux-amd64.tar.gz | tar -zx
popd
echo -e "\\nexport GOROOT=$HOME/.go/go" >> $HOME/.bashrc
echo -e "export GOPATH=$WORK_DIR/src" >> $HOME/.bashrc
fi
if [ ! -e $HOME/.java ]; then
mkdir -p $HOME/.java
pushd $HOME/.java
wget -q -c -O jdk.tar.gz --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" "$JAVA_URL"
tar xvzf jdk.tar.gz
rm -f jdk.tar.gz
mv jdk* jdk
popd
echo -e "\\nexport JAVA_HOME=$HOME/.java/jdk" >> $HOME/.bashrc
fi
set +x
SCRIPT
Vagrant.configure('2') do |config|
config.vm.define "boshlite" do |boshlite|
boshlite.vm.box = 'cloudfoundry/bosh-lite'
boshlite.vm.provider :virtualbox do |v, override|
override.vm.box_version = '9000.131.0'
override.vm.network :private_network, ip: '192.168.50.4', id: :local
end
boshlite.vm.provider "virtualbox" do |v|
v.memory = 6192
v.cpus = 2
end
end
config.vm.define "jumpbox" do |jumpbox|
# Pre-provisioned jumpbox
#jumpbox.vm.box = "mevansam/jumpbox"
# Provision a jumpbox from scratch
jumpbox.vm.box = "ubuntu/trusty64"
jumpbox.vm.provider :virtualbox do |v, override|
override.vm.network :private_network, ip: '192.168.50.5', id: :local
end
jumpbox.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 1
end
jumpbox.vm.provision "shell", inline: "su - vagrant -c '#{bosh_cli_install_script}'"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment