Automate all the things

Could you use some more automation?

The answer is clearly yes…if your coffee machine doesn’t start pouring when it detects you waking up, then there’s definitely things left to automate!

Unfortunately it’s hard to convince the boss to pay for you to spend half a day automating a coffee machine, so instead we’re going to focus on automatic environment provisioning – basically, how to get a new dev/stage/CI/prod environment deployed and ready to work in as quick and reliable a way as we can.

Environments are a pain to set up. Whether you use something like MAMP/WAMP/XAMPP on your dev environments, or native apache/mysql/php, it takes time to setup and configure, and that configuration often doesn’t match the live environment.
Some job-roles make this problem more obvious – such as short-term project placements lasting a week or two…do you rebuild/reconfigure your environment for each project? Make custom changes (such as setting the PHP memory limit to 1024MB) that you then forget about?
And setup time. New developer joining the project? Give them a day or two to build their environment.

Puppet is one of the tools that helps solve this problem, by defining the environment configuration in code, and automatically configuring the environment to match that configuration. Essentially, it will build the environment for you. In minutes. Automatically. Accurately. Every time.

Who’s this tutorial aimed at?
This tutorial if for people who do technical roles (whether that’s backend, front-end, site-building, devops…) but who have no or limited experience with Puppet or Vagrant.

Is it hands-on?
Absolutely. In this workshop, you’ll be using Vagrant on your own laptops, and building up a set of manifests to deploy a PHP development and test environment.

Questions and Answers

Who’s the target audience for this tutorial?

The tutorial is aimed at three main groups. Firstly, it’s for developers, to learn about streamlining environment setup, and to quickly build new environments on demand.  Secondly, it’s for sysadmins, to learn about encapsulating server configuration in code, and be able to consistently and quickly build new environments. Thirdly, it’s for devops, who want to use environmental configuration-management within a test-driven development workflow and CI environment.

How experienced do I need to be?

The tutorial is for people who have no (or very limited) experience in configuration management for environments – no previous experience in puppet/chef/vagrant is required. You should be able to use the linux command line at a basic level.

Which version of software / php etc will you be covering?

We’ll focus mainly on working with puppet, Vagrant 2 and Virtualbox on local environments.

Do I need to bring a laptop?

Yes! Absolutely. This will be a hands-on tutorial where we will be setting up and tearing down environments.

Do I need to install or set-up any specific software prior to the day, in order to get the most out of the day?

You will need to have Virtualbox and Vagrant 2 installed in advance, or have appropriate privileges to be able to install them on the day. If you can install them in advance, that will help save time on the day.  If you can also research your main production environments in advance, and bring along a description – ubuntu/redhat version, php version, etc – then we can look at specific examples that are applicable to you during the session.

What else will I get?

Refreshments and lunch, a personalised attendance certificate and a conference T-shirt!

Marcus Deglos

Marcus Deglos

Automate all the things

Marcus is an unashamed Drupal fanboy, and has been working with and contributing to Drupal since 2007. He wrote modules for ESI support and Varnish integration, in an effort to eke out every last drop of performance available. His current side-project combines two major interests: scuba diving and mapping, and uses the OpenStreetMap dataset.

Marcus founded Drupal services company Techito in 2012, where he specialises in technical leadership for enterprise Drupal projects.