/lindat-repository-vagrant

LINDAT/CLARIN repository in a vagrant box including apache, tomcat, probe, nagios, monit, munin, phppgadmin, jenkins

Primary LanguagePuppet

LINDAT/CLARIN vagrant boxes

This project uses vagrant to create a temporary Virtual Machine (VM) (suitable for developers) provisioned by puppet (responsible for installation of additional software) with an installation of the repository developed at LINDAT/CLARIN based on DSpace including a number of useful tools. The VM can be created for different providers e.g., VirtualBox.

There is a similar project vagrant-dspace but we found it not suitable for our needs.

Developed by

LINDAT/CLARIN dev team (jm)

Requirements

  • vagrant
  • virtualbox (tested)

Branches

What to expect (lindat box)

After cloning this project and executing vagrant up (or better vagrant up lindat) you will get a VM with:

  • Ubuntu 12.04 VM with 33.33.33.80 ip address and dspace.lindat.dev hostname (update your hosts file to reach it under this name)
  • git, java, maven
  • apache, tomcat
  • probe, nagios, munin, monit, phppgadmin
  • jenkins with a simple reload script
  • latest version of the LINDAT/CLARIN repository inside a shared directory easily accessible between your computer the new VM (Projects/... and www)
  • out-of-the-box availability to debug DSpace on port 8000 using Remote debugging e.g., in Eclipse. Use the sources from the shared directory.
  • overview Web page at http://33.33.33.80 or better (http://dspace.lindat.dev) containing also users and passwords to the services

BEWARE!!!

The VM exposes many crucial interfaces with no or simple passwords - do not make the VM accessible from any external network!

Internals

The project is a standard Vagrant + puppet. Vagrant resources are described in Vagrantfile and contain definitions of three preconfigured boxes: lindat and dspace4.

The below snippet shows several variables passed from Vagrant to puppet provisioner

        puppet.facter = {
            "java_version"  => "7",
            "tom_version"   => "7",
            "repo_branch"   => "lindat",
            "fqdn"          => "dspace.lindat.dev",             
        }

which control java and tomcat version (tested also with java6 and tomcat6, for java8 read comments in puppet/manifests/lindat.pp). Puppet definitons and modules are in puppet directory with puppet/manifests/lindat.pp the main file being executed for the lindat box.

The puppet modules have been slightly modified to match our needs.

When puppet finishes Vagrant calls shell scripts e.g.,

        lindat.vm.provision "shell", path: "./Projects/libs/setup.probe.sh"
        lindat.vm.provision "shell", path: "./Projects/libs/setup.jenkins.sh"
        lindat.vm.provision "shell", path: "./Projects/libs/setup.munin.sh"
        lindat.vm.provision "shell", path: "./Projects/setup.lindat.sh" 

There are several reasons why they are not part of puppet (they could be in general).

Populating with data

The lindat box automatically imports sql dumps from the Projects/dumps directory. The setup.lindat.sh script searches for these three files:

  • user.sql
  • dspace.sql
  • utilities.sql

Original DSpace

There is another box called dspace4 which installs dspace4 in a very similar environment as our lindat box. A considerable stripped down and fixed version of the puppet module in vagrant-dspace was used.

License

This project is CC-BY unless noted otherwise in the particular modules.

Big thanks goes to

example42.com which created most of the puppet modules used in this project.