AWS CodeDeploy: Heads Up

AWSCodeDeployLogoAt Trainline we embarked on an ambitious cloud migration journey to AWS around a year ago and as part of this we’ve adopted AWS CodeDeploy as our deployment management mechanism.

I recently presented at the DevOps Exchange Meetup in London on this topic. I discussed where we’re up to with a focus on some interesting challenges we’ve faced getting CodeDeploy to play nicely with our hosting model.

Here are the slides from my talk: Continue reading

Scripting Language and Region settings for current user, default user and welcome screen

At first glance, this seems like a simple and straight forward task; set the language and region for the current user, default user and welcome screen using command line tools. It’s easily done with the GUI, and Microsoft like to ensure that anything that can be done in the GUI can also be done in PowerShell, so this should be easy, no? Sadly, no.

Continue reading

Building AMIs with Packer

During the planning stages of our migration to AWS, we identified the need to create custom images (AMI’s) as the base for new instances. While we are relatively experienced with Chef, we found that running Chef at instance launch time was much longer than acceptable. Creating custom AMI’s that are preconfigured (known as baking) allowed us to shift the heavy lifting from instance launch time to an earlier, out-of-band time.

In designing this process, we came up with multiple goals – we needed to have a reliable, repeatable, auditable and tested process with a fast spin-up time. This post explores our recent infrastructure automation efforts in this area.

Continue reading

Chef on Windows – detecting and fixing WMI problems which prevent chef-client runs

At we use Opscode Chef for managing our build infrastructure. Like many other tools running on Windows, the chef-client ohai framework relies on WMI for extracting information about the server machine on which scripts are being run. We found that Windows WMI repository corruption can cause chef-client runs to fail due to missing WMI classes, which causes the node to remain out of policy. The WMI repo can be repaired using winmgmt /salvagerepository, and the WMI errors can be monitored using the WMIDiag script to alert on WMI repository corruption before future chef-client runs. This post details how we detected and fixed the problem, and how to monitor for WMI repository corruption.

Continue reading

Chef training with Stephen Nelson-Smith – the trainline approach

At we have been using Opscode Chef since 2012 for automation of parts of our server infrastructure, particularly the build (CI) machines. We recently had several days of intensive Chef training with Chef expert Stephen Nelson-Smith (@LordCope on Twitter) of Atalanta Systems, spread over a few weeks, in preparation for scaling up our use of Chef. Here are some details of how we structured the Chef training, and what we got out of it (and why).

Testing Tools for Chef

Testing Tools for Chef – following the outside-in GOOS-style/BDD approach

Continue reading