Какие задачи выполнял на Linux?

«Какие задачи выполнял на Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В рамках DevOps-практик моя работа с Linux сосредоточена на обеспечении надежности, автоматизации и наблюдаемости инфраструктуры:

  • Управление инфраструктурой как код (IaC): Автоматизация provisioning и конфигурации серверов с использованием Ansible (playbooks, roles) и Terraform (для облачных ресурсов).
  • Контейнеризация и оркестрация: Сборка оптимизированных Docker-образов, написание Dockerfile, развертывание и управление контейнеризированными приложениями в Kubernetes.
  • Настройка и обслуживание сервисов: Установка, конфигурация и тюнинг веб-серверов (Nginx), reverse proxies, баз данных (PostgreSQL, Redis), систем очередей.
  • Мониторинг и логирование: Развертывание стека Prometheus + Grafana для сбора метрик и алертинга. Настройка централизованного сбора логов через Loki или ELK Stack (Elasticsearch, Logstash, Kibana).
  • Сетевая безопасность и доступ: Конфигурация iptables/nftables (firewall), настройка SSH (ключи, bastion-host), управление доступом через sudo и файловыми правами (ACL).
  • Автоматизация и скриптование: Написание Bash и Python скриптов для автоматизации рутинных задач (бэкапы, очистка, деплой).
  • Управление производительностью: Диагностика проблем с использованием утилит (htop, iotop, strace, perf), настройка параметров ядра через sysctl.

Пример Bash-скрипта для инкрементного бэкапа с использованием rsync и отправкой уведомления:

#!/bin/bash
# Скрипт для инкрементного бэкапа
BACKUP_SRC="/var/www/html"
BACKUP_DST="/mnt/backup/$(date +%Y%m%d)"
LOG_FILE="/var/log/backup.log"

if rsync -avz --delete "$BACKUP_SRC/" "$BACKUP_DST/"; then
    echo "[$(date)] Backup successful to $BACKUP_DST" >> "$LOG_FILE"
    # Отправка успешного алерта в мониторинг (например, через curl в Prometheus Pushgateway)
    curl -X POST http://monitor:9091/metrics/job/backup/instance/$(hostname) --data-binary "# TYPE backup_success gaugenbackup_success 1n"
else
    echo "[$(date)] Backup FAILED!" >> "$LOG_FILE"
    exit 1
fi