Last active
June 2, 2021 01:00
-
-
Save mckern/607392cc243cafadd33e822d24a502bb to your computer and use it in GitHub Desktop.
Bad technical challenges
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
Hi Ryan, | |
We are excited to move you forward in the process! Please let us know if you have any questions. | |
<redacted>'s operations challenge is our primary means of understanding your troubleshooting and | |
programming abilities and the beginning of our understanding of the rest of your qualifications. | |
The challenge is divided into two parts. | |
For part one, we would like to assess your debugging and general Linux skills by asking you to install | |
the "apache2" package on a server that is misconfigured in many ways. It is your job to find, document, | |
and manually address these problems such that you are able to verify that the Apache web server is | |
accessible from the Internet. When you've verified the host is functional, please reply-all to this email | |
thread with your documentation of what you found, how you found it, and what you did to resolve the problems. | |
Your server for part one is <redacted>. It is accessible via SSH. The root password for all three | |
instances is <redacted>. | |
For part two, we would like you to construct a rudimentary configuration management tool and use it | |
to configure two servers for production service of a simple PHP web application. You are not allowed | |
to use off-the-shelf tools like (but not limited to) Puppet, Chef, Fabric, or Ansible. Instead, we | |
would like you to implement a tool a bit like Puppet or Chef that meets the following specifications | |
and then use that tool to configure the two servers. | |
Requirements for your rudimentary configuration management tool: | |
* If your tool has dependencies not available on a standard Ubuntu instance you may | |
include a bootstrap.sh program to resolve them | |
* Your tool must provide an abstraction that allows specifying a file's content and | |
metadata (owner, group, mode) | |
* Your tool must provide an abstraction that allows installing and removing Debian packages | |
* Your tool must provide some mechanism for restarting a service when relevant files or | |
packages are updated | |
* Your tool must be idempotent - it must be safe to apply your configuration | |
over and over again | |
* Don't forget to document the basic architecture of your tool, how to install it, | |
how to write configurations, and how to invoke them | |
Requirements for the configuration your tool will execute: | |
* Your configuration must specify a web server capable of running the PHP application below | |
* Both servers must respond 200 OK and include the string "Hello, world!" in their response to | |
requests from curl -sv "http://ADDRESS"; ( http://address%22/ ); | |
( http://address%22 ( http://address%22/ )/ ); (using the public IP address) | |
* For the purposes of this challenge, please do not reboot any of the provided servers. | |
Here is the PHP application in question: | |
<?php | |
header("Content-Type: text/plain"); | |
echo "Hello, world!\n"; | |
Your servers for part two are <redacted> and <redacted>. They are accessible via SSH. | |
When your tool and configuration are able to configure these two servers and you've verified they | |
respond appropriately please tar up your code, configuration, and Git/Mercurial/other history and | |
reply-all to this email. | |
There is no time limit, no penalty for taking your time, and no benefit in going above-and-beyond. | |
Show us your best work :) | |
Good luck! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Yes, they sent me broken PHP code.