Many years back, when I was starting with infrastructure automation on AWS, I used to bundle together some CLI commands in a Bash script and fire it off when new AWS accounts required bootstrapping. It worked like a charm for basic setups but surfaced limitations in other areas such as ongoing management, updates, stack removals, extracting resource identifiers, and so on. Every requirement would transform into more scripts being developed and managed, which of course was not a scalable solution.
Secondly, it was difficult for other team members to contribute to these scripts as they didn’t have an operations or scripting background. This is where something more declarative such as AWS CloudFormation/Terraform could have helped them easily get started. There will always be a tipping point in your AWS infrastructure automation journey where you would like to switch from one approach to another as your needs outgrow the capabilities of underlying mechanisms or tools.
Luckily, when it comes to working with AWS, there are a lot of options that can be leveraged to target a specific requirement. As a cloud provider, it has always been a priority area for AWS to meet the requirements of the users, wherever they are in their cloud journey, and infrastructure automation is no different. Let’s dive into the various categories of infrastructure management tools that fit the respective use cases.
Manual infrastructure management
This is where everyonestarts their AWS journey. After logging into the console, users can browse different services across 26+ regions and deploy them with the click of a button. For demonstrations and proof-of-concept development, this is still a viable approach, so long as the user takes care of the security best practices and does not expose any confidential information over the internet.
AWS offers ready-made cloud blocks such as default VPCs, which allow users to get started in their AWS account.
Automating infrastructure rollouts with scripts
Once users are comfortable with AWS services and the idea of bundling multiple of those together to solve a business use case, they start using CLI commands and AWS SDKs to trigger some actions from their Terminal. If these follow a particular sequence, it also makes sense to tie them up with Bash scripts, for example. These scripts can then also be used in automated software delivery pipelines using tools such as Jenkins and AWS CodeBuild.