Skip to main content

Using Vagrant and Puppet to build a PHP/Lamp environment

Vagrant is a real help in creating developer environments and is widely used by many development teams due to its flexibility and ease of replicating environments.

In order to get ready with Drupal 8, I wanted to get to know Symfony this is an attempt to do that and hopefully this will help me do just that and help others who stumble upon this site.

The steps for creating a development environment is below, I am using a Mac OS X Yosemite, you can use your favourite OS :

1. Install vagrant using

2. Install a provider I have used VirtualBox.

3. Initialise a Vagrant environment.

Vagrant should work form any where on your computer because the installer would have added this to your executable paths, so lets create a new folder called 'vagrant' and run the following command

vagrant init hashicorp/precise64

This creates the Vagrantfile which is the main configuration file for vagrant. Open the Vagrantfile in your favourite editor or maybe just vi it. some of the configurations are worth noting, you can set here the port you want to forward, shared folders etc.

by default the line = "hashicorp/precise64" is uncommented, and this is the only line which is required to start your vagrant machine!

We will uncomment one more line "forwarded_port", guest: 80, host: 8080

This will allow us to use our computer to access a website on the VM.

in the folder where the Vagrantfile is created do "vagrant up" thats it the vagrant machine is up albeit a very basic one...we will learn to it do all the things we want for symfony to work next.

This is how we can get Vagrant to setup a development box very quickly, now think this is a vanilla base installation, now you can configure this box, install a provisioner like puppet and create a base box for your specific development team needs.

Fortunately there are a lot of base boxes already setup with the required software for symfony to work, we can use them to such base box i found at:

with instructions on how to setup this vagrant box, installation was a doddle and i was able to setup a vagrant box in under 40 mins.


Popular posts from this blog

Create a drupal development environment using docker.

Currently at work i am using docker to streamline and speedup of development and deployment to testing and production, I am using symfony currently and our app is dockerised, i wanted to do the same for drupal based apps.

I searched for a official drupal docker repo and i did find this.

Unfortunately there was very terse explanation but pretty much worked, i found a few hiccups along the way so wanted to share what i did.

Install docker for your environment. Lots of details are available at explaing docker and installing docker for your environment.

The docker repo holds the drupal container at, following the instructions this is how to create the drupal container:

In order to use my code base we need to mount the volume with the -v directive as below, we do this in one command:

docker run -v /$HOME/work/drupal8:/var/www/html -p 8080:80 --name mydrupal -d drupal

this will create…

Use feeds module to import XML data in Drupal 7

Recently i had to setup a xml import process to import data from an external supplier on a regular basis, the filename and format was not changing and i could choose where to store the file. Following is how i set it up.

First we need to download the following modules

feeds admin ui

enable the above modules.

We will need a sample XML so this will be the one we will use for this demonstration:

<?xml version="1.0" encoding="utf-8" ?>
<!-- Sample for demonstration of processing XML feeds with feeds module -->

How do you expose your legacy database tables to views in drupal 6 Part 1

This is a 2 part post, that shows how I exposed a legacy table to views in drupal and used the incredible power of views to create many combinations static and conditional views. This was very helpful for my client.

I had a requirement that warranted exposing existing database table to views, so that views can contain data from this table.  To enable this to happen, the following steps need to be taken.
In a custom module you need to first define the views_api hook as following:
function candidate_views_api(){ $view = array(); $view = array('api' => 2, 'path' => drupal_get_path('module','candidate'). '/views'); return$view; }
candidate module was a custom module which I already had, so it made sense to add this hook here. 
The important bit here is telling the drupal sub-system where the views file will reside. 
Then create a file with your <modulename> in my case it was, this file should have two hooks, one …