Course curriculum

  • 2

    Setup dev environment

    • Install and test dependencies

    • Setup GitLab Account and SSH Authentication

  • 3

    Setup AWS

    • 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

  • 4

    Setup NGINX proxy

    • 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

  • 5

    Prepare recipe app project for deployment

    • 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

  • 6

    Setup Terraform

    • 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

  • 7

    Setup GitLab CI/CD

    • 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

  • 8

    Configure network

    • Network overview

    • Create VPC

    • Create public subnets

    • Create private subnets

    • Configure network quiz

  • 9

    Create database

    • Introduction to database

    • Update CI user policy

    • Add RDS instance

    • Set CI variables for database

  • 10

    Update bastion

    • 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

  • 11

    Setup Elastic Container Service (ECS)

    • 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

  • 12

    Using Bastion

    • Introduction to using bastion

    • Create an API superuser

    • Test ECS service

  • 13

    Create load balancer

    • Introduction to creating load balancer

    • Add permissions to CI IAM policy

    • Add load balancer

    • Update ALLOWED_HOSTS setting and test

  • 14

    Handle media uploads

    • 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

  • 15

    Setup custom DNS

    • 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

  • 16

    Summary

    • Test final app

    • Thank you!