Skip to content

Instantly share code, notes, and snippets.

@aweijnitz
Last active March 25, 2024 13:54
Show Gist options
  • Star 22 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
  • Save aweijnitz/9628014b766e02f0a4c8 to your computer and use it in GitHub Desktop.
Save aweijnitz/9628014b766e02f0a4c8 to your computer and use it in GitHub Desktop.
This is a Vagrant file and a provisioning script to create a Debian-based Jenkins server, including Java, Ant and Tomcat. Also see "provision.sh" below
#!/bin/bash
if [ ! -f /usr/bin/svn ];
then
echo "-------- PROVISIONING SUBVERSION ------------"
echo "---------------------------------------------"
## Install subverison
apt-get update
apt-get -y install subversion
else
echo "CHECK - Subversion already installed"
fi
if [ ! -f /usr/lib/jvm/java-7-oracle/bin/java ];
then
echo "-------- PROVISIONING JAVA ------------"
echo "---------------------------------------"
## Make java install non-interactive
## See http://askubuntu.com/questions/190582/installing-java-automatically-with-silent-option
echo debconf shared/accepted-oracle-license-v1-1 select true | \
debconf-set-selections
echo debconf shared/accepted-oracle-license-v1-1 seen true | \
debconf-set-selections
## Install java 1.7
## See http://www.webupd8.org/2012/06/how-to-install-oracle-java-7-in-debian.html
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
apt-get update
apt-get -y install oracle-java7-installer
else
echo "CHECK - Java already installed"
fi
if [ ! -f /etc/init.d/jenkins ];
then
echo "-------- PROVISIONING JENKINS ------------"
echo "------------------------------------------"
## Install Jenkins
#
# URL: http://localhost:6060
# Home: /var/lib/jenkins
# Start/Stop: /etc/init.d/jenkins
# Config: /etc/default/jenkins
# Jenkins log: /var/log/jenkins/jenkins.log
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
apt-get update
apt-get -y install jenkins
# Move Jenkins to port 6060
sed -i 's/8080/6060/g' /etc/default/jenkins
/etc/init.d/jenkins restart
else
echo "CHECK - Jenkins already installed"
fi
### Everything below this point is not stricly needed for Jenkins to work
###
if [ ! -f /etc/init.d/tomcat7 ];
then
echo "-------- PROVISIONING TOMCAT ------------"
echo "-----------------------------------------"
## Install Tomcat (port 8080)
# This gives us something to deploy builds into
# CATALINA_BASE=/var/lib/tomcat7
# CATALINE_HOME=/usr/share/tomcat7
export JAVA_HOME="/usr/lib/jvm/java-7-oracle"
apt-get -y install tomcat7
# Work around a bug in the default tomcat start script
sed -i 's/export JAVA_HOME/export JAVA_HOME=\"\/usr\/lib\/jvm\/java-7-oracle\"/g' /etc/init.d/tomcat7
/etc/init.d/tomcat7 stop
/etc/init.d/tomcat7 start
else
echo "CHECK - Tomcat already installed"
fi
if [ ! -f /usr/local/lib/ant/apache-ant-1.9.4/bin/ant ];
then
echo "-------- PROVISIONING ANT ---------------"
echo "-----------------------------------------"
mkdir -p /usr/local/lib/ant
cd /usr/local/lib/ant
wget -q http://ftp.halifax.rwth-aachen.de/apache//ant/binaries/apache-ant-1.9.4-bin.tar.gz
tar xzf apache-ant-1.9.4-bin.tar.gz
rm apache-ant-1.9.4-bin.tar.gz
ln -s /usr/local/lib/ant/apache-ant-1.9.4/bin/ant /usr/local/bin/ant
echo "Ant installed"
else
echo "CHECK - Ant already installed"
fi
echo "-------- PROVISIONING DONE ------------"
echo "-- Jenkins: http://localhost:6060 "
echo "-- Tomcat7: http://localhost:7070 "
echo "---------------------------------------"
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Every Vagrant virtual environment requires a box to build off of.
# Named boxes, like this one, don't need a URL, since the are looked up
# in the "vagrant cloud" (https://vagrantcloud.com)
config.vm.box = "chef/debian-7.4"
# Publish guest port 6060 on host port 6060
config.vm.network "forwarded_port", guest: 6060, host: 6060
config.vm.network "forwarded_port", guest: 8080, host: 7070
config.vm.provider "virtualbox" do |vb|
# # Don't boot with headless mode. Use for debugging
# vb.gui = true
# # Use VBoxManage to customize the VM. For example to change memory:
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
# Provision the box using a shell script
# This script is copied into the box and then run
config.vm.provision :shell, :privileged => true, :path => "provision.sh"
end
@aweijnitz
Copy link
Author

Using port forwarding, the following URLs will be exposed on the host system

@greyfairer
Copy link

Debian box no longer exists, and ant version is no longer available.

See: https://gist.github.com/greyfairer/ebd2206d319eb4a6728b for a working version @ 30/09/2015.

@blangus
Copy link

blangus commented Oct 3, 2016

I've got it working by changing Vagrantfile:12
from config.vm.box = "chef/debian-7.4"
to config.vm.box = "puphpet/debian75-x64"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment