GithubHelp home page GithubHelp logo

up1 / cloud-native-aws-terraform-workshop Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cloud-gov/cloud-native-aws-terraform-workshop

0.0 3.0 0.0 3.31 MB

A 1-day training class on how to deploy a cloud native app on AWS with Terraform and shell scripts

License: Other

Ruby 0.11% Shell 0.41% PHP 0.08% JavaScript 52.49% CSS 23.76% HTML 23.14%

cloud-native-aws-terraform-workshop's Introduction

Provisioning and Deploying Cloud Native Systems in AWS with Terraform and Shell Scripts.

A 1-day hands-on training class in which participants will learn:

  • AWS guest network architecture: regions, availability zones, VPCs, subnets, security groups, routes, gateways.
  • Some elements of AWS identity and access management: roles, policies.
  • How to configure a simple, highly available AWS application environment with AWS autoscaling groups, load balancers, RDS, and CloudWatch.
  • Infrastructure-as-Code with AWS and Terraform: How to configure and manage AWS infrastructure using Terraform.
  • Very simple automated deployment using shell scripts and an S3 bucket.
  • An introduction to architecture for distributed systems.

The basic infrastructure we build is shown in this system diagram:

system diagram

Prerequisites for Workshop Participants

  • You must bring a laptop with support for bash. Linux, MacOS, or Windows 10 with Windows Subsystem for Linux installed are all fine. Alternatively, you can stand up a virtual linux box using a tool such as VirtualBox.
  • You must be comfortable using the shell / command-line.
  • Please install the AWS CLI, Terraform BEFORE coming to class.
  • Note, you may also be interested in installing Vagrant but this is optional.

Running the slides locally

The workshop is run as a series of slide decks. The decks are written in HTML, and use reveal.js. To view the slides on your local machine, first go to the slides directory. Then install npm if you don't already have it, and run the following commands:

npm install
grunt serve

This should run an http server locally and spawn a browser window with the first slide of the workshop. Check out the reveal.js documentation for more on using reveal.js.

Instructor Preparation

This workshop is designed to be scheduled as an 8h class, including a 1h lunch break and two further 20m breaks (in other words, if you ran the material without a break, it would take you about 6-7h).

Because the class requires hands-on coding, we recommend a maximum of 16 participants per instructor, assuming participants who are comfortable with shell scripting and a text editor. If participants aren't familiar editing and running commands at the shell, you will need a lower ratio of students to instructors, and more time.

We recommend using an empty AWS account for this workshop. Each participant will set up their own VPC in the course of the workshop, and if you've created a new AWS account you will need to submit a request to raise the default VPC limit of 5 VPCs per region. This should be done several days in advance of delivering the class.

The instructor should upload the contents of the code/scripts directory to an S3 bucket. The code and slides assume that the S3 bucket is called 18f-terraform-workshop, but if you're not running this at 18F, you'll want to upload to your own bucket, and you should change all the references to this S3 bucket in the repo. Find them using grep -R "18f-terraform-bucket" *

Acknowledgements

Charity Majors' blog posts on Terraform proved valuable in preparing this workshop. Thanks Charity.

Public domain

This project is in the worldwide public domain. As stated in CONTRIBUTING:

This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.

All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.

Note that parts of this project have been taken from the reveal.js repository, and are Copyright (C) 2016 Hakim El Hattab.

cloud-native-aws-terraform-workshop's People

Contributors

jezhumble avatar thecapacity avatar

Watchers

Somkiat Puisungnoen avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.