Automating Automation: Intrinsic CI/CD in AWS
IT has been moving towards IaC, steadily and inevitable. One of the indicators is the growing number of contributions in HCL language to Github[1]. HCL aka Hashicorp Configuration Language is a declarative configuration language Hashicorp's Terraform utility uses to describe resources and their interactions.
Continuous integration and continuous deployment (later CID) was invented decades ago, but it is still today often seen as a separate entirety from the actual strategic workload and doesn't follow the same IaC principles. CID infrastructure and pipelines are managed by clicks and require wast amount of attention from ops teams.
<mind blown>
When you combine these two clauses in practice, you accomplish self deploying CID environment in AWS. There is no separation between workload and CID, they are one. Change management process for both follows the same path; write IaC, push to Git and world changes.
In practice, all entities required for this orchestration are described with Terraform code, including Github Webhook, AWS Codepipeline and Codebuild configurations and notification channels. After deployed once, CID pipeline takes over the orchestration of the whole palette. Bam!