- A GitHub account
- A TravisCI account
- A Docker hub account
- Local Docker installation
Your codeName = thedoctor
- Use it throughout the task.
We've found a data leak in our company, but before we're deleting our resources, we need you to extract the information and deliver it.
You're assigned with the creation of a device that will be used as a POC to transfer highly sensitive data.
With the language of your choice follow these instructions in the next 72 hours to stop the leak:
- Clone this project, change its name and restructure it as you see fit, create your own GitHub repo with the code
- Write an application that will extract the secret string from a DynamoDB table in our account
- The
secret_code
lies in a DynamoDB tabledevops-challenge
wherecode_name = #{codeName}
- The keys that will provide access to the account have been provided separatly, DO NOT COMMIT THEM, if the keys are exposed to GitHub, we will be notified and you will be disqualified
- Create a docker container that will publish
secret_code
tohttp://127.0.0.1:5000/secret
- Create a Travis CI account, and add a
.travis.yml
that will build, test and deploy your code and container/s - The Travis process should
publish
the contianer to your own docker hub account - A link to the container on docker hub should be published as
container
to/health
(See requirement #2) - A link to the GitHub project should be published as
project
to/health
(See requirement #2) - Once completed, reply to the challenge email:
Subject: DevOps Challenge complete
Content: Name: <YOUR_NAME>
Project: <LINK TO GITHUB PROJECT>
Attached: `.env` (if you used one)
To wrap up the project, prepare a
environment.template
file, that would contain a CloudFormation YAML.
The template should create an environment ready to deploy your application to AWS.
You may choose any AWS service you see fit for the deployment.
When using the template in CloudFormation, the user should be able to fill in parameters required (e.gvpc-id
,instance-type
etc).
- Return
{ secret_code: <CODE> }
to http://127.0.0.1:5000/secret - Return
{ status: healthy, container: <LINK_TO_HUB>, project: github.com/omerxx/ecscale }
to http://127.0.0.1:5000/health - Running
docker-compose up
should get everything up and running - Contain a minimal test suit
- Be tested and built in Travis on push to
master
branch - Contain a well documented code, and a
SUMMARY.md
file explaining each step of the development process - Contain a
TROUBLE.md
describing difficulties along the way and their solutions - Contain a
INSTRCUTIONS.md
explaining a cloning user how to use the repo - running, testing etc. - Be published as a GitHub project under your account e.g
github.com/<GitHub_User>/<Challange_Project>
verification.sh
should run instantly, if you used a.env
file, share it privately in the returning email
- Use informative commit messages
- Think security: Avoid exposing secrets in any way (Tip: use
.env
file for thecompose
ing, and.gitignore
it. Be sure to provide the file upon completing the task. - Different routers in Ruby, Python, Go and Node
- Structure the project in a maintainable logic way, you may use
/example
- Use the
example/screenshots/
for a general idea of the outcome
omer@devops.co.il