-
Notifications
You must be signed in to change notification settings - Fork 125
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #26 from rearc/readme-update
Update readme for clarity and added git info
- Loading branch information
Showing
1 changed file
with
74 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,76 @@ | ||
# A quest in the clouds | ||
|
||
### Q. What is this quest ? | ||
##### It is a fun way to assess your cloud skills. It is also a good representative sample of the work we do at Rearc. Quest is a webapp made with node.js and golang. | ||
|
||
### Q. Do i need to be an expert in node.js and golang ? | ||
##### No. The starting point of the quest app is `npm install && npm start`. That is all the node.js you need to know. And you wont even see golang. | ||
|
||
### Q. So what skills should i have ? | ||
##### AWS. Cloud concepts. Docker (containerization). IAC (Infrastructure as code). HTTP/HTTPS. Linux/Unix. | ||
|
||
### Q. What do i have to do ? | ||
##### 1) Deploy the app in AWS and find the secret page. Use Linux 64-bit as your OS (Amazon Linux preferred) | ||
##### 2) Deploy the app in a Docker container. Use `node:10` as the base image | ||
##### 3) Inject an environment variable (SECRET_WORD) in the docker container. The value of SECRET_WORD should be the secret word discovered on the secret page | ||
##### 4) Deploy a loadbalancer in front of the app | ||
##### 5) Complete "Terraform"ing and/or "Cloudformation"ing the entire stack for "single click" deployment (Use the latest version of Terraform available at the time) | ||
##### 6) Add TLS (https). Its OK to use locally generated certs. | ||
|
||
### Q. How do i know i have solved these stages ? | ||
##### Each stage can be tested as follows (where <ip_or_host> is the location where the app is deployed) | ||
##### 1) AWS/Secret page - `http(s)://<ip_or_host>[:port]/` | ||
##### 2) Docker - `http(s)://<ip_or_host>[:port]/docker` | ||
##### 3) SECRET_WORD env variable - `http(s)://<ip_or_host>[:port]/secret_word` | ||
##### 4) Loadbalancer - `http(s)://<ip_or_host>[:port]/loadbalanced` | ||
##### 5) Terraform and/or Cloudformation - we will test your submitted templates in our AWS account | ||
##### 6) TLS - `http(s)://<ip_or_host>[:port]/tls` | ||
|
||
### Q. Do i have to do all these ? | ||
##### You can do as many as you like. We suspect though that once you start you wont be able to stop. Its addictive. | ||
|
||
### Q. What do i have to submit ? | ||
##### 1) Terraform and/or Cloudformation template(s) (if you complete stage 5) | ||
##### 2) Dockerfile (if you complete stages 2 and 3) | ||
##### 3) Screenshot of the secret page (if you complete stage 1) | ||
##### 4) URL of your stack (if the endpoint is exposed) | ||
|
||
### Q. What if i successfully complete all the challenges ? | ||
##### We have many more for you to solve as a member of the Rearc team ! | ||
|
||
### Q. What if i find a bug ? | ||
##### Awesome! Lets talk. | ||
|
||
### Q. What if i fail ? | ||
##### Do. Or do not. There is no fail. | ||
|
||
### Q. Can i share this quest with others ? | ||
##### No. | ||
### Q. What is this quest? | ||
|
||
It is a fun way to assess your cloud skills. It is also a good representative sample of the work we do at Rearc. Quest is a webapp made with node.js and golang. | ||
|
||
### Q. Do I need to be an expert in node.js and golang? | ||
|
||
No. The starting point of the quest app is `npm install && npm start`. That is all the node.js you need to know. And you wont even see golang. | ||
|
||
### Q. So what skills should I have? | ||
|
||
AWS. General cloud concepts, especially networking. Docker (containerization). IaC (Infrastructure as code). Linux/Unix. Git. TLS certs is a plus. | ||
|
||
### Q. What do I have to do? | ||
|
||
You may do all or some of the following tasks. Please read over the complete list before starting. | ||
|
||
1. If you know how to use git, start a git repository (local-only is acceptable) and commit all of your work to it. | ||
2. Deploy the app in AWS and navigate to the index page. Use Linux 64-bit as your OS (Amazon Linux preferred). | ||
3. Deploy the app in a Docker container. Use `node:10` as the base image. | ||
4. Inject an environment variable (`SECRET_WORD`) in the Docker container. The value of `SECRET_WORD` should be the secret word discovered on the index page of the application. | ||
5. Deploy a load balancer in front of the app. | ||
6. Use Infrastructure as Code (IaC) to "codify" your deployment. Terraform is ideal, but use whatever you know, e.g. CloudFormation, CDK, Deployment Manager, etc. | ||
7. Add TLS (https). You may use locally-generated certs. | ||
|
||
### Q. How do I know I have solved these stages? | ||
|
||
Each stage can be tested as follows (where `<ip_or_host>` is the location where the app is deployed): | ||
|
||
1. Index page (contains the secret word) - `http(s)://<ip_or_host>[:port]/` | ||
2. Docker check - `http(s)://<ip_or_host>[:port]/docker` | ||
3. Secret Word check - `http(s)://<ip_or_host>[:port]/secret_word` | ||
4. Load Balancer check - `http(s)://<ip_or_host>[:port]/loadbalanced` | ||
5. TLS check - `http(s)://<ip_or_host>[:port]/tls` | ||
|
||
### Q. Do I have to do all these? | ||
|
||
You may do whichever, and however many, of the tasks above as you'd like. We suspect that once you start, you won't be able to stop. It's addictive. | ||
|
||
### Q. What do I have to submit? | ||
|
||
1. Your work assets, as one or both of the following: | ||
- A link to a hosted git repository. | ||
- A ZIP file containing your project directory. Include the `.git` sub-directory if you used git. | ||
2. Proof of completion, as one or both of the following: | ||
- A link to a hosted AWS deployment. | ||
- One or more screenshots showing, at least, the index page of the final deployment. | ||
|
||
Your work assets should include: | ||
|
||
- IaC files, if you completed that task. | ||
- One or more Dockerfiles, if you completed that task. | ||
- A sensible README or other file(s) that contain instructions, notes, or other written documentation to help us review and assess your submission. | ||
|
||
### Q. How long do I need to host my submission on AWS? | ||
|
||
You don't have to at all if you don't want to. You can run it in AWS, grab a screenshot, then tear it all down to avoid costs. | ||
|
||
If you _want_ to host it longer for us to view it, we recommend taking a screenshot anyway and sending that along with the link. Then you can tear down the quest whenever you want and we'll still have the screenshot. We recommend waiting no longer than one week after sending us the link before tearing it down. | ||
|
||
### Q. What if I successfully complete all the challenges? | ||
|
||
We have many more for you to solve as a member of the Rearc team! | ||
|
||
### Q. What if I find a bug? | ||
|
||
Awesome! Tell us you found a bug in your submission to us, ideally in an email, and we'll talk more! | ||
|
||
### Q. What if I fail? | ||
|
||
There is no fail. Complete whatever you can and then submit your work. Doing _everything_ in the quest is not a guarantee that you will "pass" the quest, just like not doing something is not a guarantee you will "fail" the quest. | ||
|
||
### Q. Can I share this quest with others? | ||
|
||
No. |