How Does Slack Use Terraform?

<p>At Slack, we use&nbsp;<a href="https://www.terraform.io/" rel="noopener ugc nofollow" target="_blank">Terraform</a>&nbsp;for managing our Infrastructure, which runs on&nbsp;<a href="https://aws.amazon.com/" rel="noopener ugc nofollow" target="_blank">AWS</a>,&nbsp;<a href="https://www.digitalocean.com/" rel="noopener ugc nofollow" target="_blank">DigitalOcean</a>,&nbsp;<a href="https://ns1.com/" rel="noopener ugc nofollow" target="_blank">NS1</a>, and&nbsp;<a href="https://cloud.google.com/" rel="noopener ugc nofollow" target="_blank">GCP</a>. Even though most of our infrastructure is running on AWS, we have chosen to use Terraform as opposed to using an AWS-native service such as&nbsp;<a href="https://aws.amazon.com/cloudformation/" rel="noopener ugc nofollow" target="_blank">CloudFormation</a>&nbsp;so that we can use a single tool across all of our infrastructure service providers. This keeps the infrastructure-as-code syntax and deployment mechanism universal. In this post, we&rsquo;ll have a look at how we deploy our infrastructure using Terraform at Slack.</p> <h1>Evolution of our Terraform state files</h1> <p><img alt="" src="https://miro.medium.com/v2/resize:fit:639/0*uTIgYD2JXYl7OtMc" style="height:381px; width:639px" /></p> <p>Slack started with a single AWS account; all of our services were located in it. In the early days, our Terraform state file structure was very simple: We had a single state file per AWS region and a separate state file for global services, such as IAM and CloudFront.</p> <p><a href="https://swwapnilp.medium.com/how-does-slack-use-terraform-104b1e96c97d"><strong>Website</strong></a></p>