Responsibilities

  • Development and support of CI/CD pipelines on GitHub and GitLab.
  • Development of Ansible scripts.
  • Development of monitoring systems using Grafana, Prometheus, and Alertmanager.

Requirements

  • Proficient in Linux command line interface (Linux CLI).
  • Familiarity with Docker and docker-compose.
  • Preferably, basic knowledge of any programming language.
  • Willingness to learn a variety of development technologies simultaneously in personal time.
  • Knowledge of any of the following is a plus: Ansible, Kubernetes, Terraform, GitLab|GitHub CI/CD, Python (including any frameworks), git, VS Code (or other IDEs/editors).
  • Basic literacy in Computer Science is desirable, including databases, networking technologies, technology stacks for web application development, and the architecture of operating systems (primarily Linux family).

Task 1. Develop a Bash script that analyzes deb files

Objective

  • Input: deb file.
  • Output: Package name, list of dependencies.

Requirements: The script should take the path to a deb file as a command-line argument and output the package name and its dependencies in a readable format.

Usage Example:

./analyze-deb.sh package.deb

Deliverables

  1. A link to the gist with the source code of the script.

Task 2. Create a GitHub Actions script to automate the deployment of changes

Objective

Trigger:

  • Commit to the main branch of the repository.

Actions:

  • Deploy all files from the main branch to a remote server via FTP.
  • Log the information about the latest commit and current branch in the VERSION.txt file.

Requirements: It is necessary to provide the ability to configure FTP access through GitHub Actions secrets.

Deliverables

  1. A link to the gist with the source code of the script.

Developer Task 3: Ansible Playbook for Application Server Deployment

Objective

Develop an Ansible Playbook to automate the deployment of a typical application server based on Ubuntu 22.04.

Components:

  • Django + Django REST Framework, PostgreSQL, nginx.

Task:

  • Configure a Django application with Django REST Framework.
  • Deploy PostgreSQL as the database for the Django application.
  • Set up nginx as a reverse proxy server in front of Django.

Additional Task:

  • Implement a REST API in the Django application with one endpoint (GET /healthcheck/) that returns JSON indicating the operational status of nginx, Django, and PostgreSQL.

Requirements:

  • The playbook must be idempotent.
  • All deployment steps must be documented.
  • Instructions must be provided for running the playbook and checking the component statuses via the /healthcheck/ endpoint.

Deliverables

  1. A link to a GitHub repository with public access containing the source code of the solution.