Как изучить Linux Shell Scripting для DevOps?
Как изучить Linux Shell Scripting для DevOps?
Для начинающих инженеров DevOps очень важно знать shell Scripting или bash scripting. В этом руководстве по shell-сценариям для DevOps я поделюсь своими советами и ресурсами для правильного изучения shell-сценариев Linux.
Я уже говорил о важности shell-сценариев в своем руководстве “Как стать инженером DevOps”. Это руководство предназначено для тех, кто хочет изучить shell-сценарии правильным способом, который может помочь вам в повседневной работе и на собеседованиях DevOps. Очень важно иметь терпение и дисциплину в процессе обучения.
Если вы тот, кто хочет просто добиться результата, то Google и Stackoverflow более чем достаточно .
Вот что мы рассмотрим в этом блоге.
Оглавление
Shell Scripting для DevOps
Первый вопрос, который может возникнуть у вас, – насколько важны сценарии оболочки для инженера DevOps? Я получал этот вопрос как от новичков, так и от опытных ИТ-специалистов.
Ответ таков: это очень важно. На следующем изображении показан опрос Stackoverflow 2021, где 27% респондентов ответили, что используют shell-сценарии.
Но чаще всего меня спрашивают, мол, сейчас существует множество инструментов автоматизации, нужно ли нам все еще изучать и писать shell-сценарии? Ответ – да. Мы больше не создаем сценарии оболочки для полноценной автоматизации, но мы используем сценарии вместе со средствами автоматизации и для специальных задач.
Например, если вы используете опцию AWS user data, есть вероятность, что вы будете использовать сценарий оболочки внутри нее. Другой пример – при создании образов AMI с помощью упаковщика вы в конечном итоге будете использовать сценарий оболочки для конфигурации AMI. Кроме того, у меня были случаи, когда мне приходилось использовать сценарии оболочки с инструментами управления конфигурацией, контейнерами и т.д. Подробнее об этом мы поговорим в следующих разделах.
Кроме того, сценарий оболочки может пригодиться для повторяющихся задач разработки. Например, это может быть создание виртуальной машины Vagrant с необходимым программным обеспечением или настройка самой среды разработки.
Самое главное, что практическое выполнение сценариев и программирование становятся обязательными в предварительных раундах собеседования на DevOps-интервью. Поэтому это еще одна важная причина, по которой вам следует изучить shell scripting.
Как начать работу с Shell Scripting?
Необходимым условием для начала работы с shell-сценариями является практический опыт работы с Linux. Поэтому, прежде чем приступить к изучению shell-сценариев, вы должны уметь работать с командами Linux.
Если вы совсем новичок в мире Linux, вы можете начать с создания нескольких Linux-серверов локально с помощью Vagrant или на облачных платформах, таких как AWS, Google Cloud и др. Каждая платформа предлагает бесплатные кредиты для новичков. Вы также можете воспользоваться бесплатным кредитом в 100 долларов от Digital Ocean. Начать работу не составит труда.
Если вам кажется, что вы хорошо знакомы с Linux, вы можете начать с базовых учебников по Shell scripting. Кроме того, я хочу, чтобы вы сделали следующее.
Создайте репозиторий на Github, создайте папки для каждой изучаемой концепции и зафиксируйте все свои рабочие скрипты. Неважно, доступен ли сценарий в Интернете. Создайте собственную документацию. В разделе README вы можете добавить ссылки и ссылки на веб-сайты/блоги. По окончании обучения вы можете поделиться им на Linkedin. Поверьте, это поможет вам сохранить знания и поможет другим.
Какие лучшие бесплатные ресурсы для изучения Shell Scripting?
Вам не нужно платить за дорогие курсы, чтобы изучить shell scripting в Linux. Существует слишком много маркетинга вокруг курсов, которые обещают сделать из вас ниндзя в области сценариев оболочки DevOps. Однако я не имею ничего против курсов; если вам удобно учиться на платных курсах, соглашайтесь. Я также добавлю эти ресурсы.
Я перечислил лучшие бесплатные ресурсы по shell-сценариям, чтобы вы могли начать. Просмотрите все ресурсы по одному разу, выберите один ресурс, с которым вам удобно работать, и пройдите материал от начала до конца. Как я уже говорил, освоение технологий требует терпения и дисциплины.
Далее следуют бесплатные ресурсы. Здесь есть веб-контент, интерактивные учебники, бесплатные курсы и материалы в формате pdf.
-
[Web] [Web] [Web] [Web] [Web] [Web] [Udemy] [PDF] [Web] [Web] [PDF] [PDF] [PDF] [PDF].
Но если вы скажете: “Эй, я человек, который любит курсы с руководством”, то вот несколько моих рекомендаций.
-
– Образовательный – Pluralsight – Pluralsight
Реальные примеры использования Shell Scripting в реальном мире
Предположим, что вы изучили все концепции сценариев оболочки и, возможно, написали и выполнили сценарии оболочки в учебных целях. Следующий вопрос, который может возникнуть у любого, – как изучить реальные примеры использования shell-сценариев?
Если вы работаете в компании, вы можете найти проектную документацию и коды автоматизации инфраструктуры, где существующие проекты используют shell-сценарии.
Если у вас нет доступа к проектной документации и коду, вот что вы можете сделать.
Найдите на Github репозиторий наиболее распространенных базовых образов docker, например, базовый образ Nginx.
Там вы найдете папку entrypoint с несколькими скриптами или файл скрипта entrypoint.sh. Вот пример с nginx
Постарайтесь понять сценарий оболочки и его функциональность. В этом процессе вы поймете многие концепции и логику, которые могут быть использованы при написании сценария оболочки. (функции, условия, случаи переключения и многое другое).
Это не ограничивается только репозиториями Docker, вы можете найти сценарии во многих репозиториях сообщества с открытым исходным кодом.
Shell Scripting в реальном времени
Всегда лучше учиться на примере некоторых сценариев реального времени с точки зрения собеседований с инженерами DevOps. Поэтому я подготовил несколько реальных сценариев, которые вы можете опробовать. Я буду постоянно обновлять этот список.
- Напишите функцию сценария оболочки для поиска и уничтожения всех зомби-процессов.
- Найти первые 10 самых больших файлов в файловой системе и записать вывод в файл.
- Shell-скрипт для изящного размонтирования диска.
- shell-скрипт для отправки электронной почты
- Shell-скрипт для мониторинга использования процессора, памяти и диска и отправки результатов в файл в формате таблицы.
- Shell-скрипт для поиска созданных файлов и их размеров. Он должен принимать количество дней в качестве входных данных. Или формат даты от и до в качестве входных данных.
- Написать сценарий оболочки для составления списка пользователей, вошедших в систему по дате, и записи его в выходной файл.
- Shell-скрипт для рекурсивного копирования файлов на удаленные хосты
- Shell-скрипт, отображающий количество неудачных попыток входа в систему по IP-адресу и местоположению.
- Shell-сценарий для разбора файла журнала и пересылки определенного значения с меткой времени в выходной файл.
Убедитесь, что вы включили следующие понятия в сценарии оболочки, которые вы пишете.
- определения переменных
- Использование cut, awk и grep
- Обработка перенаправления ввода/вывода/ошибок.
- Условия/операторы If else
- Скрипты с оператором Case
- Циклы (For/Do-While)
- Статус существования
- Аргументы командной строки
Языки сценариев оболочки
Прежде всего, не существует специальных языков сценариев оболочки. Когда речь идет о shell-сценариях, подразумеваются sh, bash, csh, tcsh. Здесь мы в первую очередь говорим о shell-сценариях bash. Bash – это интерпретируемый язык сценариев для систем на базе Unix.
Сценарий оболочки – это компьютерная программа, предназначенная для выполнения интерпретатором командной строки – оболочкой Unix.
Википедия
Но языки сценариев, в общем случае, подразумевают несколько языков. Ниже перечислены распространенные языки сценариев.
Вопросы для собеседования по Shell Scripting DevOps
Вопросы на собеседовании по Shell scripting DevOps отличаются в зависимости от компании.
Например, компания, работающая в сфере услуг, будет просто заинтересована в ваших базовых знаниях Linux и shell-сценариев. Однако компания, специализирующаяся на продуктах, может ожидать хорошего уровня знаний командной строки Linux и shell-сценариев.
В настоящее время большинство компаний предоставляют такие платформы, как Hackerank, для проверки ваших навыков написания сценариев. Поэтому необходимо практиковаться в написании сценариев shell для решения проблем.
Ниже приведены некоторые вопросы по shell-скриптам для интервью DevOps.
- Shell-скрипт для обратного преобразования строки
- Разобрать журнал в нужном формате и найти все вхождения слова
- Скрипт оболочки для отправки первых десяти строк файла в другой файл.
- Слияние (контаминация) двух файлов и запись вывода в третий файл.
- Найти все дубликаты строк в файле и заменить их на другие строки
- Найти все IP-адреса из лог-файла и записать их в другой файл.
В ближайшее время я дополню этот список более общими вопросами для интервью.
Часто задаваемые вопросы по Shell Scripting
Ниже приведены некоторые из часто задаваемых вопросов по shell-сценариям начинающими инженерами DevOps.
Насколько сложно изучить shell-сценарии Linux?
Изучение shell-сценариев похоже на изучение любой другой технологии. Если у вас есть хорошие базовые знания Linux, вы сможете легко изучить shell-сценарии, если будете следовать дисциплинированному пути обучения.
Требуются ли сценарии для инженеров DevOps?
Да. Знание сценариев очень важно для инженера DevOps. Для среды разработки и производства инженеру DevOps, возможно, придется создавать полезные утилиты с помощью сценариев.
Какой язык сценариев лучше всего подходит для DevOps?
Это зависит от проекта. Но Bash, Powershell и python – это наиболее часто используемые языки сценариев в проектах DevOps. Groovy необходим, если проект использует Jenkins.
Используется ли Shell Scripting для автоматизации?
С появлением многих инструментов DevOps отпала необходимость писать полноценную автоматизацию на shell-сценариях. Однако shell-сценарии используются как часть этих инструментов автоматизации для поддержки некоторых функций. Классическим примером может служить использование shell-сценариев в Hasicorp Packer для создания образов виртуальных машин.
Заключение
Надеюсь, вам понравилось это руководство по изучению Shell-сценариев для инженеров DevOps.
Теперь я хотел бы услышать от вас: Какой метод или ресурс из сегодняшнего руководства вы собираетесь опробовать первым?
Начнете ли вы с основ Linux? Или сфокусируетесь на вопросах, задаваемых на собеседовании