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

    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 нужен и прикинуть какой вариант подойдет в нужном проекте. Это уже как раз задача которую решают совместно девопс инженер и архитектор/тимлида.
    Ответ написан
    Комментировать
  • Чем делать резервную копию Windows?

    dark_rain
    @dark_rain
    Admin
    Veeam Agent'ом на внешний сетевой диск.
    Ответ написан
    2 комментария
  • Как бороться c memory leaks в pods на кластере Kubernetes?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    1. В конфиге kubelet выставляете нужное кол-во оперативы для системных и обычных подов
    2. k8s при создании cgroup пода выставляет memory.limit_in_bytes соответственно лимиту
    3. В подах, где возможны утечки, выставляете resources.requests.memory равное лимиту

    Первое резервирует ресурсы для системных и кластерных сервисов, второе будет дёргать OOM при достижении лимита, третье убирает возможность оверпровижена.
    Ответ написан
    2 комментария
  • Как ограничить трафик на pod, пока контейнера в ней полностью не запустились?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Ну это же просто.
    Вместо этого бреда
    readinessProbe:
              initialDelaySeconds: 15
              exec:
                command:
                  - find
                  - /var/www/public/live777.html


    выполняйте в качестве рединесс пробы HTTP или даже сокет реквест на ваш сервис. Пока он не поднимется, трафик не будет идти на это контейнер.

    readinessProbe:
          tcpSocket:
            port: 80
          initialDelaySeconds: 15
          periodSeconds: 30
    Ответ написан
    2 комментария
  • Как организовать хранение путей для json-файла?

    Dr_Elvis
    @Dr_Elvis Куратор тега Python
    В гугле забанен
    json = {'data':{'variables':{'startupProcessInfo':{'iin': 'first'}}, 'piid': 'second', 'executionState': 'third', 'creationTime': 'fourth'}}
    path_arr = ["['data']['variables']['startupProcessInfo']['iin']",
             "['data']['piid']",
             "['data']['executionState']",
             "['data']['creationTime']"]
    
    for x in path_arr:
        json_iter = json
        path = x[2:-2].split("']['")
        for p in path:
            json_iter = json_iter[p]
        print(json_iter)

    Вывод:
    ========================== RESTART: E:/Python/1.py ==========================
    first
    second
    third
    fourth

    Как пример. изменить можешь на свой код. вот тут я спрашивал как строку передать как путь.
    Ответ написан
    Комментировать
  • Какой дистрибутив Linux лучше изучить?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Вам нужно учить скорее всего не дистрибутив, а просто общую работу в *nix, то есть работу в командной строке. Поставьте любой дистрибутив, Ubuntu, Mint, CensOS, и освойте например:
    установку и запуск собственно скриптов на питоне
    права доступа к файлам, вообще навигацию по файловой системе
    перенаправление ввода и вывода
    подключение по ssh, можно еще и по ssh-ключам - очень пригодится
    Ответ написан
    Комментировать