Часть 2. Roadmap DevOps: что изучать, зачем и в каком порядке
В первой части мы разобрались, кто такой DevOps-инженер, чем он занимается и почему эта профессия — не про знание десятков инструментов, а про понимание того, как работает современная инфраструктура.
Теперь возникает главный вопрос:
С чего начать?
Достаточно открыть вакансию или почти любой roadmap DevOps, чтобы увидеть несколько десятков технологий: Linux, Git, Docker, Kubernetes, Terraform, Ansible, Prometheus, Grafana, AWS, Nginx, Jenkins…
Для новичка такой список выглядит скорее пугающе, чем полезно. Кажется, что нужно изучить всё и сразу.
Одни начинают с Kubernetes, потому что это один из самых обсуждаемых инструментов в индустрии. Другие сразу переходят к Docker, не понимая, как работает Linux. Кто-то пытается изучать Terraform, практически не имея опыта администрирования серверов. В результате обучение превращается в попытку построить дом, начиная с крыши.
Получается обратная пирамида знаний.
Поэтому в этой статье мы попробуем построить фундамент, на который в дальнейшем будут опираться все остальные технологии.
Почему Linux, а не Windows
У многих может возникнуть логичный вопрос:
Если большинство пользователей работают и используют Windows, зачем и почему используют Linux?
Ответ прост.
Домашний компьютер и сервер решают совершенно разные задачи. Настольная операционная система должна быть удобной для повседневной работы: запускать программы, воспроизводить видео, обеспечивать комфортный графический интерфейс. Сервер, напротив, должен работать круглосуточно, стабильно выдерживать высокую нагрузку, легко администрироваться удалённо и потреблять минимум ресурсов.
Именно под такие задачи изначально развивался Linux.
Сегодня Linux используется практически во всех областях современной серверной инфраструктуры:
веб-серверы;
облачные платформы;
контейнерные платформы;
системы хранения данных;
суперкомпьютеры;
корпоративные дата-центры.
По данным проекта TOP500, все 500 самых производительных суперкомпьютеров мира работают под управлением Linux. Кроме того, Linux доминирует среди серверных операционных систем и является основной платформой для большинства облачных сервисов и контейнерных технологий.

Когда вы открываете сайт интернет-магазина, пользуетесь банковским приложением или запускаете сервис потокового видео, очень велика вероятность, что запрос обрабатывает сервер именно под Linux. Поэтому DevOps практически ежедневно взаимодействует именно с этой операционной системой.
Почему Linux изучают раньше Docker и Kubernetes
Ведь в вакансиях гораздо чаще встречаются Docker и Kubernetes, чем обычные Linux.
Причина довольно проста.
Контейнеры Docker используют механизмы ядра Linux: пространства имён (namespaces), контроль групп процессов (cgroups), файловые системы и другие возможности операционной системы. Kubernetes, в свою очередь, не запускает приложения самостоятельно — он управляет контейнерами, которые уже работают благодаря этим механизмам.
Именно поэтому понимание Linux значительно упрощает изучение контейнеризации.
Что действительно нужно изучить в Linux?
Одна из самых распространённых ошибок новичков — попытка выучить сотни команд ещё до первой практики.
На самом деле это не требуется.
Даже опытные системные администраторы регулярно пользуются справочной документацией и поиском. Гораздо важнее понимать принципы работы операционной системы и уверенно ориентироваться в наиболее часто используемых инструментах.
Для Junior DevOps достаточно уверенно владеть следующими темами.
1. Файловая система
Первое, с чем приходится сталкиваться практически каждый день, — файловая система Linux. Важно понимать:
как устроено дерево каталогов;
где располагаются пользовательские файлы;
где находятся журналы работы системы;
где хранятся конфигурационные файлы приложений.
Многие проблемы решаются уже на этапе поиска нужного файла или конфигурации.
2. Работа с файлами
Практически любая задача DevOps связана с файлами. Каждый день приходится:
создавать файлы и каталоги;
копировать и перемещать данные;
искать нужные документы;
архивировать резервные копии;
удалять временные файлы.
Поэтому уверенная работа с файловой системой становится одним из базовых навыков.
3. Пользователи и права доступа
Linux — многопользовательская система.
На одном сервере одновременно могут работать несколько пользователей и десятки процессов. Поэтому важно понимать:
кто имеет доступ к файлам;
кто может запускать программы;
Корректная настройка прав — одна из основ безопасности.
4. Процессы
Любая запущенная программа представляет собой процесс.
Например:
веб-сервер;
база данных;
Docker Engine;
SSH-сервер.
Если приложение перестало отвечать, одна из первых задач DevOps — выяснить, работает ли соответствующий процесс и не завершился ли он с ошибкой.
5. Службы (Services)
Некоторые программы должны запускаться автоматически после включения сервера.
Например:
базы данных;
Docker Engine.
Такие программы называются службами или сервисами. DevOps должен уметь:
запускать их;
останавливать;
перезапускать;
проверять их состояние.
6. Логи
Практически каждая программа ведет журнал своей работы. Такой журнал называется логом.
Именно логи помогают понять:
почему приложение завершилось;
какая ошибка произошла;
что произошло перед сбоем.
Если опытного DevOps спросить, с чего начинается поиск любой проблемы, ответ почти всегда будет одинаковым:
«Сначала открываем логи.»
7. SSH и сети
После того как вы научились работать с локальной системой, пора переходить к удалённому администрированию.
Практически ни один DevOps-инженер не работает непосредственно за сервером. Вместо этого используется SSH (Secure Shell) — протокол, позволяющий безопасно подключаться к удалённым Linux-серверам через терминал. Не менее важно понимать и основы компьютерных сетей.
Для Junior DevOps не требуется проектировать сложную сетевую инфраструктуру, однако необходимо уверенно разбираться в базовых понятиях:
IP-адрес;
порт;
DNS;
HTTP и HTTPS;
SSH;
маршрутизация на базовом уровне.
Именно эти знания позже понадобятся при работе с Docker, Kubernetes, облачными платформами и практически любым современным серверным приложением.
Нужно ли устанавливать Linux как основную систему?
Нет, для практики существует много вариантов. Для практики можно использовать:
виртуальную машину (например, в VirtualBox);
Windows Subsystem for Linux (WSL);
облачный VPS;
интерактивные лаборатории и песочницы(tryhackme, labex. killercoda);
отдельный компьютер с установленным Linux.
Главное — не способ установки, а регулярная практика. Основное правило остается неизменным:
Linux невозможно выучить по видео.
Можно посмотреть десятки часов лекций, выучить названия команд и прочитать несколько книг. Но пока вы не начнёте ежедневно пользоваться терминалом, создавать файлы, искать ошибки в логах и настраивать систему самостоятельно, знания останутся только теоритическими. Именно практика превращает набор команд в реальные навыки.
Почему DevOps работает в терминале
Наверное, многие видели DevOps-инженеров с черным окном терминала.

Это не элемент «хакерской эстетики». Большинство серверов и некоторое программное обеспечение вообще не имеет графического интерфейса. Это сделано сразу по нескольким причинам:
экономия оперативной памяти и процессорного времени;
повышение безопасности;
снижение количества лишних компонентов;
удобство удалённого администрирования.
Поэтому основным инструментом DevOps становится терминал. Терминал — это программа, позволяющая отправлять текст, командной оболочке, которая будет инпретировать текст.
Командная оболочка (shell) — это программа-посредник между пользователем и операционной системой. Она принимает введённые вами команды, понимает их и выполняет, обращаясь к ядру операционной системы.
Каждая команда выполняет определенное действие:
показ содержимого каталога;
создание файла;
удаление папки;
проверка свободного место;
поиск ошибки в логах работы системы.
Со временем терминал становится для DevOps примерно тем же, чем IDE является для разработчика.
Bash — первый шаг к автоматизации
После того как вы научились уверенно работать в Linux, следующий логичный этап — изучение Bash. Именно здесь многие начинают понимать, почему DevOps называют инженерами по автоматизации.
Если Linux отвечает на вопрос «где и как работает система?», то Bash отвечает на вопрос «как сделать так, чтобы компьютер выполнял работу за меня?»
Что такое Bash?
Bash (Bourne Again SHell) — одна из самых популярных командных оболочек для Linux и Unix-подобных систем. Кроме Bash существуют:
Zsh;
Fish;
Dash;
PowerShell (Windows).
Но именно Bash остается стандартом практически на всех Linux-серверах. На первый взгляд это просто программа, которая принимает команды пользователя и передает их операционной системе.
Например, когда вы вводите:
ls
именно Bash получает эту команду, запускает соответствующую программу и выводит результат.
Но на самом деле Bash умеет нечто гораздо более важное. Он позволяет писать небольшие программы — скрипты, которые автоматизируют рутинные действия.
Что такое скрипт?
Представьте, что каждое утро вам необходимо выполнить одни и те же действия:
обновить систему;
очистить временные файлы;
создать резервную копию;
проверить свободное место;
перезапустить веб-сервер.
Можно выполнять их вручную. А можно записать один текстовый файл:
#!/bin/bash sudo apt update sudo apt upgrade -y systemctl restart nginx ...
Такой файл называется Bash-скриптом. После этого вся последовательность действий выполняется одной командой.
Именно это и называется автоматизацией.
Почему Bash важен для DevOps?
Практически вся работа DevOps строится вокруг повторяющихся операций.
Например:
проверить работу сервисов;
собрать логи;
обновить несколько серверов;
сделать резервную копию базы данных;
очистить старые файлы;
проверить использование памяти.
Все это можно выполнять вручную. Но представьте, что серверов уже не один, а пятьдесят. Или двести.
Или тысяча.
Вручную выполнять такие операции становится невозможно. Поэтому DevOps старается автоматизировать всё, что повторяется регулярно.
Нужно ли учиться писать большие программы?
Нет. Это распространенное заблуждение.
Большинство Bash-скриптов занимают всего несколько десятков строк. Обычно они делают одну конкретную задачу:
проверяют наличие файла;
перезапускают сервис;
отправляют уведомление;
архивируют данные;
создают пользователя;
собирают информацию о системе.
Чем проще скрипт, тем легче его сопровождать.
Что нужно изучить Junior DevOps?
Не стоит пытаться освоить Bash целиком. Достаточно уверенно владеть несколькими базовыми конструкциями, которые встречаются практически в каждом скрипте.
Переменные
Позволяют хранить данные.
Например, можно сохранить имя пользователя.
#!/bin/bash USER_NAME="name_surname" echo "Добро пожаловать, $USER_NAME!"
Условия
Иногда сценарий должен принимать решение самостоятельно.
Например, проверить существование файла
.
#!/bin/bash FILE="backup.tar.gz" if [ -f "$FILE" ]; then echo "Файл найден." else echo "Файл отсутствует." fi
Циклы
Циклы позволяют выполнять одну и ту же операцию сразу для нескольких объектов.
Например, проверить несколько каталогов.
#!/bin/bash for DIR in /home /etc /var do echo "Проверяем каталог: $DIR" done
Функции
Если один и тот же код приходится использовать несколько раз, его обычно выносят в функцию.
Например: функция приветствия
#!/bin/bash hello() { echo "Добро пожаловать в Bash!" }
Функции делают код более понятным, позволяют избежать дублирования и значительно упрощают сопровождение больших скриптов.
Конвейеры (Pipelines)
Одной из самых сильных сторон Linux является возможность объединять несколько программ в единую цепочку. Для этого используется символ |, который называется конвейером (pipe).
Рассмотрим простой пример . Поиск "ERROR" в файле "system.log" и запись результатов в "errors.log"
#!/bin/bash grep "ERROR" system.log >> errors.log
Перенаправление вывода
По умолчанию большинство программ выводит результат прямо в терминал. Однако нередко требуется сохранить этот результат. К примеру, в файл. Для этого используется оператор >.
ls > files.txt
После выполнения команды список файлов окажется в файле files.txt. Если файл уже существует, его содержимое будет полностью заменено. Если же необходимо добавить данные в конец файла, используется оператор >>.
Например, сохраним найденные ошибки в журнал.
grep "ERROR" system.log >> errors.log
Теперь каждое выполнение команды будет добавлять новые записи в конец файла, сохраняя предыдущие результаты.
Когда становится недостачно Bash?
Это один из самых частых вопросов новичков. Хорошее правило выглядит так.
Если задача связана с Linux, файлами, службами или запуском команд — почти всегда достаточно Bash.
Если появляется сложная логика, работа с API, JSON, большими объемами данных или необходимо написать полноценную утилиту — обычно удобнее использовать Python.
Как понять, что Bash уже освоен?
Если вы можете самостоятельно написать небольшой скрипт, который:
устанавливает необходимые пакеты;
создает пользователей;
проверяет состояние системы;
сохраняет логи;
перезапускает сервисы;
выполняет резервное копирование,
значит, вы уже достигли уровня, которого обычно достаточно для Junior DevOps.
Материалы для самостоятельного изучения
За годы существования Linux, Bash и DevOps появилось огромное количество книг, курсов и документации. Новичку легко потеряться в этом разнообразии. Я рекомендую начать с нескольких проверенных ресурсов. Их вполне достаточно, чтобы получить прочную базу и постепенно перейти к следующим этапам roadmap.
Linux
Бесплатный курс от The Linux Foundation, посвящённый основам Linux. Подойдёт новичкам, которые хотят освоить работу в терминале, понять устройство операционной системы и получить навыки для дальнейшего изучения DevOps.
Linux Journey
Бесплатный интерактивный курс по Linux. Отлично подходит для новичков: объясняет устройство операционной системы, работу терминала, файловую систему, процессы, пользователей и сетевые команды.
The Linux Command
https://linuxcommand.org/tlcl.php
Бесплатная книга Уильяма Шоттса. Несмотря на возраст, остается одной из лучших книг по командной строке Linux.
Ubuntu Documentation
https://documentation.ubuntu.com/
Официальная документация Ubuntu. Полезна как справочник и источник актуальной информации.
OverTheWire: Bandit
https://overthewire.org/wargames/bandit/
Практический курс в формате игры. Каждое задание помогает освоить новые команды Linux и научиться работать в терминале.
Bash
GNU Bash Manual
https://www.gnu.org/software/bash/manual/
Официальная документация Bash. На первых этапах читать её полностью необязательно, но стоит знать, где искать ответы на возникающие вопросы.
Bash Guide
https://mywiki.wooledge.org/BashGuide
Одно из лучших практических руководств по Bash. Многие темы объясняются значительно проще, чем в официальной документации.
ExplainShell
Очень полезный сервис для новичков. Достаточно вставить любую Linux-команду, и сервис подробно объяснит назначение каждого параметра.
ShellCheck
Онлайн-анализатор Bash-скриптов. Находит ошибки, предупреждает о потенциальных проблемах и помогает писать более качественный код.
Компьютерные сети
Cisco
https://www.netacad.com/courses/all-courses
Бесплатные курсы Cisco по основам компьютерных сетей, Linux и кибербезопасности.
Cloudflare Learning Center
https://www.cloudflare.com/learning/
Библиотека статей о том, как работают HTTP, HTTPS, DNS, CDN, SSL/TLS и другие технологии, с которыми регулярно сталкивается DevOps-инженер.
Practical Networking
https://www.practicalnetworking.net/
Пожалуй, один из лучших сайтов для изучения сетей простым языком. Особенно хорошо объясняются темы IP, маршрутизации, DNS и TCP/IP.
Что дальше?
Следующим логичным этапом станет Git — система контроля версий, без которой невозможно представить современную разработку и DevOps-процессы. Именно ей будет посвящена следующая часть серии.
.
