Как расставить точки над i, по вопросу использованию Bash и Python для DevOps?

Работаю сетевым инженером, начал развитие в направлении DevOps и погрузился в изучение Linux.
Xочу прояснить, для себя, вопрос написания Bash скриптов и использования Python.

Нашел cамоучитель по программированию на языке Bash (326 страниц) и возник ряд вопросов, подскажите, пожалуйста:
1. Реальные кейсы написания и использования Bash скриптов, какие задачи они решают?
2. Сколько часов, ориентировочно, потребуется на изучение и практику написания скриптов на Bash, как глубоко погружаться?
3. Что должен уметь написать на Bash junior/middle/senior DevOps?
4. Возможно для на Bash скрипты стоит потратить день-другой, уметь писать базовые скрипты и переходить к изучению Python?

Python:
1. Где и для чего используется Python на практике DevOps, реальные, повседневные кейсы использования?
2. Каким уровнем знаний Python должен обладать junior/middle/senior DevOps? (Знакомый middle DevOps и Python не знает от слова совсем).
3. Сколько часов, ориентировочно, потребуется на изучение и практику под каждый уровень, как глубоко погружаться?
  • Вопрос задан
  • 772 просмотра
Пригласить эксперта
Ответы на вопрос 5
FanatPHP
@FanatPHP
Чебуратор тега РНР
Вы не годитесь в девопсы.
Это очень частый ответ на этот очень частый вопрос.

Девопс - это человек, который не задаёт вопросы. Он на них отвечает. Самостоятельность является для девопса одним из ключевых навыков. У вас он отсутствует.
И это совершенно точно человек, которого НЕ пугает прочтение 326 страниц мануала.
Девопсу приходится читать примерно в сто раз больше документации. В год. Подумайте хорошенько, а надо ли оно вам, если перспектива выучить даже самые примитивные основы вас пугает настолько, что вы пришли на тостер поторговаться?

В девопс, как и в инфосек, очень редко можно войти с нуля.
Надо начинать либо сисадмином (не эникейщиком), либо программистом (не вордпресс).
И потом, уже развившись как программист/сисадмин, можно подумать о движении в сторону девопса.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега IT-образование
software engineer
1. Реальные кейсы написания и использования Bash скриптов, какие задачи они решают?

Да почти все можно на bash скриптах.
Автоматизация рутины
Склейка разных процессов в единый пайплайн
Системные вещи (копирования, бэкапы, синхронизация, запуски других процессов, даже простой мониторинг)
bash это кроме всего прочего неплохой универсальный скриптовый язык, и отсутствие библиотек восполняется готовым набором консольных утилит на все случаи жизни.

2. Сколько часов, ориентировочно, потребуется на изучение и практику написания скриптов на Bash, как глубоко погружаться?

можно всю жизнь учить любой язык программирования и все равно узнавать новое. bash не исключение, особенно еще и потому что все самое лучшее в bash глубоко завязано на понимание архитектуры Линукс.
Вдобавок, если ты что-то можешь сделать на bash, а потом найдешь какой-нить декларативный оркестратор, ты будешь хорошо понимать что происходит под капотом и интуитивно понимать где что может пойти не так и как это починить.

3. Что должен уметь написать на Bash junior/middle/senior DevOps?

Слово все тут подойдет.

4. Возможно для на Bash скрипты стоит потратить день-другой, уметь писать базовые скрипты и переходить к изучению Python?

Возможно их стоит учить парралельно. Решая одни и те же задачи на питон и баш быстро поймешь, какие задачи конкретно тебе удобнее решать так или иначе. Опять же бывает разная инфраструктура, разный доступ, где-то ты можешь поставить python3, а где-то вообще нет прав доступа что-либо устанавливать.

Python:
1. Где и для чего используется Python на практике DevOps, реальные, повседневные кейсы использования?

Автоматизация, мониторинг, универсальные скрипты. Питон очень неплох в автоматизации вебзапросов. Все можно сделать чере curl, но многое через питон может быть удобнее. Плюс обработка исключений.

2. Каким уровнем знаний Python должен обладать junior/middle/senior DevOps? (Знакомый middle DevOps и Python не знает от слова совсем).

Если ты знаешь питон на уровне сеньор, то не факт что тебе будет интересно работать на позиции девопс. Можно работать девелопером на питоне.
Поэтому знания питона на уровне джуниора обычно достаточны. Но нужно понимать, что джуниор - это не тот, кто знает две команды. Это полноценный разработчик, который знает и структуры данных и стандартные библиотеки и все конструкции. Уровень джуниор в языке программирования должен позволять устроиться на позицию джуниор разработчика.
Девопс инженер, который знает язык программирования на уровне джуниор разработчика - полезный человек, который сам решил углубиться в питон. И в айти области часто людям что-то нравится и они этим занимаются и углубляются вне зависимости от рабочих задач.
Поэтому у большинства именно девопс инженеров знания именно о языках программирования немного отрывочные, но их хватает для написания универсальных скриптов и небольших утилит.
Я в свое время писал простые и не очень вещи на ANSI C/С++/java/python/perl/actionscript. Сейчас почти все делаю на bash и иногда python, и все предыдущие знания мне помогают выбрать чем воспользоваться - написать что-то свое, найти готовую реализацию на другом языке, попросить в проекте, чтобы написали задачу (это тоже вполне себе способ для рабочих нужд договориться с разработчиками о написании нужного функционала для автоматизации/тестирования). Но главное, что я сам могу оценить примерный выхлоп от того, чем делать.

3. Сколько часов, ориентировочно, потребуется на изучение и практику под каждый уровень, как глубоко погружаться?

Сколько часов нужно ориентировочно футболисту, чтобы стать таким как Месси?
Сколько часов нужно музыканту, чтобы стать таким как Фредди Меркури?

Это глупейший вопрос. ВСЕ люди разные. Никто не знает с какой скоростью ты обучаешься, какая у тебя на текущий момент база.
С одинаковым количеством времени за всю школу одни выходят отличниками, другие двоечниками.
С одинаковым количеством усилий одни делают работу, другие выпускают шедевры.

Если цель стать хорошим специалистом - погружаться как можно глубже, тратить как можно больше времени и усилий.
А если цель просто устроиться на позицию джуниора - внимательно почитать требования к вакансии и выполнить их.

Еще один немаловажный фактор.
Позиция девопс инженера подразумевает достаточно сложную архитектуру проекта. С простой архитектурой и задачами обычно справляются своими силами, и когда выделяют целую отдельную позицию, подразумевается что ее займет опытный инженер.
Поэтому фраза "джуниор девопс" в моем понятии моветон.
Джуниор девопс это обычно человек, у которого уже есть опыт хотя бы на уровне мидл специалиста в области системного администрирования (предпочтительно) либо тестировщика-автоматизатора либо разработчика.

Идти в девопсы с нуля - это нахвататься теоретических знаний, нахвататься практики только на курсах и пытаться оркестрировать что-то? Понимание архитектуры никакое, понимание зачем нужны инструменты и нужны ли они в данном конкретном случае - никакое.
Такой инженер может выполнять только задачи по указке, если есть другой специалист в проекте.
Поэтому джуниор девопс может существовать либо в проектах, где есть команда девопсов, которая готова взять человека на вырост и нагрузить его мелочевкой а то и вообще бюрократией. Либо если в проекте кто-то из разработчиков занимается всей этой задачей и хочет сгрузить на другого человека, которого опять таки он будет полностью контролировать.

Если же нужен человек от которого хоть что-то зависит, это врядли сможет быть тот, кто в девопсы пошел с нуля. И такие вопросы как у вас (баш, питон и так далее), показатель, что вы просто изучаете инструменты и даже не углубляетесь в понимание инфраструктурных вопросов.

Выбор инструмента - это частности. Понимание какой должен быть результат - важен.
Те же самые вещи можно делать и башем и питоном и ансиблом и чефом и перлом и не так важно что было выбрано, разве что стоит вопрос расширения и поддержки. А вот что именно делать и как это все увязывать...
почитайте например git flow, и важно не сам гит - это вообще базово должно быть само собой, а зачем git flow нужен и прикинуть какой вариант подойдет в нужном проекте. Это уже как раз задача которую решают совместно девопс инженер и архитектор/тимлида.
Ответ написан
Комментировать
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
Трудно сказать, ещё ведь точно не решили что такое DevOps)) Docker и Kubernetes вообще на Go написаны.
Моё оборудование, домашнее и хобби, работает на *nix. Администрирую я его понятно сам. Вполне обхожусь shell. И это must have, без знания sh просто не обойтись, в том числе при виртуализации и в облаках. Python не понадобился ни разу. Наверное сложные задачи администрирования лучше решаются на Python, но видимо я с такими не сталкивался...
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
Привет,

Баш решает такое: когда-то ты понимаешь, что хватит писать велосипеды (особенно если кто-то уже умеет их писать лучше) и идешь искать готовое, а оно не редко - ХОПА! - написано на Bash
пример

по питону ответ простой - Ansible - лычку на погон и на кокарду и можно в бой

Сколько часов

10 000

ну или пока не решишь текущую задачу
Ответ написан
Комментировать
@iddqda
network engineer, netdevops
А это смотря что за девопс
если беграунд сетевика и нужен нетдевопс то там баша можно сказать и нет совсем
если только в кумулусах и сониках каких

баш - это прикладная тема к консоли линукс в первую очередь. ну там где тебе надо разворачивать сервисы на всяких линуксах разных.
да и то разработчики линукс-дистрибов давно и плотно на питоне эти задачи решают
и правильно делают. потому что задачи все сложнее, а баш это ретроградное убожество, боль и страдания. Его место давно в музее.

Но это все лирика, а главное что я хотел сказать - не смешивай изучение одного и другого
изучай их максимально раздельно чтобы уродские практики баша (ну не могу назвать его ЯП) не мешали изучать нормальное программирование.
при этом уровня баша достаточно на уровне прочитать мануал и научиться читать (не писать) стартовые скрипты

ну а питон так же как и прочие нормальные ЯП - это совсем другая история
туда надо нырять глубоко и надолго
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы