Automating Software Deployment

A Practical Guide to Continuous Delivery

Even the best software is unusable until you bring it in front of its users.

How do you do that? How do you avoid pitfalls, pain, and long release cycles? You automate it, as you do with all repetitive tasks.

This book walks you through the steps that lead from source code to an application that runs in a production environment. It shows a way to gradually introduce deployment to an existing infrastructure, so that each little step is an improvement over the status quo.

Check out the book in progress on leanpub, and read a free sample chapter there.



  • Lower Time to Market.
  • Quicker feedback from users.
  • Time saved from avoiding manual deployments.
  • Reliability from repetition and constant improvement.
  • Reduced stress levels around release day.

An Easy Start

  • Incremental introduction. No big switch-over needed.
  • Uses mature Open Source software. No up-front investment in license consts.
  • Very soon after the first automation steps, you start saving time. You can re-invest that saved time into improving and expanding the automation.

Topics covered

  • What is automated deployment?
  • The case for automated deployments
  • Prerequisites
  • Architecture of a deployment system
  • Choice of technology
  • Getting started: Building packages
  • Distributing packages to the target machines
  • Installing and upgrading packages
  • Coordinating the deployment process
  • Quality gating
  • Configuration Management


  • Debian packages and the tools to build them
  • aptly for repository management
  • Ansible for deployment and configuration management
  • Go Continuous Delivery for orchestrating the process

Did I catch your interest?

The book is a work in progress. I evolve it by first covering the topics on my blog, and later distilling them into a manuscript.

If you are interested in early access to some the material, or even want to help shaping the book by providing feedback, please follow the blog, or sign up for the mailing list here:

Subscribe to the Automating Deployments mailing list

* indicates required

About the Author

Moritz Lenz is a software engineer and architect.

In the Perl community, he is well known for his contributions to the Perl 6 programming language, the Rakudo Perl 6 compiler, related test suite, infrastructure and tools.

At his employer, noris network AG, he introduced Continuous Delivery for many in-house developed applications, and now wants to share his experience with the wider world.