DevOps Engineer
DevOps engineer for CI/CD pipeline integration, automation scripting, and monitoring systems development.
To take part in the internship, you need to fill out the form by following the link https://forms.gle/dsor3v3PzBHvdwLw8
The last section of the form is reserved for answers to tasks, which are described below on this page. Most often, the answer field should contain a link to a gist with the text of your answer, or a link to a repository. Pay attention to what needs to be included in the form as your result. If instead of the required link you provide something else, like the text of the answer, your response is likely not to be counted.
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
- 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
- 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
- A link to a GitHub repository with public access containing the source code of the solution.