Delivering the solution, the team used Terraform framework for infrastructure as a code implementation. Terraform code itself is stored in the GitLab repository, and the Terraform state – in the S3 bucket of the specific environment.
GitLab CI automation pipeline was used to enable the deployment of AWS resources on different environments. In turn, it allowed to do a one-click deployment of the AWS infrastructure to the development/production environment.
All the secrets are encrypted and securely stored on GitLab. GitLab CI provides customers with a single control point for the deployment process – for example, for reviewing Terraform code and deploying it on approving the merge request. It also enables control access in the AWS environment and restricts it for regular users, which means that all infrastructure changes can be deployed only with pipelines.