What is Operations?
In the IT world, Operations refers to a team or department within IT which is responsible for the running of a business’ IT systems and infrastructure.
So what kind of activities this team perform on day to day basis?
Building, modifying, provisioning, updating systems, software and infrastructure to keep them available, performing and secure which ensures that users can be as productive as possible.
When moving to public cloud platforms the areas of focus for Operations are:
- Cost reduction: if we design it properly and apply good practices when managing it (scale down / switch off)
- Smarter operation: Use of Automation and APIs
- Agility: faster in provisioning infrastructure or environments by Automating the everything
- Better Uptime: Plan for failover, and design effective DR solutions more cost effectively.
If Cloud is the new normal then Automation is the new normal.
For this blog post we will focus on automation using AWS CloudFormation. The template I will use for this post for educational purposes only and may not be suitable for production workloads :).
AWS CloudFormation provides developers and
system administrators DevOps an easy way to create and manage a collection of related AWS resources, including provisioning and updating them in an orderly and predictable fashion. AWS provides various CloudFormation templates, snippets and reference implementations.
Let’s talk about versioning before diving deeper into CloudFormation. It is extremely important to version your AWS infrastructure in the same way as you version your software. Versioning will help you to track change within your infrastructure by identifying:
- What changed?
- Who changed it?
- When was it changed?
- Why was it changed?
You can tie this version to a service management or project delivery tools if you wish.
The below diagram illustrates the basic AWS infrastructure we will build and automate for this blog post:
Firstly we will create the initial stack. Below are the components for the initial stack:
- A VPC with CIDR block of 192.168.0.0/16 : 65,543 IPs
- Three Public Subnets across 3 Availability Zones : 192.168.10.0/24, 192.168.11.0/24, 192.168.12.0/24
- An Internet Gateway attached to the VPC to allow public Internet access. This is a routing construct for VPC and not an EC2 instance
- Routes and Route tables for three public subnets so EC2 instances in those public subnets can communicate
- Default Network ACLs to allow all communication inside of the VPC.
Below is the CloudFormation template to build the initial stack.
The template can be downloaded here: https://s3-ap-southeast-2.amazonaws.com/andreaswasita/cloudformation_template/demo/lab1-vpc_ELB_combined.template
I put together the following video on how to use the template:
Understanding a CloudFormation template
AWS CloudFormation is pretty neat and FREE. You only need to pay for the AWS resources provisioned by the CloudFormation template.
The next bit is understanding the Structure of the template. Typically CloudFormation template will have 5 sections:
Parameters: Provision-time spec command-line options. Example:
Mappings: Conditionals Case Statements. Example:
Resources: All resources to be provisioned. Example:
In Part 2 we will deep dive further on AWS CloudFormation and automating the EC2 including the configuration for NAT and Bastion Host instance.