What is infrastructure as code? Something every engineer should know. In traditional IT deployments an architect would write up a design document that shows the steps required for the solution, configuration details of any servers, applications or network equipment involved and pass this over to an engineer who would build the solution and hand things over to BAU. Once the solution went into production over time changes would occur and the design document would become out of date and configuration would become inconsistent as many people make more changes over time. Trying to figure out what has changed and why starts to become difficult.
 
Using infrastructure as code you are managing and maintaining your environment using code which beats of doing things manually. You would still design your infrastructure but the configuration becomes more consistent and self documenting. You achieve this by storing your configuration in a playbook using something such as Puppet, Chef or Ansible which then manages your infrastructure. When building a new server instead of firing up the GUI and clicking away you would specify your configuration in a playbook and it would contain all the appropriate settings – number of CPUs, storage, network settings and software to install. This allows for consistent configuration across your environment. Manual tasks such as setting up virtual machines become automated and repeatable. On top of this any changes made to the playbook become self documenting and much easier to roll back.
 
Why not get started by following this guide from Puppet labs on how to setup Puppet in Azure. There’s nothing like hands on experience to get you started.