Welcome to my learning adventure about infrastructure as code! At the time of authoring these articles I had just begun some work that required me to skill up a bit with Amazon Web Services and learn some tools that can assist with automation of provisioning cloud resources. All of this was very new to me and I started to experiment with tools and techniques to build up my knowledge - I figured I could write up my experience here and share the knowledge I’ve gathered. No doubt some of this stuff will seem very basic to those who have been in the profession for a while but we all gotta start somewhere!
In these articles I will explain the approach I took to create a self contained Docker image that acts as both a developer sandbox for writing cloud stuff locally, as well as being a build agent in a Jenkins build pipeline to perform the building, testing and deployment of cloud resources.
We will I use a bunch of interesting tools in this experiment, a number of which I had never used before:
The goals are:
An AWS account: You can follow quite a lot of this without having an AWS account but you will need one if you want to try out actually running Terraform code to test and deploy AWS resources.
Linux or MacOS: It’s possible this stuff can be done on Windows as well but I didn’t investigate that too much, though I actually did do most of the development for these articles on my Windows machine, but within Linux Mint running in VirtualBox! So if you only have a Windows machine and want to follow along, just install Linux in VirtualBox like I did and you can do it too!
Although I did most of the dev for this series in Linux Mint, I wrote up these blog articles on my MacBook Air testing it along the way on MacOS and found a bunch of differences running Docker on MacOS compared to Linux! I’ve tried my best to make sure this experiment can be run on MacOS as well as Linux but to be honest I found doing it on MacOS to be a pain compared to Linux.
Source code can be found at: https://github.com/MarcelBraghetto/iac-env
Continue to Part 2: Create iac-env Docker image.
End of part 1