Configure Jenkins and Tomcat using Puppet on Vagrant
Posted
by
ex3v
on Programmers
See other posts from Programmers
or by ex3v
Published on 2014-08-22T19:41:46Z
Indexed on
2014/08/23
10:34 UTC
Read the original article
Hit count: 384
I'm playing with setting up my first Spring
+ jenkins
+ Tomcat
CI dev environment. For now it's just a test/fun phase, but in the near future I'll be starting new project with my coworkers. That's the reason that I want development environment virtualized and exactly te same on every development machine, as well as on production server.
I choosen to use Vagrant
and to try to write puppet
scripts that not only install everything, but also configure everything so each of us will have the same jenkins
plugins, same jenkins
and tomcat
login and password, and literally after calling vagrant up
we are ready to work.
What I managed to do so far is installation of stuff needed and port forwarding. My vagrantfile
looks like this (comments stripped):
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.network :forwarded_port, guest: 80, host: 8090
config.vm.network :forwarded_port, guest: 8080, host: 8091
config.vm.network :private_network, ip: "192.168.33.10"
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet/"
puppet.manifest_file = "default.pp"
puppet.options = ['--verbose']
end
end
And this is my puppet
file:
Exec { path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ] }
class system-update {
exec { 'apt-get update':
command => 'apt-get update',
}
$sysPackages = [ "build-essential" ]
package { $sysPackages:
ensure => "installed",
require => Exec['apt-get update'],
}
}
class tomcat {
package { "tomcat":
ensure => present,
require => Class["system-update"],
}
service { "tomcat":
ensure => "running",
require => Package["tomcat"],
}
}
class jenkins {
package { "jenkins":
ensure => present,
require => Class["system-update"],
}
service { "jenkins":
ensure => "running",
require => Package["jenkins"],
}
}
include system-update
include tomcat
include jenkins
Now, when I hit vagrant provision
and go to http://localhost:8091/
I can see jenkins
running, so above script works good.
Next step is configurating jenkins
and tomcat
by extending above puppet
scripts.
I'm pretty green when it comes to CI. After wandering around web I've found few tutorials about jenkins
configuration (here's one of them). I really want to move configuration presented in this tutorial to puppet
file, so when I spread my vagrantfile
and puppet
file between my coworkers, I will be sure that everyone has exactly te same setup. Unfortunately I'm also green about using puppet
, I don't know how to do this. Any help will be apreciated.
© Programmers or respective owner