Vlad - The Vagrant LAMP Ansible Drupal development box

2nd February 2014 - 10 minutes read time
I’ve been using local development environments for years to work on websites. At one points I even setup some Phing scripts to create Apache hosts and databases locally so that I didn’t have to keep adding them myself. When I was first introduced to Vagrant I liked the idea of supplying a box with a project so that people could work on it without having to reconfigure their system for each project. What was missing was a good provisioning tool that wasn’t difficult to understand. I had looked at Puppet and Chef but they were just too complex and after a couple of hours of looking into each one I still wasn’t sure about how they worked.

Automatically List Directory Contents When Changing Directory In Linux

28th January 2014 - 2 minutes read time

When navigating around a Linux box I tend to find I use the same two commands a lot. The first is 'cd' to change a directory, and the second is 'ls' in order to see what is in the new directory. Rather than do this over and over again I decided to look around for a good solution to automate this.

I found a variety of results on the internet, but some were simply creating a different alias that wrapped the same two commands. I found this example on superuser, which solves the problem quite nicely. Here is the example in full.

Ansible SSH Setup Playbook

14th January 2014 - 7 minutes read time

It is best practice to use Ansible with SSH keys in order to create the SSH connections to the servers. This does require a little bit of extra setup before hand in order to ensure that the server can be reached by Ansible via SSH keys alone. As I have been doing this quite a lot recently I decided to package the setup steps into an Ansible playbook.

When you first set up a Linux server you will find that you are usually given root access, and it is up to you to configure it after the fact in order to have an administrator user with the correct access. With this root user we will use Ansible to log into the host, create a new user, setup SSH key access and then alter the sudoers file so that the new user can perform Ansible tasks.

Assuming that the host we want to configure has an IP address of we can create an inventory file that looks like the following.

Vagrant: Development Environments Made Easy

26th December 2013 - 8 minutes read time

Vagrant is a tool that allows the easy creation of virtual machines. It was originally developed for use with VirtualBox, but it has been extended to allow integration with other virtualisation tools. Using Vagrant you can create a particular setup that you can then share with other people without having to give them large virtual disk images.

I have to admit, when I first heard of Vagrant I didn't 'get it' and wasn't sure why I should be using it at all. Since then I have done lots of reading and talking with other developers and I am now wondering how I managed to work without it.

Ansible: The Automation Engine

23rd December 2013 - 14 minutes read time

Ansible is a automation and provisioning tool that makes it easy to configure systems with the needed software, configuration options and even content. It is a command line tool, written in Python, that uses SSH connections to run these actions. This means that all you need to do is have a viable SSH connection to a machine and Ansible will run any actions you want to run. Ansible can either run single commands or use what is called a playbook to run several commands. Ansible playbooks are written in YAML, which makes understanding them quite easy.

I have tried to use other provisioning tools like Puppet and Chef in the past, but these have always been difficult to get to grips with. When I started using Ansible it wasn't more than 20 minutes before I was installing and configuring software on a server. The YAML files that Ansible uses makes it easy to see what is going on and have enough features to allow for some quite complex configurations.

Drupal 7 Audit SQL Queries

13th December 2013 - 2 minutes read time

When doing site audits on Drupal sites it’s always a good idea to get a feel of what sort of content types, users and taxonomy terms are available. Here are some SQL queries that I tend to use when starting out on a Drupal Audit.

Deleting Unapproved Comments In Drupal 7

13th December 2013 - 3 minutes read time

I recently came under a spam attack that gave me a bit of a problem to sort out. Over the course of 24 hours my blog received over 50,000 comments, all of which were utterly useless. What was good was the fact that my tiny little VPS server managed to stay available for most of the attack.

Due to the vast number of comments the normal administration form in Drupal became a little useless. I could only delete 25 comments at a time, so after an hour of this I decided that I needed to run a few SQL statements to clear out all of the unwanted comments in the database. I thought I would write up the commands I used in a post.

The first thing to do was to delete any unapproved comments from the comments table.

DrupalCampNW 2013: A Review

2nd December 2013 - 16 minutes read time

It’s been a whole year since the last DrupalCampNW2012 and this years DrupalCampNW (appropriately titled DrupalCampNW2013) seems to have been a great success. This years camp was held in Manchester at The Studio and I was part of the committee of people who helped organise and run the event.

Over the course of the weekend there was a range of talented speakers covering differing issues around Drupal, open source technologies and user experience. The weekend consisted of a Friday business event, followed by a developer and site builder event on the Saturday and Sunday.

My main task during the event was making sure the volunteers we had there on the day knew what they were doing and when to do it. The trouble with organising and running a conference is that you are lucky if you get to see many of the sessions. I did, however, manage to see several sessions over the course of the weekend.

Drupal 7 File Stream Wrapper Translation

18th October 2013 - 4 minutes read time

Steam wrappers were introduced in Drupal 7 and allow user file locations to be kept in a maintainable way, although I often forget which function to use to translate them. The three wrappers available are public://, private://, and temporary://, which map to the public, private, and temporary files directories respectively. All user files in Drupal are stored in either of these directories and they are referenced in the database as the file wrapper followed by the location of the file. This means that the location of the files is only dependent on a single config setting.

Translation of the stream wrapper into a file location is dependent on one of two functions, depending on what sort of file location you want. If you want to get a local file location then you would use drupal_realpath(), whereas if you want a URL of the file you would use file_create_url().

PHPNW13: A Review

14th October 2013 - 18 minutes read time

PHPNW13 is the 6th annual PHPNW conference, organised by members of the PHPNW community and Magma Digital. This year the conference saw around 420 people (with myself as a helper) at the conference, which was held in the Manchester Conference Centre.

My involvement in PHPNW13 started a few months before the actual conference. When the call for papers closed back in June I spent a weekend reading the submissions so that we could pick which sessions would be at the conference. Out of the 183 papers submitted (20 more than last year) we had to pick just 35 or so sessions that would be presented at the weekend. The final selection of talks was really good and judging by the comments and rating on joind.in they were well received by the other conference attended as well.