About the Position

We are looking for an aspiring DevOps Engineer who is eager to gain hands-on experience in building, maintaining, and optimizing modern cloud infrastructures. As part of our internship program, you’ll work closely with experienced developers and other interns, learning best practices for CI/CD integration, infrastructure automation, and observability. You will have the opportunity to work with industry-standard tools and platforms, enhancing your skill set in areas critical to modern software delivery.

For more details on how our internship works, please visit our Internship Overview.
To learn more about our team, visit https://foreachpartners.com/.

What You Will Do

  • Design, implement, and maintain CI/CD pipelines using GitHub and GitLab.
  • Develop automation scripts with Ansible, streamlining the deployment and management of applications.
  • Configure and tune monitoring stacks using Grafana, Prometheus, and Alertmanager to ensure system reliability and health.
  • Collaborate with team members to identify areas for automation and improvement, contributing to the overall DevOps culture.

What We’re Looking For

  • Core Knowledge:
    • Comfortable using the Linux CLI for system administration tasks.
    • Familiarity with Docker and docker-compose.
  • Eagerness to Learn:
    • Willingness to invest personal time in mastering a variety of tools, platforms, and frameworks.
  • Additional Skills (Nice-to-Have):
    • Basic knowledge of a programming language.
    • Experience or familiarity with Ansible, Kubernetes, Terraform, GitLab/GitHub CI/CD, Python, Git, and IDEs/editors such as VS Code.
  • CS Fundamentals:
    • A basic understanding of databases, networking technologies, web application stacks, and Linux-based operating systems is beneficial.

Why Apply?

  • **Practical Experience:**Gain real-world DevOps experience, working with CI/CD, automation, and monitoring tools in a professional environment.
  • **Skill Growth:**Enhance your technical skills, improve your problem-solving abilities, and adopt best practices in DevOps and infrastructure engineering.
  • Career Building:
    Outstanding performance may lead to opportunities for continued collaboration on commercial projects.

Test Tasks

As part of your application, please complete the following tasks. They will help us assess your scripting abilities, your understanding of CI/CD systems, and your capacity to work with automation and infrastructure as code.

Task 1: Bash Script to Analyze .deb Files

Objective:
Write a Bash script that, given a .deb file, extracts and displays the package name and its dependencies in a readable format.

Requirements:

  • The script should accept the .deb file path as a command-line argument.
  • Output the package name and a list of dependencies.

Usage Example:

./analyze-deb.sh package.deb

Deliverables:

  • A link to a gist containing the script’s source code.

Task 2: GitHub Actions Workflow for Automated Deployment

Objective:
Create a GitHub Actions workflow that, on every commit to the main branch, deploys all files from the repository’s main branch to a remote server via FTP and updates a VERSION.txt file with the current commit info.

Requirements:

  • Trigger on commit to main.
  • Deploy via FTP using credentials stored as GitHub Actions secrets.
  • Update VERSION.txt with the latest commit info and current branch.

Deliverables:

  • A link to a gist with the GitHub Actions workflow file.

Task 3: Ansible Playbook for Application Server Deployment

**Objective:**Use Ansible to deploy a typical application server stack on Ubuntu 24.04. The stack should include:

  • Django + Django REST Framework for the application layer.
  • PostgreSQL as the database.
  • nginx as a reverse proxy in front of Django.

Additional Requirement:
Implement a basic REST API endpoint (GET /healthcheck/) in the Django application to return JSON indicating the operational status of nginx, Django, and PostgreSQL.

Requirements:

  • The Ansible playbook must be idempotent.
  • All steps should be documented.
  • Provide instructions for running the playbook and verifying component statuses via /healthcheck/.

Deliverables:

  • A link to a publicly accessible GitHub repository containing the complete source code of the solution.

We look forward to reviewing your submissions and potentially welcoming you to our team!