Chapter 7. Automating the development environment

 

This chapter covers

  • The value of a good README file
  • Automating the development environment using Vagrant and Ansible
  • Removing dependencies on external resources to make developers more autonomous

Nearly all software has some dependencies on its surrounding environment. The software (or rather the humans who developed it) expects certain other software to be running and some configuration to have been performed on the machine where it will run. For example, a lot of applications use a database to store their data, so they depend on a database server running somewhere and being accessible. As an example of a configuration dependency, the software might expect a certain directory to exist so it can save its log files inside it.

Discovering all of these dependencies, and provisioning the environment in order to satisfy them, can be quite tedious. The dependencies are often poorly documented, simply because there’s no good place or standard format in which to document them.

In this chapter we’ll look at how to make it as easy as possible for you and others to set up a development environment and get started on maintaining a piece of legacy software. We’ll write scripts that not only automate the provisioning process, but also act as documentation, making it easy for later maintainers to understand the software’s dependencies.

7.1. First day on the job

7.2. The value of a good README

7.3. Automating the development environment with Vagrant and Ansible

7.4. Summary