Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jbangurajr/terraform-beginner-bootcamp-2023

TerraTowns is a community website where terraformers launch their own Terra House (user-created website)
https://github.com/jbangurajr/terraform-beginner-bootcamp-2023

Last synced: about 2 months ago
JSON representation

TerraTowns is a community website where terraformers launch their own Terra House (user-created website)

Awesome Lists containing this project

README

        

![ ](https://raw.githubusercontent.com/jbangurajr/terraform-beginner-bootcamp-2023/main/assets/Terraform-Cloud-Project-Bootcamp-2023.jpg)

## Creating a Custom Terraform Provider and Integrating CloudFront with Amazon Simple Storage Service (S3) to host a Static Website with Terraform.

![ ](https://raw.githubusercontent.com/jbangurajr/terraform-beginner-bootcamp-2023/main/assets/Architectural%20Diagram1.jpg)

![ ](https://raw.githubusercontent.com/jbangurajr/terraform-beginner-bootcamp-2023/main/assets/Architectural%20Diagram2.jpg)

![ ](https://raw.githubusercontent.com/jbangurajr/terraform-beginner-bootcamp-2023/main/assets/Architectural%20Diagram3.jpg)

![ ](https://raw.githubusercontent.com/jbangurajr/terraform-beginner-bootcamp-2023/main/assets/Architectural%20Diagram4.jpg)

**TerraTowns** is a community website where terraformers launch their own Terra House (user-created website).

Our main objectives were to create, test, and deploy a custom Terraform provider using HashiCorp's structured language (HCL) and Go. Afterwards, AWS Cloudfront and S3 were utilized to host a Static Website.

Other languages utilized included HTML and Ruby along with Shell scripting.

Refactoring, testing, and documentation were vital throughout the project along with GitOps and good version control practices.

## Learning Outcomes

#### Learn the basics of Infrastructure as Code and Terraform:
- Registry and Providers
- Resources and Variables
- Root Module Structure
- Running Terraform commands in Terraform CLI
- State migration/management
- Changesets
- CI/CD

#### How to use Terraform Cloud:
- Learn how to work in a Team Management platform
- Security considerations and Secret Management best practices
- Local and Remote State

#### Learn code/scripting:
- HashiCorp Configuration Language (HCL) for creating a custom Terraform Provider
- Go for creating a custom Terraform Provider
- HTML for creating Static Website
- YAML for Gitpod CDE configuration
- Bash scripting to simulate HTTP requests for comprehensive infrastructure testing.
- Testing/Logging/Reviewing best practices

#### Learn CRUD Functions Implementation:
- Actions for Creating, Reading, Updating, and Deleting resources

#### Learn how to do basic git operations:
- Pull Request
- Commit
- Merge
- Push
- Branching

#### How to use Github to write documentation:
- Creating and updating files
- Uploading images and assets
- Using Markdown language for writing technical documentation
- Semantic versioning and best practices

#### How to use a CDE:
- Launching and Stop a Gitpod Workspace
- Configuration launch scripts e.g. Gitpod.yml files
- VSCodes basics. Themes, extensions, splitting windows
- Install and configure the AWS Command Line Interface (CLI)

#### Learn Web Server Configuration:
- Set up mock server for testing (Sinatra) environment
- Set up server for production (Rails) environment

#### How to interacting with AWS via Terraform:
- Hosting a static website using S3 (storage)
- CloudFront Distribution
- Origin Access Control (CDN)
- Content versioning
- Cache invalidation

## Weekly Journals

- [Week 0 Journal](journal/week0.md)
- [Week 1 Journal](journal/week1.md)
- [Week 2 Journal](journal/week2.md)

## Extras
- [Github Repository](https://github.com/jbangurajr/terraform-beginner-bootcamp-2023 )

- [Terraform Registry Custom Module](https://registry.terraform.io/modules/jbangurajr/bootcamp-2023/beginner/latest)

- [Terraform Registry Custom Provider](https://registry.terraform.io/modules/jbangurajr/bootcamp-2023/beginner/latest)

- [Terrahome](https://terratowns.cloud/)

![ ](https://raw.githubusercontent.com/jbangurajr/terraform-beginner-bootcamp-2023/main/assets/terratown.jpg)

![ ](https://raw.githubusercontent.com/jbangurajr/terraform-beginner-bootcamp-2023/main/assets/terratown2.jpg)