Git Product home page Git Product logo

terraform-challenges's Introduction

Terraform Challenges

Terraform challenges for beginners and advanced students and users.

The idea is simple: provide students with a single Terraform code base that has breaking changes introduced into it, then allow them to fix them.

Warning

!! WARNING !!

If you execute the following code against your AWS account you may incur a bill and financial obligations to AWS. Make sure you're prepared to cover the costs of running infrastructure inside of AWS before executing this Terraform code against your account.

Not "The DevOps Lounge" nor "OpsFactory Pty Ltd" will be responsible for any financial hardship you incur after using this code.

Prerequisites

You're going to need the following to use these challenges:

  1. An AWS account
  2. An IAM User with access and secret keys for accessing the AWS API
  3. Terraform installed locally and working

Branches

We introduce the breaking changes using branches that stem from the primary branch called solution. The branches that contain problems are called levels and follow the format level-N where N is the level, such as 1, 2, 7 or 12, etc.

The main branch is used only for documentation purposes and contains no code.

Process

Please switch to the solution branch and review the code - lint it, validate it, apply it, destroy it, etc. When you're ready, move onto branch level-1 and begin the process again, fixing the code as you go until you can successfully apply the code.

So as a student the recommended process for you looks a bit like this:

  1. Fork the repository
    1. Note: the main branch doesn't contain any Terraform code, only this README.md
  2. Switch to the solution branch
  3. Run terraform init (this step may fail)
  4. Run terraform validate (this step may fail)
  5. Run terraform plan (this step may fail)
  6. Run terraform apply (this step may fail)
  7. Run terraform destroy (this step will never fail due to potential financial implications)
  8. Switch to the level-1 branch and repeat the above steps, fixing the issues you face

At each level above the previous, the problems get harder and harder or just more annoying. It depends how I'm feeling ;-)

The Solution

The repository's solution branch represents a working solution. Should you get stuck, git switch solution to move back to this working copy of the code.

This branch is the main branch all problems are stemmed from. This code is taken, broken, and the challenge is then presented back to you to solve.

Getting Help

If you're struggling to understand the above instructions, have found an issue with the repository or just want general assistance, please join The DevOps Lounge community and seek assistance in the #help channel.

Cheating

Yes, you can cheat. If you know even the basics of Git commits, you can easily work out a way of seeing what changes have taken place in past commits and cheat. It's up to you to determine if this is something that helps you learn or not. We all learn in different ways.

terraform-challenges's People

Contributors

mrcrilly avatar opsfactoryau 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.