This repo will walk you through the steps to obtain the application form for the Infrastructure Engineer position at Durable.
To get the application link, you'll just have to setup a simple local docker
swarm using our ansible control scripts.
This challenge will ask you to set up a simple docker swarm, deploying a single
simple stack (applier), and read the output of the service logs to get a form
to submit your application.
Once you've completed everything in Setup, then you can try to create
the stack using the local script ./swarm to control the swarm. You can deploy
the stack via
./swarm.sh --tags deploy(See the Troubleshooting section if this doesn't complete successfully).
The applier stack consists of two services, a proxy and a provisioner.
The proxy service is a simple server that will proxy a request to our servers
to add your email to our list of applicants, and will return a Google Form link
that you can use to apply.
The provisioner service on the other hand tries to provision a new service
on the swarm that lives outside of this stack.
The provided configuration in the ansible playbook (found at
playbooks/apply.yml) is not correct currently to
have this provisioned service be successfully created. You'll have to debug
what's wrong and fix it to get the application link.
Once you've fixed the swarm configuration, and the provisioned service is
successfully created, then you can find the link to the application form in the
provisioner service.
This requires installations of:
-
and
uv(and apythoninstallation).
NOTE: If you are already running a docker swarm locally, then do the remaining within a docker-in-docker container with a volume mounted with this repo's contents to avoid disrupting the state of your own docker swarm.
This can be done e.g. with
docker run \ --privileged \ --name durable-infra-swarm \ --mount $(pwd):/infra-eng-application -d docker docker exec -it durable-infra-swarm sh
Once you have uv installed, then you'll only need to setup ansible (make
sure to install version 2.17, as version 2.19 introduced breaking changes
that aren't compatible with these playbooks):
uv tool install --with ansible ansible-core==2.17
uvx --from ansible-core ansible-galaxy install -r ansible-requirements.ymlIf you get
TASK [Install dependencies (for `community.docker`)]
related errors, then it may be necessary to update the uv_venv_path in
inventories/local to something compatible with your system, and it may also
be necessary to remove the directory at that location (or change it to a
directory that doesn't already exist).