1. Фундамент: администрирование Linux, сети и автоматизация с Bash и Git
Фундамент: администрирование Linux, сети и автоматизация с Bash и Git
Добро пожаловать в курс DevOps: от Linux к автоматизации. Мы начинаем наше путешествие с самого основания. Представьте, что вы строите небоскреб. Инструменты вроде Docker, Kubernetes или Jenkins — это этажи, окна и коммуникации. Но Linux, сети и скрипты — это бетонный фундамент. Без прочного фундамента здание рухнет при первой же нагрузке.
В этой статье мы разберем операционную систему Linux, научимся управлять правами доступа, настроим базовую безопасность сети, напишем свой первый скрипт автоматизации и сохраним его историю с помощью Git.
Почему Linux?
В мире серверов Linux занимает доминирующее положение. Более 90% облачной инфраструктуры работает на Linux. DevOps-инженер, не знающий консоли (терминала), подобен хирургу, который боится крови. Графический интерфейс (GUI) на серверах часто отсутствует для экономии ресурсов и повышения безопасности. Вашим главным инструментом станет CLI (Command Line Interface).
!Структура взаимодействия пользователя с ядром Linux через оболочку
Навигация и управление файлами
В Linux все есть файл. Даже аппаратные устройства представлены в виде файлов. Файловая система имеет древовидную структуру, начинающуюся с корня /.
Основные команды, которые должны быть в вашей мышечной памяти:
* ls -la: показать список файлов (включая скрытые) с детальной информацией.
* cd /путь/к/папке: сменить директорию.
* mkdir project: создать новую папку.
* rm -rf folder: удалить папку и всё её содержимое (будьте осторожны с этой командой!).
* cat file.txt: вывести содержимое файла на экран.
* grep "error" log.txt: найти слово "error" в файле log.txt.
Права доступа и безопасность
Одна из частых причин проблем при деплое (развертывании) приложений — неверные права доступа. В Linux система прав базируется на трех действиях: чтение (read), запись (write) и исполнение (execute).
Права назначаются для трех групп: владелец файла (User), группа владельца (Group) и все остальные (Others).
Математика прав доступа
Права доступа часто записываются в восьмеричной системе счисления. Это тот случай, когда нам пригодится простая математика для понимания того, как компьютер интерпретирует ваши команды chmod.
Значение права доступа для каждой группы рассчитывается по формуле:
Где: * — итоговое числовое значение прав для одной группы (от 0 до 7). * — флаг чтения (1, если разрешено, 0, если нет). * — флаг записи (1, если разрешено, 0, если нет). * — флаг исполнения (1, если разрешено, 0, если нет).
Например, права rwx (чтение, запись, исполнение) дают:
Где: * — итоговое значение (полный доступ). * — наличие соответствующего права.
Если мы хотим дать владельцу полные права (7), группе — только чтение и исполнение (5), а остальным — ничего (0), мы используем команду:
Управление процессами и мониторинг
Сервер — это живой организм. Процессы рождаются, потребляют ресурсы и умирают. Ваша задача — следить за их здоровьем.
Для мониторинга в реальном времени используйте htop. Это более удобная и красочная версия классического top.
Если процесс завис, его нужно принудительно завершить. Для этого используется команда kill вместе с PID (Process ID), который можно узнать через ps aux или тот же htop.
Сети и SSH
DevOps невозможен без сетей. Вы будете постоянно подключаться к удаленным серверам. Стандарт де-факто для этого — протокол SSH (Secure Shell).
Чтобы подключиться к серверу:
Для проверки доступности узла используйте ping, а для проверки доступности конкретного порта или веб-сервиса — curl или telnet.
Пример проверки ответа от веб-сервера:
Автоматизация с Bash
Главное правило DevOps: если вы делаете что-то дважды, автоматизируйте это. Bash-скрипты — это клей, который соединяет команды Linux в автоматические сценарии.
Любой скрипт начинается с шебанга (shebang) — указания интерпретатора:
Сохраните этот код в файл check_site.sh, дайте ему права на исполнение (chmod +x check_site.sh) и запустите (./check_site.sh). Вы только что создали простейший инструмент мониторинга.
Контроль версий с Git
Инфраструктура как код (IaC) подразумевает, что ваши скрипты и конфигурации хранятся так же, как код разработчиков. Git позволяет отслеживать изменения, возвращаться к прошлым версиям и работать в команде.
Базовый цикл работы (Git Flow) выглядит так:
git init (создает репозиторий в папке).git add script.sh (переносит файл в зону подготовки/Staging).git commit -m "Добавлен скрипт проверки сайта" (сохраняет снимок состояния).git push (отправляет код на удаленный сервер, например, GitLab или GitHub).> Git — это машина времени для вашего кода. Не пренебрегайте коммитами. — Линус Торвальдс, создатель Linux и Git.
Заключение
Сегодня мы заложили первый камень в фундамент вашей карьеры DevOps. Вы узнали, как управлять Linux, рассчитывать права доступа, писать простые скрипты на Bash и сохранять их в Git. Это базовые навыки, которые будут использоваться в каждом следующем модуле.
В следующей статье мы перейдем к контейнеризации и узнаем, как упаковать наши приложения и скрипты в Docker, чтобы они работали одинаково на любой машине.