Before we provide TeamCity or Octopus Deploy training to our customers, we have to launch a number of identical virtual machines for the candidates. All of the required software must be installed (TeamCity, Octopus Deploy, Sql Server etc) on the machines, and they must be identical to each other. A customer asked how they could do this in Azure, so we put together some PowerShell, an ARM template and this post to help automate their process.