Библиотека девопса | DevOps, SRE, Sysadmin
10.3K subscribers
1.4K photos
72 videos
4 files
2.61K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
😎🥷 Разбираемся с Microcks Docker Extension

Microcks — это облачный опенсорсный Kubernetes-инструмент для макетирования и тестирования API.

🔹 Симуляция API или микросервиса на основе набора описательных ресурсов (спецификаций или контрактов)
🔹 Валидация соответствия приложения и API путем проведения контрактного тестирования

Уникальность Microcks — он предлагает единый и согласованный подход для всех видов запросов/ответов к API (REST, GraphQL, gRPC, SOAP) и API и event-driven API.

Зачем запускать Microcks в качестве Desktop-расширения для Docker?

Благодаря бесшовной интеграции возможностей контейнеризации Docker разработчикам больше не нужно ориентироваться в сложных настройках или бороться с проблемами совместимости. Разработчики могут без особых усилий настраивать и развертывать Microcks в существующей среде Docker, без необходимости править большие конфиги.

Подробнее читаем тут

#обучалка
🔥223
👷‍♂️🏗️ Контейнеризованная платформа автоматизации Ansible

Эта штука может устанавливать и запускать контейнеризованные авто-контроллеры, Ansible automation hub и Event-Driven службы Ansible на одном или нескольких базовых узлах RHEL с архитектурой x86_64 и ARM64. Для этого не требуется Kubernetes, поскольку она использует собственный RHEL podman поверх RHEL-хоста.

Преимущества

🔹 упрощенный процесс установки
🔹 многоуровневый подход к установке
🔹 контейнеризированный подход к сервисам
🔹 защита «из коробки» с использованием rootless Podman контейнеров
🔹 стартовая площадка для улучшенных функций в будущем
🔹 согласование подхода к поддерживаемым платформам развертывания и опциям

Читать статью

#гайд
🤩27🔥61👍1
🧑‍🎓😎 Еще одна серия с мероприятия OFFZONE 2023

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

Эксплуатация уязвимостей HTTP Request Splitting

В своем докладе Сергей расскажет об уязвимостях HTTP Request Splitting / CRLF Injection в проксировании HTTP‑запросов пользователя между веб‑серверами. Будут освещены методы обнаружения подобных уязвимостей при автоматическом сканировании и варианты их эксплуатации на примере популярных багбаунти-программ

Смотреть

#видео
3👍3🔥2
#вопросы_с_собеседований
Простенький вопрос, который часто предлагают вначале собеса

Представлен вывод команды top. Что означает каждая запись в выводе?

top - 10:44:36 up 91 days, 19:29, 7 users, load average: 0,00, 0,02, 0,05
Tasks: 156 total, 1 running, 155 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0,0 us, 1,5 sy, 0,0 ni, 96,9 id, 0,0 wa, 0,0 hi, 0,0 si, 1,5 st
KiB Mem : 12137392 total, 6227844 free, 1117728 used, 4791820 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 10090148 avail Mem

top — утилита
10:44:36 — время системы
up — сколько система работает с момента последнего запуска
7 user — количество авторизованных юзеров в системе
load average: 0.00, 0.02, 0.05 — параметр средней нагрузки на систему за период времени 1 минута, 5 минут, 15 минут
156 total — всего процессов в системе
1 running — количество процессов в работе
155 sleeping — ожидание процесса или сигнала
0 stopped — количество приостановленных процессов сигналом STOP или выполнение трассировки
0 zombie — количество зомби-процессов, которые завершили своё выполнение, но присутствующие в системе, чтобы дать родительскому процессу считать свой код завершения.
👍116🔥5🥰5🎉2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
💼🖥️ Топ лучших бирж фриланса и платформ для программистов

Где начинающему разработчику найти работу и получить первый коммерческий заказ? В этом могут помочь фриланс-биржи и human-cloud платформы. Но какие именно — расскажем в статье.

📌 Полезные материалы по теме:

🧒 Как найти работу junior-разработчику: 5 самых неочевидных способов
👍 Тесты на собеседовании: как к ним подготовиться и получить оффер
📝 Как правильно составить сопроводительное письмо программисту
🔍 ТОП-12 джоб-сайтов: где программисту разместить резюме и найти работу
🤖 40 сервисов на базе AI, которые помогут найти работу в 2023 году
💼 ТОП-9 не самых очевидных компаний для стажировки в ИТ
🗺️ Как программисту искать (и найти) работу за границей в 2023 году
🔝 Подборка полезных материалов для улучшения профиля на LinkedIn и не только
💾 Список каналов «Библиотеки программиста» с вакансиями

🤩Понравился пост? Проголосуйте за нас, чтобы мы могли публиковать сторис (требуется премиум).
4👍4🔥2
📚 ТОП-8 книг по DevOps в 2023 году

Список из 8 лучших книг, которые должны быть в библиотеке каждого начинающего и продвинутого DevOps-специалиста.

Читать статью

#книги
👍83🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
#memes

Когда работаешь строго по графику 😆😆
33🥰25🔥17👏12👍6
This media is not supported in your browser
VIEW IN TELEGRAM
#memes

Когда не решаешь таски, но продуктивно думаешь о них
😁15👍4🌚3🥰1
ErrImagePull — это ошибка, возникающая, когда с образом, указанным для контейнера, нельзя произвести retrieved или pull.

ImagePullBackOff — это период ожидания, пока с образом не случится pull fix.

Образы контейнеров

Одной из самых сильных сторон контейнеризации является возможность запуска любого образа за считанные секунды. Контейнер — это группа процессов, выполняющихся изолированно от базовой системы. Образ контейнера содержит все ресурсы, необходимые для запуска этих процессов: бинарники, библиотеки и необходимые конфиги.

Реестр контейнеров — это репозиторий образов, в котором выполняются два основных действия:

Push: загрузка образа для доступа из из репы
Pull: выгрузка образа для использование его в контейнере

В примерах к этой статье будет использоваться docker CLI, но можно использовать любой инструмент, реализующий спецификации Open Container Initiative для всех взаимодействий с реестром контейнеров.

Далее читайте здесь

#гайд
8
#туториал

🤔🤔 Что насчет запуска команд в bash параллельно?

Первый способ основан на символе &

#!/bin/bash

sleep 5 && echo "sleep 5_1" &
sleep 5 && echo "sleep 5_2" &
wait
echo "sleep 0"

Здесь первая и вторая команда запустятся параллельно. Через 5 секунд на экран выведутся 3 строчки sleep 5_1, sleep 5_2 и sleep 0.

Wait – команда, которая ожидает завершения определенного процесса и возвращает его состояние завершения.

Оболочка ждет (wait) пока завершатся два предыдущих процесса, прежде чем запустить следующую команду. Получается, все то, что в скрипте идет после wait, будет в режиме ожидания, пока не завершатся 2 sleep-а.

Уже похоже на асинхронность.

Теперь запустим в терминале последовательно такие команды:

sleep 60 &
sleep 90 &
sleep 120 &

На экран выведется что-то такое:

[1] 38161
[2] 38166
[3] 38167

Это PID-ы запущенных процессов. Но сейчас интересна команда jobs, которая позволяет напрямую взаимодействовать с процессами в текущей оболочке. Команда отображает состояние заданий в текущем сеансе.

Запускаем jobs и смотрим:

[1] Done sleep 60
[2]- Running sleep 90 &
[3]+ Running sleep 120 &

— список команд, которые запустились в фоне. Первое задание завершилось, а остальное еще в процессе.

Теперь посмотрим где всё это можно применить.

downloader(){
wget -q "$1"
}

while IFS= read -r url
do
downloader "$url" &
done < urls.txt

wait
echo "Завершено"

🍕Скрипт читает построчно файл url.txt
🍕 Передает каждую строчку в функцию downloader
🍕 Функция downloader каждый раз запускается в фоне
🍕 Происходит скачивание файла по ссылке
🍕 По завершению (wait) получаем complete

Файл url.txt представляет собой список прямых урлов на файлы, которые нужно скачать.

Символ & говорит — запусти всё одновременно и параллельно. Типа такого, с таким ты уже всяко встречался:

Можно все это сделать иначе. Есть утилита parallel: apt/yum/brew install parallel

Делает она то же самое, но имеет более гибкие настройки через параметры. Например, предыдущий пример со скачиванием файлов мог бы выглядеть таким образом:

parallel -j 4 wget -q {} < urls.txt

-j означает сколько джобов будет запараллелено.

А еще, есть «$!», она позволяет узнать PID последнего запущенного процесса:

sleep 60 &
[1] 39032
echo $!
39032

В первой команде запустили фоном ожидание 60 секунд, вывелся порядковый номер джобы и PID. Ну а чтобы получить последний PID, выполняем третью команду с «$!». На экран вывелся PID в чистом виде, а дальше можно его сохранить в переменную и уже проверять в скрипте, завершился он или нет.
👍2011🎉9🥰7🔥6