Over the next few weeks we’ll be learning how to use Salt, Salt-Cloud, and the AWS CLI to provision and configure a complete LAMP (Linux, Apache, MySQL, PHP) stack on top of Amazon AWS resources. The infrastructure will be comprised of the following Amazon AWS components:
- Three (3) t2.small Amazon EC2 instances
- One (1) Auto-Scaling group with associated launch configuration for additional instances created in response to infrastructure events (high CPU load, high RAM utilization, a sudden spike in requests, etc)
- One (1) Elastic Load Balancer (ELB) instance
- One (1) Amazon Simple Storage Service (S3) bucket for storage of static site assets
- One (1) Amazon Virtual Private Cloud (VPC)
- One (1) hosted zone in Amazon’s Route 53 DNS service
- One (1) Elastic File System (EFS) volume with mount targets in two Availability Zones
- One (1) Amazon Relational Database Service (RDS) instance configured for Multi-AZ replication
The AWS resources described above are shown in the following diagram to better illustrate how they will work together to serve various web applications like WordPress and others.
(Click for full size image)
All of the above resources can be configured graphically using the AWS console, but we’re using the Saltstack configuration management system and/or the AWS CLI to ensure consistency and a (relatively) easy, repeatable deployment. Also, clicking buttons isn’t nearly as much fun as writing code!
Note: Before you begin performing the steps outlined in upcoming posts in this series please understand they were written with the following assumptions in mind:
- You already have an Amazon Web Services account
- You have already created a custom VPC along with custom subnets
- You have a working knowledge of Amazon Web Services
I’m getting married next weekend so I won’t have the opportunity to write the next post in this series by next Sunday (I will have an unrelated post ready though), but beginning on Sunday, July 3rd we’ll dive into part 2 of this series and configure Salt and Salt-Cloud.