[services][terraform] Introduce S3 backend
Summary:
Part of ENG-3549. This diff sets up Terraform to use the S3 backend, located on the Terraform/Infra AWS account in the commapp-terraform bucket.
Logged in to that account, the AWS provider 'assumes role' on the target (staging/prod) accounts in order to perform actions.
The following steps were made:
- Created a new S3 bucket commapp-terraform in the Terraform/Infra AWS account
- Set up appropriate permissions to access the bucket
- Both staging and prod accounts have a Terraform IAM role, assumable by the Terraform/Infra account
- Set up the code in this diff.
- Log in to the Terraform/Infra account with CLI and ran terraform init -migrate-state to copy local state to S3.
Depends on D8667
Test Plan:
- Logged in to the Terraform/Infra AWS account with AWS CLI
- Cleared local files and dirs: terraform.tfstate, .terraform/, .terraform.tfstate.d/
- Ran terraform init and terraform workspace select production. They succeeded.
- Ran terraform plan - it succeeded and showed the changes that would be applied.
- Entered S3 console and verified that the state files were last updated during the tf apply.
Reviewers: jon, varun
Reviewed By: jon
Subscribers: ashoat, tomek
Differential Revision: https://phab.comm.dev/D8669