11. Infrastructure as Code
● Build multiple copies of your environment
○ Dev
○ Test
○ UAT
○ Staging
○ Production
● Ensure changes have been tested before
being applied
12. Infrastructure as Code
● git provides complete, contextualised
configuration history
● git provides an audit trail
13. Terraform
● Specify infrastructure using a
declarative language
● Open Source (golang)
● Supports multiple IaaS/PaaS platforms*
*Does not provide an abstraction layer
14. Alternatives: CloudFormation
● Official AWS product
● … but support for new features often lags by
weeks or even months
● Has no mechanism for coping with external
change or even detecting it
● No ‘dry-run’ mode
15. Alternatives: Puppet/Chef/Ansible
● Use your existing configuration management
to build infrastructure
● Works well for simple environments
● Single process - makes building very slow
● Round peg / Square hole?
16. Terraform
● Quick
● plan mode to show the changes that will be
made
● graph mode to visualise infrastructure