The goal of this workshop is to become familiar with some of the best practices using Terraform, discover existing solutions, Terraform modules, and tools.
This workshop is a practical hands-on addition to Terraform Best Practices guide, which has been created and provided by Anton Babenko. Some rights reserved.
Please, send your feedback by email to [email protected].
If you are looking for a Terraform trainer, mentor for your project, or other Terraform/AWS services, please send an inquiry to Betajob company.
- Follow
@antonbabenko
on GitHub, Twitter, Linkedin. - Join chat room on Gitter during or before the workshop - gitter.im/terraform-best-practices-workshop/Lobby.
- Install the latest version of Terraform 0.12.
- Install the latest version of AWS CLI.
- Make sure that you have a GitHub account created.
- Mac, Linux or Windows - all is fine as long as you can use it. If you want, you can get a Linux box running using Vagrant+VirtualBox and install software from above on it.
- Access credentials to manage resources in the workshop's AWS account will be provided at the beginning of it (if requested by attendees).
Learn how to manage AWS infrastructure using existing building blocks - terraform-aws-modules.
- Terraform AWS modules are a collection of reusable building blocks of AWS infrastructure supported by the community.
- Explore Terraform Registry and check out terraform-aws-modules listed there.
- Task "Basic Terraform". Read tasks/0-basic/README.md for more details.
- Task "Network Stack" - VPC, Autoscaling, Security Group, ELB, ALB, RDS. Read tasks/1-network/README.md for more details.
- Task "IAM resources" - IAM users, groups, permissions, roles, multiple AWS accounts, assuming roles.
- Task "Working with Terraform in a team using Atlantis" - Setup Atlantis to run on AWS Fargate using terraform-aws-atlantis module and integrate it with infrastructure repository.
- Official Terraform documentation
- Terraform AWS provider documentation
- pre-commit-terraform to have Terraform code automatically formatted before committing.
- terraform-docs to have documentation for variables and outputs automatically updated before committing.
- Slides for many of my talks and training are available here.
- Verify access to a workshop AWS account (
905033465232
), S3 bucket for remote states (tfworkshop
), DynamoDB table for locking (tfworkshop
). Region -eu-west-1
. - Before workshop - create IAM users and IAM group (
developers
) by runningcd bootstrap-workshop-jsonnet && make apply
. - After workshop - remove all resources in the whole AWS account by running
cd bootstrap-workshop-jsonnet && make aws-nuke-for-real
or remove just IAM users and IAM group by runningcd bootstrap-workshop-jsonnet && make destroy
.
This work licensed under Apache 2 License. See LICENSE for full details.