DevOps Deployment Automation with Terraform, AWS and Docker
Create production-grade scalable deployments with GitLab, EC2, ALB, ECS, ECR, VPC, S3 and Infrastructure as Code (IaC).
Welcome - promo video
FREE PREVIEWCourse requirements
FREE PREVIEWWhat is DevOps Automation?
FREE PREVIEWTechnologies
FREE PREVIEWArchitecture overview
FREE PREVIEWWhat is the recipe app?
FREE PREVIEWAWS cost estimation
FREE PREVIEWDisclaimer
FREE PREVIEWHow to get help
FREE PREVIEWUPDATE: AWS cost estimation
FREE PREVIEWInstall and test dependencies
Setup GitLab Account and SSH Authentication
Introduction to AWS setup
Setup AWS Account
Give IAM users access to billing information
Setup AWS IAM account
Set MFA on IAM account
Setup aws-vault
Create budget in AWS
AWS setup quiz
Introduction to NGINX proxy
Create project for NGINX proxy
Configure NGINX proxy GitLab project
Setup AWS for NGINX proxy
Set repository variables
Create NGINX config files
Create NGINX Dockerfile
Setup GitLab CI/CD pipeline build job
Setup GitLab CI/CD pipeline push jobs
Test proxy pipeline
NGINX proxy quiz
Introduction to preparing project for deployment
Create new project on GitLab
Configure GitLab project
Add uWSGI server to project
Update Dockerfile to run entrypoint
IMPORTANT UPDATE: Update Dockerfile to run entrypoint
Configure static and media files in app settings
Setup environment variable configuration
Test proxy deployment locally
Introduction to setting up Terraform
Get AWS ready for Terraform
Configure Terraform
Setup Docker Compose for running Terraform
Initialize Terraform
Create bastion EC2 instance
Create Terraform workspace
Create resource prefix
Add tags
Introduction to setting up GitLab CI-CD
Create skeleton CI/CD config
Test workflow
Add automated code checks
Setup Terraform linting
Create CI user in AWS
Add build job
Add Terraform plan jobs
Add Terraform apply jobs
Add Terraform destroy jobs
Test full workflow
UPDATE: Must go back and change code from previous lesson
GitLab CI-CD setup quiz
Network overview
Create VPC
Create public subnets
Create private subnets
Configure network quiz
Introduction to database
Update CI user policy
Add RDS instance
Set CI variables for database
Introduction to updating bastion
Update CI user and add SSH key
Create user data script
Create bastion instance profile
Update bastion subnet and SSH key
Add security group
Add output for bastion address
Update bastion quiz
Introduction to ECS
Add permissions to CI user
Create cluster
Create task role
Create log group
Create container definition template
Create task definition
Create and deploy service
UPDATE: Create and deploy service
Inspect ECS task logs
Introduction to using bastion
Create an API superuser
Test ECS service
Introduction to creating load balancer
Add permissions to CI IAM policy
Add load balancer
Update ALLOWED_HOSTS setting and test
Overview of media uploads
Add S3 permissions to CI IAM policy
Create S3 bucket for images
Give ECS task permissions for S3
Update app to use S3 backend for images
Handle media uploads quiz
Overview of DNS
Register domain
Add IAM permissions for CI user
Add DNS to Terraform
Update load balancer and ECS to use new domain
Setup custom DNS quiz
Test final app
Thank you!