Из инженеров в DEVOPS — «Войти в IT» на практике
Меня зовут Степан Вахета, и я хочу рассказать о своем пути от инженера инфраструктуры до позиции младшего DevOps-инженера в HOSTKEY. Надеюсь, эта информация будет полезна тем, кто находится в раздумьях по поводу развития карьеры в IT или о переходе в новую профессию. Я специально делаю акцент на практике, поскольку теория без нее мертва.
Хотя моя предыдущая работа не была напрямую связана с IT-сферой, она все же была технической (до этого я чуть больше года проработал техником в компании-интеграторе, а ранее вообще был автомехаником). Я всегда интересовался оборудованием и люблю разбираться в его устройстве. Поэтому, начав исследовать рынок вакансий в IT, я обнаружил много интересных вариантов. Мне хотелось работать именно в ЦОД — быть тем человеком, кто ходит по машинным залам и обслуживает эту мощную инфраструктуру под гул вентиляторов, кто дежурит ночами и в праздники. Поэтому среди вакансий искал эту роль.
Аренда выделенных и виртуальных серверов в дата-центрах Европы, США и России за рубли.
Обучение
Поскольку я хотел начать карьеру в IT уже с некоторым багажом знаний и практических навыков, то решил самостоятельно обучаться в этой сфере. За год я изучил много теоретического материала, систематически приобретал домой различное оборудование и пытался его настраивать, чтобы закрепить полученные знания на практике. Благодаря такому подходу я смог получить базовое понимание процессов и принципов работы техники в выбранной мной сфере. Это помогло мне развить необходимые навыки для начала карьеры и дало уверенность в своих силах. Предварительное обучение, особенно практика, позволили быстро влиться в рабочий процесс после трудоустройства.
Изначально в моем распоряжении был лишь стационарный ПК и роутер интернет-провайдера. Однако мне сразу захотелось настроить домашнюю сеть и сервер. Я собрал сервер из комплектующих, купленных на популярной китайской торговой площадке. По мере пополнения знаний в области сетей я продолжал докупать и обновлять оборудование и компоненты, работа с которыми казалась мне интересной и полезной для изучения.
Один из дней в процессе настройки купленного оборудования
Постепенно я создал домашнюю IT-инфраструктуру. Начинал я с устройств Mikrotik — экспериментировал с разными настройками от VLAN до беспроводных протоколов. Вскоре любопытство подтолкнуло меня обновить все сетевое оборудование на Cisco. Я продолжил «играть с настройками», реализуя различные интересные мне сценарии.
Кроме того, я экспериментировал с мобильной радиосвязью, в основном на даче — от роутеров до кабельных сборок, антенн и радиомостов. Такой практический подход позволил мне значительно расширить знания и получить ценный опыт.
На сервере использовал гипервизор и экспериментировал с виртуализацией:
Собранный сервер в кастомном корпусе, который я переделал из старого ПК
Помимо самостоятельного изучения я также воспользовался возможностью пройти курсы и сдать экзамены на получение сертификатов по программам компании Huawei. Это позволило мне расширить знания и подтвердить квалификацию в таких областях, как:
HCIA-R&S (Маршрутизация и коммутация);
HCIA-WLAN (Беспроводные локальные сети);
HCPA-IP Network (Проектирование IP-сетей);
HCIA-Storage (Хранение данных);
HCIP-Data Center Facility (Центры обработки данных).
Подготовка к этим экзаменам и получение сертификатов помогли узнать много новой информации в сфере сетевых технологий.
Трудоустройство. Инженер инфраструктуры ЦОД. Март 2022
При поиске работы я не спешил в выборе, а уделял больше внимания оформлению вакансий и репутации компаний. В итоге я остановился на должности инженера инфраструктуры в ЦОД в HOSTKEY и отправил резюме в компанию. На интервью я познакомился с руководителем отдела технической поддержки и руководителем отдела DevOps. Мне задавали вопросы по профилю деятельности. На одни, по моему мнению, я ответил развернуто и корректно, на другие — не столь уверенно, а на третьи не смог ответить в полной мере. Также я предложил продемонстрировать свои практические навыки, выполнив задачу в терминале в режиме реального времени.
В целом собеседование очень понравилось, остались только положительные эмоции, но сам я себя оценил не так хорошо, как хотелось бы. Через пару дней со мной связался тот самый человек из отдела кадров с предложением о трудоустройстве, и я с радостью принял предложение.
Влиться в коллектив удалось быстро, атмосфера внутри компании мне понравилась. Начал работать с серверами с первых дней: монтаж, реконфигурация, обслуживание, выявление неисправных компонентов и прочее. Я начал работать со многими технологиями и системами, с которыми был знаком теоретически, но никогда не видел и не использовал на практике. В частности впервые увидел и начал работать с системой инвентаризации, позволяющей автоматизировано учитывать серверы и управлять ими. Ранее я даже не представлял, что можно так удобно реализовать этот функционал.
Я начал осваивать и другие внутренние инструменты и сервисы, которые используются в компании. Хотя изначально для меня это были незнакомые вещи, постепенно я научился работать с ними, на практике применяя имеющиеся теоретические знания. Этот ценный опыт позволил мне понять, как технологии, о которых я знал ранее, применяются для решения реальных бизнес-задач.
В нашей компании действует система грейдов, позволяющая точно знать, какие навыки и компетенции необходимы для профессионального роста и перехода в различные отделы. Общая схема, вероятно, стандартна для всех хостинг-провайдеров:
Для примера приведу примерный перечень навыков, необходимый для перехода на должность дежурного системного инженера:
Теоретические знания | |
Лицензии ПО | Ориентироваться в актуальных моделях лицензирования ПО. Разбираться в особенностях Open Source, Free Software и проприетарных решений. Понимать применимость и основные различия систем лицензирования: GPLv2/3, AGPL, Apache/MIT/BSD, CreativeCommons. |
Различия ОС с точки зрения пакетных систем и системы релизов | Различать source-based и бинарные дистрибутивы Linux. Знать примеры (Gentoo vs Ubuntu). Знать циклы выпуска релизов популярных дистрибутивов. Концепции статичных релизов и rolling-release (Debian, CentOS vs Arch, OpenSuse). Приводить примеры ОС с разными моделями релизов. |
Модели взаимодействия вычислительных систем | Клиент-серверная модель. Одноранговая (пиринговая) модель. |
Общее устройство LVM Linux, управление дисками Windows | Структура LVM и возможности подсистемы (для чего используется). Уметь просматривать и анализировать информацию по разбивке, создавать простые инсталляции LVM. Использование оснастки Windows для работы с дисками. Концепция динамических дисков. |
RAID | Поддерживаемые mdadm виды RAID. Различия в метаданных, ограничения программного RAID, преимущества над FakeRAID и Hardware RAID. Мониторинг RAID-устройства, как отследить процедуру подготовки устройства и его статус с помощью подсистемы proc. Управление аппаратным RAID (LSI/Avago/Broadcom) из ОС: MegaCLI и др. утилиты. |
Система прав POSIX | Устройство стандартной системы прав. Битовые обозначения. Хранение прав на файлы. Знать sgid/suid биты, уметь применять для файлов и директорий. |
Система прав на файлы Windows | Устройство подсистемы, где хранятся права. Явные и неявные ограничения, просмотр текущих разрешений. |
Процедура загрузки | BIOS-загрузка (Legacy). Знать стандарт MBR, как происходит передача управления загрузчику. Ориентироваться в устройстве конфигурации grub2, уметь работать с dd с целями резервного копирования главной загрузочной записи. |
Устройство реестра Windows | Понимать общее устройство реестра, ориентироваться в назначении основных ветвей, уметь работать с оснасткой regedit, добавлять, изменять, удалять записи. |
Практические навыки | |
Поиск документации | Владеть утилитами man, info. Уметь просматривать и анализировать краткий help к gnu/posix cli утилитам. |
Удаленное управление | Подключение к удаленным машинам по протоколам RDP, VNC, Spice, ssh. |
Настройка сети | Необходимо уметь настраивать самый простой и распространенный случай: 1 основной адаптер, 1 шлюз, 1 адрес. Включает в себя настройку основных менеджеров сетевых соединений в Linux: Уметь настроить сеть в Linux вручную без использования менеджеров, с использованием iproute2. Уметь настраивать сеть для проприетарных систем: ESXi, Microsoft Windows. Через Gui, псевдоGui и cli. |
Управление службами | Включение, остановка, постановка служб в автозагрузку, просмотр статуса служб. |
Управление модулями/драйверами Linux/Windows | Уметь просматривать и подгружать/выгружать модули: lsmod, modprobe. Уметь ставить модули в автозагрузку, добавлять модули в черный список. Умение находить драйверы для Unknown device в Windows без использования дополнительного ПО, через UID устройства. |
Планировщики задач Windows/Linux, Автозагрузка в Windows | Уметь управлять планировщиками задач: |
Управление Firewall | Включение и отключение службы Firewall. Знать коренные отличия между Iptables, Firewalld. Уметь анализировать правила Iptables. Уметь анализировать правила firewalld, понимать логику зонирования. Уметь конфигурировать Firewall для приложений или портов; в Microsoft Windows, анализировать правила. Знать как настраивается Firewall Windows по умолчанию (что запрещено, что разрешено). |
Диагностика проблем ОС и процедуры загрузки. | Для Windows — уметь искать информацию по BSOD. Для всех эксплуатируемых ОС понимать стадии загрузки, уметь проводить базовую диагностику по системным сообщениям ошибок, выявлять сбои с оборудованием или драйверами устройств в процессе загрузки. В Windows уметь искать информацию в дампах BSOD и анализировать дамп с помощью Bluescreenview. Для Linux знать уровни Init, отличия в загрузке для Systemd. Уметь переключаться между уровнями инициализации. |
Управление пользователями | Обладать базовыми навыками управления для основных ОС, через GUI и командную строку. Уметь добавить/удалить пользователя, добавить в группу, исключить из группы, назначить пароль, изменить shell (linux). Просмотреть список групп пользователя. Список ОС: |
Навыки работы с Log-файлами | • Windows syslog • Текстовые логи Linux, ESXi. • Journald. |
Просмотр и управление правами файлов Linux/Windows | Утилиты chmod, chown. Управление правами через оснастку Windows. Уметь просматривать права ls, stat. |
Файловые системы | Ориентироваться в основных файловых системах, уметь рассказать применимость, ограничения, возможности: Уметь создавать файловые системы в Windows и Linux. Понимать концепцию фрагментации файловой системы. Понимать концепцию inode. Уметь расширять файловые системы. |
Навигация по файловой системе в командной строке Linux и основные операции с файлами | Удалить файл — rm, rmdir. |
Диагностика сети | Понимать назначение, ограничения утилит. Уметь применять для диагностики сетевого соединения: |
Анализ занятого пространства Linux | Уметь анализировать занятое пространство на файловых системах с помощью утилит: |
Владеть пакетными менеджерами основных дистрибутивов | Уметь устанавливать, удалять пакеты, искать по установленным пакетам, просматривать какие файлы поставляет пакет. Пакетные менеджеры: yum/dnf (rpm), apt (dpkg), pacman. Уметь устанавливать ПО для FreeBSD через пакетную систему и систему ports. |
В первые месяцы работы я в основном занимался обслуживанием, выявлением неисправностей, починкой, реконфигурацией, тестированием серверов и реже — сетевого оборудования, кроссировкой. Этот начальный этап позволил мне получить общее представление об инженерной инфраструктуре центра обработки данных. Я всегда с удовольствием находился в машинном зале или специально отведенном месте и копался с оборудованием, будь то железная или софтовая проблема, всегда старался разобраться до конца сам, прежде чем делегировать задачу.
Из написанного выше можно подумать, что это была «работа мечты», но на деле не все шло так гладко, были и проблемы. График работы предполагал суточные дежурства, что было достаточно утомительно, особенно если мало поспал перед сменой: при работе «в ночь» ты начинаешь себя чувствовать «овощем». К тому же мне не хотелось терять производительность, и я чаще спал в часы отдыха, а во время смены постоянно подпитывал себя кофе до самого утра, что сказывалось на самочувствии на следующий выходной день.
Полгода спустя. Дежурный инженер. Сентябрь 2022
Через полгода мне предложили должность дежурного инженера, и я начал более плотно заниматься поиском и устранением неисправностей операционных систем, сети и сервисов. Мне стали поступать различные заявки, где возникали проблемы, с которыми я еще не сталкивался.
Например, мне пришлось решать проблемы с неисправностью диска в RAID-массиве (как в аппаратном, так и в программном) его идентификацией, заменой и последующим добавлением нового диска в массив. С расширением дискового пространства посредством LVM или же обычным добавлением диска, созданием требуемых разделов и файловой системы с последующим ее монтированием.
По сети в ОС обычно было большое количество заявок, где пользователь установил себе ОС самостоятельно (или менял сам настройки в связи с заменой IP-адреса) и ошибся в конфигурации файлов (неверно указана маска/шлюз/адрес), также бывали случаи, когда все правильно настроено, но сети нет даже на канальном уровне, потому что «удаленные руки» подключили кабель не в нужный порт, или сам кабель неисправный, или трансивер в сетевой карте или коммутаторе не совместимый— все это по началу у меня занимало очень много времени для определения неисправности, затем уже выработал понимание, что может произойти, и сразу начинал поиск возможных причин, что существенно повысило производительность и сократило время решения возникающих проблем.
В процессе работы я начал более тесно взаимодействовать с коллегами из отдела DevOps. При решении возникающих проблем я старался разобраться в устройстве и внутренней инфраструктуре систем, с которыми работал. Это помогло мне лучше понять, какие сервисы и инструменты используются в нашей компании.
Для примера приведу примерный перечень навыков, необходимый для опытного дежурного системного инженера:
Сеть | |
Отдельные навыки | Уметь просматривать прослушиваемые порты Windows/Linux. Понимать принцип работы петлевого интерфейса, файловых сокетов (для Linux). Уметь снимать дамп трафика для последующего анализа (с помощью tcpdump) в Wireshark. Libpcap — знать ответ на вопрос, работает ли tcpdump до правил файрвола или после. Использование утилиты nmap для поиска хостов в сети и анализа хостов (открытых портов, типа ОС). |
Устройство протоколов (в том числе процедура общения) | • DNS; Уметь ответить на следующие вопросы Для чего предназначен протокол? В какой момент задействуется? Какие приложения общаются по протоколу? Знать протоколы и порты по умолчанию для соответствующих серверов. Уметь описать процедуру взаимодействия по шагам. Для протокола HTTP знать разновидности запросов, ориентироваться в классификации кодов состояний, уметь использовать утилиты curl/wget/s_client для коммуникации с web-сервером. Для протокола DNS знать основные виды записей (A, AAA, CNAME, SOA, MX, NS, TXT). Для почтовых протоколов понимать назначение протоколов и знать (применять) средства диагностики протоколов (openssl, telnet). |
Модели OSI и TCP/IP | Понимать принципы сетевого взаимодействия, уметь указать уровень для основных протоколов, а также описать назначение и сферу применения протоколов: Ethernet, ARP, IP, TCP, UDP, HTTP (s), DNS, DHCP, TFTP, FTP, SSH, SMTP, IMAP, POP3, LDAP (s), ICMP, iSCSI, FibreChannel, Ipsec, 802.1q. Знать разницу между хабом, коммутатором, управляемым коммутатором, маршрутизатором, L4-L7 файрволом. |
Маршрутизация | Уметь посмотреть/настроить временные и постоянные маршруты в Windows/Linux/BSD. Знать как настраиваются приоритеты маршрутов |
Операционные системы | |
Отдельные навыки | Уметь узнавать каким процессом используется файл, владеть утилитой lsof. Linux Windows О процедуре загрузки Уметь работать со Swap в Windows/Linux: создание, удаление, монтирование при загрузке. |
Система LVM Linux | Практические навыки (в том числе расширенные) по работе с: |
Система прав POSIX ACL и мандатные системы контроля доступа | Знать расширение прав POSIX ACL, уметь посмотреть и назначить права. Знать правила монтирования файловых систем, в том числе уметь настроить поддержку для nfs. Область применения и возможности мандатных систем контроля доступа; уметь просматривать статус Selinux, уметь включать, отключать. Режимы работы Selinux. |
Процедура загрузки EFI | Понимать устройство стандарта GPT, понимать отличия от MBR, знать основные программы для разбивки дисков Linux: Знать устройство разбивки диска, тип и структуру файловой системы для организации EFI-загрузки. Понимать принцип работы SecureBoot. Уметь настроить загрузку Linux с и без использования отдельного загрузчика через EFI. |
Файлы в Linux | Ориентироваться в основных типах файлов Linux, уметь определять тип файла. Знать концепции Inode и каталогов Unix. Понимать, как связаны процессы, пользователи/группы, файлы в Unix. Знать, что такое Filesystem Hierarchy Standart, и уметь объяснить назначение корневых каталогов современного Linux. |
Шифрование | Понимать работу симметричного шифрования, ассиметричного шифрования. Уметь создавать ключи для OpenSSH и настраивать доступ к серверу при помощи ключей. Понимать работу системы доверия сертификатов. Уметь создавать «самоподписанный» сертификат в Linux, работать с сертификатами Lets Encrypt. |
Работа со службами | Уметь создавать и настраивать службы для систем инициализации: |
Процессы | Знать систему основных сигналов, владеть утилитой kill. Понимать концепцию иерархии процессов, PID. Уметь работать с утилитами ps, top, htop. Уметь работать с утилитой procmon Windows, для расширенного управления процессами. |
Firewall | Уметь настраивать, в том числе сложные наборы правил, nat. |
Диагностика проблем загрузки ОС | Уметь работать с загрузчиками и анализировать их конфигурации (PXELinux, iPXE, GRUB). Обладать общими навыками работы в командной строке GRUB/EFI shell (запуск файла, загрузка конфигурации, просмотр файловой системы). Управление пользователями и правами Linux/Windows. Умение работать с sudoers (разрешения, переменные окружения в SUDO): структура конфигурации, настройка повышения прав для ограниченного круга программ. Умение работать с конфигурацией HBAC Linux: hosts.allow/deny. Понимать различия прав Samba и NTFS (файловой системы), уметь настраивать. |
Работа с логами Linux | Уметь настраивать logrotate. Уметь конфигурировать Journald-лог, знать основные режимы работы. Уметь мониторить и фильтровать лог онлайн. |
Регулярные выражения | Уметь отличать глобы и регулярные выражения, объяснить разницу. Общие навыки в использовании регулярных выражений. Уметь: |
Основные инструменты монтирования файловых систем Linux | Знать варианты монтирования файловых систем и уметь использовать |
DM multipath.iSCSI | Владение инструментарием Linux по работе iSCSI. |
Shell (bash, gnu), cmd | Владеть всеми способами перенаправления вывода. Уметь записывать многострочную конструкцию в файл через cat << EOF >>. Уметь перенаправлять вывод STDOUT, STDERR. Знать варианты экранирования символов, уметь их применять. Уметь создавать параметризированные скрипты. Знать специальные переменные: $?, $!, $$, $@, $1…n. Уметь работать с: Знать основные варианты проверок test (на наличие и тип файла и т.п). Xargs — уметь применять в сценариях с pipe. Уметь применять утилиты sed, awk, wc, tr, cut. Владеть базовым синтаксисом bat (cmd)-файлов. |
Пакетные системы дистрибутивов | Уметь: |
К чему стоит быть готовым, выбирая себе профессию? В ней вам чаще, чем кому-либо, придется видеть экран монитора с клавиатурой и порой это может сказываться на эмоциональном состоянии. Вам придется научиться контролировать баланс времяпровождения за компьютером и вне его и при этом постоянно быть «в зоне доступа» для реагирования на критические ситуации и аварии.
Изучать новое и продолжать углубляться в изученное тоже важно, это должно занимать ваше свободное время или перерывы в рабочем времени. При это даже несколько недель отдыха или отрыв от деятельности по каким-либо другим причинам могут вас «выбить из колеи» на некоторое время, так что вам придется наверстывать то, что вы упустили по работе.
Нужно постоянно держать большое количество информации в голове— из-за этого упираешься в некий лимит по памяти, и новый материал становится трудно воспринимать и усваивать, особенно когда это нужно сделать быстро. Часто возникает ощущение, что как бы ни стараться, все равно чувствуешь себя некомпетентным.
Переход в DevOps. Август 2023
Постепенно я начал интересоваться не только устранением текущих инцидентов, но и тем, как все устроено, чтобы предотвратить подобные сбои в будущем. Общение с коллегами-разработчиками расширило мое понимание нашей IT-инфраструктуры в целом. Я старался рассматривать возникающие проблемы комплексно, учитывая не только текущий инцидент, но и общую архитектуру систем.
Такой подход помог мне эффективнее и быстрее решать задачи. Коллеги посоветовали мне ознакомиться с определенными материалами, среди которых был представлен перечень учебников для подготовки джуна DevOps. Весь список приводить не буду, так как там было много отдельных небольших статей, но самые комплексные материалы приведу:
А.Г. Кушниренко. Учебник по Информатике для средней школы.
Э. Танненбаум. Архитектура компьютера, Современные операционные системы, Компьютерные сети.
Э. Немет. UNIX И LINUX. Руководство системного администратора.
Д. Фиддл. Регулярные выражения.
П. Луридас. Алгоритмы. Самый краткий и понятный курс.
Н. Дрю. Практическое использование Vim.
Для примера приведу примерный перечень компетенций, необходимый для перехода на должность джуна DevOps:
Пользователи и доступы Linux | Уметь работать с файлом nsswitch.conf. Знать назначение сервиса sssd, понимать общее устройство логина и подсистемы pam. |
Процессы Unix | Разновидности состояний процессов Unix. Иерархия процессов и процедура создания новых процессов. |
Виртуализация | Знать разновидности виртуализации и ориентироваться в основных актуальных решениях. Ориентироваться в актуальных системах оркестрации виртуальных машин и контейнеров. Понимание IOMMU, системы проброса PCI устройств в виртуализацию. Знать принципы виртуализации устройств, протоколов доступа к консоли устройства. Ориентироваться в различиях эмулируемого оборудования и полностью виртуальных устройств. Уметь конвертировать железные машины в виртуальные, владеть инструментарием конвертации различных форматов виртуальных жестких дисков между собой. |
Блочная подсистема | Уметь конфигурировать планировщик блочной подсистемы Linux для HDD/SSD, уметь запускать команду TRIM, понимать концепцию опции Discard. Уметь работать с системой ZFS on Linux, ориентироваться в устройстве ZFS, возможностях, ограничениях, особенностях монтирования Linux/BSD. |
Планировщики задач | Уметь работать с локальными планировщиками задач, объяснить их назначение и отличия от Cron: Уметь работать с планировщиком задач Jenkins: |
Ядро Linux | Уметь конфигурировать и собирать ядро Linux. Умение модифицировать и анализировать initrd/initramfs, работать в командной строке initramfs. Уметь конфигурировать модули и просматривать подробную информацию по модулям с помощью modinfo. Уметь пользоваться системой dkms. |
Средства автоматизации | RPM — умение создавать пакеты. Ansible — умение писать простейшие плейбуки, понимать иерархию ansible: модуль, роль, плейбуков. Владеть модулями: template, file, copy, lineinfile. Уметь работать со словарями, создавать шаблоны, пользуясь циклами и конструкциями выбора. Make — понимать концепцию, уметь создавать простейшую конфигурацию сборки. |
Навыки программирования | BASH/SH — уверенное владение, способность анализировать сложные скрипты. Базовые навыки написания своего и чтения чужого кода на любом из следующих языков: Владение (базовый навык) VCS Git (знание SVN как плюс): |
Сервисы | NFSv3(4)/SAMBA/FTP — уметь настроить сервер, права и пользователей (локальных, без внешних баз данных). Уметь провести диагностику сервиса, знать порты протоколов. Nginx/Httpd/Php-fpm — уметь конфигурировать. PHP — уметь работать с pecl/pear, уметь использовать composer, анализировать phpinfo и конфигурировать базовый язык и дополнительные модули. Ruby — ориентироваться в устройстве приложений на RoR, конфигурировать passenger/unicorn. Java — уметь запускать приложения на Jetty/Tomcat, производить базовую конфигурацию Tomcat. Mysql/Postgresql/Mongodb — уметь настраивать доступы к базам, создавать пользователей, создавать базы данных, просматривать таблицы и делать простейшие SELECT-выборки. Уметь делать резервное копирование и восстановление базы. LDAP — уметь подключаться с помощью консольных утилит openldap (ldapsearch) и анализировать структуру базы. Postfix/Dovecot — уметь настроить простейший почтовый сервис и не сделать открытый релей. |
Деплой операционных систем | Уметь работать с kickstart (Anaconda), debian installer и unattended.xml (Windows) Уметь конфигурировать diskpart (Windows). |
Спустя некоторое время коллеги из отдела DevOps предложили мне пройти тестовые задания и оценить мои навыки. Первые задачи были несложными и не относились с написанию или улучшению наших внутренних сервисов. Мне было поручено написать bash-скрипт для выбора диска по заданным критериям (по приоритету — тип и определенный диапазон размера). Следующая задача заключалась в сборке RPM-пакета. Я не имел опыта создания пакетов и потратил много времени, изучая документацию и составляя spec-файл.
Далее нужно было написать Ansible-плейбук для для развертывания сервиса OpenSearch с его дашбордом, и последующей минимальной настройкой файрвола. Это был мой первый опыт работы с инструментами автоматизации. До этого момента я только слышал об автоматизации и никогда не работал с ней. После нескольких попыток запуска и правок плейбука, когда я увидел сообщения о выполненных тасках, а в конце сообщение success, я почувствовал мощь автоматизации (хоть и такой небольшой). И понял насколько она необходима при таком количестве серверов и сервисов, поскольку позволяет существенно экономить время, ресурсы и избежать ошибок (при правильном написании и тестировании).
Я также научился хранить код в GitLab, а не в блокноте, управлять им через систему контроля версий. Затем приступил к изучению системы мониторинга — настроил сбор нужных метрик и оповещения о критических проблемах. Ведь своевременная реакция на алерты может предотвратить много ручного труда или простой систем.
Эти задания расширили мои навыки и помогли лучше понять важность автоматизации, мониторинга и надлежащего управления инфраструктурой. Я был рад возможности развиваться в этом направлении. Шаг за шагом решение каждой задачи дает новое понимание и новый опыт, некоторые действия становятся рутинными, тогда сразу зреет план, как это автоматизировать. Ежедневно при попытке устранения проблемы узнаешь что-то новое.
Итоги
В процессе перехода из техподдержки в DevOps я прошел путь от решения простых задач до автоматизации рутинных операций. Каждая проблема, которую я устранял, давала мне новые знания и навыки. По мере того как некоторые действия становились привычными, я начинал думать, как их можно автоматизировать.
Работа в этой сфере — это постоянное развитие и обучение новому. Каждый день, сталкиваясь с очередной задачей, я открываю для себя что-то новое. Это бесконечный процесс создания, совершенствования, наработки своих специфичных навыков. Мой опыт показывает, что постепенно, шаг за шагом можно пройти путь от специалиста технической поддержки до DevOps-инженера.