Presentation: Implementing Infrastructure as Code



10:35am - 11:25am

Day of week:



Key Takeaways

  • Learn key principles and practices for implementing infrastructure as code.
  • Hear practical advice and recommendations from someone involved with a variety of implementations on infrastructure.
  • See how to setup a full infrastructure pipeline.


New technologies for managing infrastructure are erupting across the industry - cloud, containers, and automated configuration tools to name a few. These technologies promise to let us continuously deliver software and services at a pace that keeps up with the ever-changing needs of our users. But can we do this without sacrificing operational qualities like security, availability, performance, and legal compliance?

Infrastructure as Code is the "A(utomation)" in the DevOps "CALMS" model. It leverages agile engineering tools and practices to provision and manage highly reliable infrastructure at speed.

This talk explainins how a team can implement a change management pipeline to create a fast, reliable process for building and maintaining a testing and hosting infrastructure for their microservices-based system. The talk presents a hypothetical application team, and walks through the creation of a cloud-based infrastructure using automation tools such as Packer, Terraform, and Ansible. A tracer bullet pipeline is used to deliver a Minimum Viable Product (MVP) to production. Automated testing tools including Serverspec are used to test the infrastructure as it evolves with the application to add more sophisticated capabilities, including continuous disaster recovery.

Attendees should come away with an understanding of how concepts such as Continuous Integration (CI), Continuous Delivery (CD), Test Driven Development (TDD) can be applied to infrastructure.


Your talk is called Implementing Infrastructure as Code. Can you tell me a bit about it?
With automation, virtualization, and Cloud the way we manage infrastructure has become less about handling hardware, and more about treating it as software and data. This opens opportunities to use techniques, tools and practices from software development to implementing infrastructure. You can use, for example, Test-driven Development and Continuous Integration to build an environment and set up servers.
What is your target audience for the talk?
The target audience are team leads, architects, and people who are involved in software development projects. Also, people who are in the IT ops part of the organization, interested in managing and providing infrastructure to development teams in a way that takes advantage of these technologies.
Would you say that you are more focused on an audience of someone already doing immutable infrastructure, or just thinking about doing it?
Most people are not very advanced in doing immutable infrastructure, they are probably using at least some of the tools. I would be surprised if they are not using virtualization unless it is conscious choice to use physical hardware.
When I ask people how many are using Chef or Puppet, the majority are using something like that. But, when I ask them if they run the tools continuously unattended versus “edit something, run it” the majority of them are doing it the second way. Many people are not fully embracing and using these tools the way they are intended.
Tell me about some of the main topics covered by your talk?
In the first half of the talk I discuss principles, like those that I mentioned, and some more specific things around reusing the infrastructure for different environments, testing, staging, and production.
In the second half of the talk, I will provide some advice on building such an infrastructure, starting with a tracer bullet pipeline using tools like Packer, Terraform, and Ansible, running on AWS.
I’ll explain what it means to take a simple Hello World application without a database through the testing and production phases. Then the application gets more complex, moving into microservices. What is the infrastructure pipeline and the architecture needed to handle that?
Can you give me an example of some of the tips you’ll give? What advice do you have to share around testing and infrastructure?
When you start doing all this automation, you can do a lot of damage very quickly. You need to be careful not to break the development environment. That’s why I like to run this stuff in my own little automated system before I inflict it on the development team.
Do you provide some tips on protecting yourself from blowing up the world with this automation?
Yes, the advice is to build an application test environment and use Terraform and Ansible in such an environment before putting it into the development department where the application is.
I give an example of writing a Chef cookbook that builds our Etsy hosts file that I screwed up. Nobody could log into any of the servers anymore. So I said, OK, I am going to run this, and if I screw it up, at least I am screwing up just a test environment and I don’t push it out to the devs.
What are the most important learnings that you want someone to leave your talk with?
I am hoping that this will help people who are using these tools, but not in a fully automated way, to learn what they can do to move on to the next stage. To draw a picture what the next stage looks like, and how to set up a pipeline that fully automates the infrastructure. I suspect most people are not doing that.

Speaker: Kief Morris

Cloud Practice Lead @ThoughtWorks

Kief Morris is Cloud Practice Lead at ThoughtWorks. He works with organisations to understand how to take advantage of cloud, infrastructure automation, DevOps, and Continuous Delivery to become more effective at delivering IT services. Originally from Tennessee, Kief has been based in London since the dot-com days.

Find Kief Morris at

Similar Talks

Global Solutions Architect @Venafi
Principal Solution Architect @CloudBees
Software Architect @VinSolutions, Author @pluralsight
Senior Director of Distribution Platforms @ESPN


Monday, 13 June

Tuesday, 14 June

Wednesday, 15 June