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

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

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

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

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
Знали ли вы про такую команду в linux как - «yes»?

Команда yes служит для вывода в стандартный поток (stdout) строки «y» или любой другой строки. Если ее запустить по умолчанию, команда будет бесконечно сыпать строку «y».


Например, есть у вас консольная команда, которая во время своей работы будет запрашивать подтверждение: а вы точно уверены, что удаляете тестовую базу данных? Вот на такие случаи и нужна команда «yes», чтобы не руками вводить подтверждение, а делегировать это действие.

Полезно для пайплайнов. Бывает такое, что у программы нет ключей типа apt -y install, а подтверждать как-то в автоматическом режиме нужно.

Синтаксис проброса стандартный, через систему пайпов:

yes | apt install nginx


В примере выше, когда пакетный менеджер попросит нажать Y, команда «yes» автоматически это сделает и начнется процесс установки.

Не забываем, про передачу аргументов, если внешняя программа например хочет чтобы вы ввели слово: «hello» делаем так:

yes hello | apt install nginx


Но обычно на практике, в 99% случаев команда «yes» запускается без аргументов, так как большинство запрашивает именно Yes.


Если есть команда «yes», значит должна быть и «no». Но увы 😁. Так вот если нужно отменить, передайте в «yes» аргументом строку «no» 💩.

Что-то может запросить простого нажатия Enter, например когда в репозиторий добавляется gpg ключ. Как послать Enter? А вот так:

yes "" | <твоя команда>


Это сработает как Enter потому, что команда «yes» выводит в stdout не просто сроку Y, но еще и завершает ее в конце символом Enter. Вот именно поэтому при запуске чистого «yes», строчки на экране будут идти столбиком.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍241🔥1
📍📍DevToys

DevToys помогает с ежедневными задачами разработки, такими как форматирование JSON, сравнение текста и тестирование регулярок. Нет необходимости использовать множество сервисов для выполнения простых задач. Благодаря интеллектуальному обнаружению DevToys может определить наилучший инструмент для применения к данным, скопированным в буфер обмена Windows. Приложение можно расположить его поверх других окон и использовать несколько его экземпляров.

Среди функций: конвертер JSON в YAML, MD5, SHA1, SHA256, SHA512, валидатор XML, превью разметки Markdown и даже симулятор дальтонизма.

Изучить инструмент

#туториал
❤‍🔥24👍6👏1
🧑‍🎓😎 Еще одна серия с мероприятия OFFZONE 2023

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

Фаззинг-тестирование — одна из базовых технологий, применяемых при разработке безопасного ПО. Осмысленное и продуктивное применение фаззинга требует его глубокой интеграции в процессы разработки ПО и установления связей с другими технологиями: анализом поверхности атаки, функциональным тестированием, санитайзерами, автоматизированным разбором выявленных сбоев.

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

#видео
4🔥1
🤔 Очередной #дайджест для DevOps-ов

♦️ k8s-calico-networksets-controller — добавление поддержки FQDN в NetworkPolicy

♦️ Ветер перемен для обнаружения угроз — проблемы rule-based detections в runtime в контейнерных средах

♦️ wireguard-ui — веб-интерфейс для управления и настройки Wire Guard.

♦️ Ускорение запуска поды, используя слои образов с помощью Spegel — как можно значительно ускорить процесс запуска, не теряя в последствии в производительности

♦️ «Свои грабли» detected — Hashicorp way, на тропе просветления
🎉21👍21🔥1
#вопросы_с_собеседования

Если доступной (available) памяти 2919, почему свободной (free) памяти 843?

Total. Эта цифра представляет всю существующую память.
Used вычисление общего значения оперативной памяти системы за вычетом выделенной свободной, разделяемой, буферной и кэш-памяти.
Free — свободная память в системе.
Shared — память, используемая (преимущественно) в tmpfs
Buffer и Cache идентифицируют память, используемую для нужд ядра / ОС. Буфер и кеш складываются вместе, а сумма указывается в разделе buff/cache.
Available — примерное количество оперативной памяти, доступное для запуска новых приложений без использования ими раздела подкачки. В отличие от поля free, это поле принимает в расчёт cache и также то, что не вся пригодная для повторного использования память будет возвращена после освобождения.
❤‍🔥26👍4🥰21
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
1
CheatSheet по Расширенным параметрам в Bash.

Что такое расширенные параметры? Допустим у вас есть переменная ${var%}, что такое знак %?

${var%} удалит короткий суффикс
$(var%%} удалит длинный суффикс
${var#} & ${var##} удалит короткий и длинный префикс

var='hello world'
echo ${var%world}


На экран выведется слово hello. То есть произошло удаление короткого суффикса. Вот еще пример:

var='hello world'
echo ${var%o*} # hello w
echo ${var%%o*} # hell

Более подробно про расширенные параметры можно почитать на официальной странице.


PDF-ку можно забрать отсюда.
👍8👏85🔥5🎉3
🎉🎉 Docker Desktop 4.26: Rosetta, PHP Init, Builds View GA, Admin Enhancements и Docker Desktop Image для Microsoft Dev Box

В Docker Desktop 4.26 представлены последние достижения Rosetta в области оптимизации рабочего стола Docker. Новая версия также повышает производительность разработчиков, решая такие распространенные проблемы, как Node.js зависания и ошибки сегментации PHP, а также повышает производительность благодаря повышению скорости и новому представлению сборок Docker Desktop.

Вот тут можете детальнее изучить, что происходит

#новость
4🔥1
🤔😱 Траблшутинг BGP

BGP — это сложный протокол маршрутизации, и бывают ситуации, когда что-то идет не так как надо. Кроме того, что он сложный, он также совершенно отличается от наших IGP протоколов (OSPF и EIGRP). В материале повествование начнется с рассмотрения неполадок, возникающих в установлении соседства BGP и проблем с объявлением маршрутов, которые должны или не должны появляться

Изучить

#туториал
🎉10🤩10👍6👏1
🤔 Очередной #дайджест для DevOps-ов

🔺 Валидация данных при помощи Pydantic — зачем это нужно, чем софт лучше marshmallow, как пользоваться и как с его помощью правильно проверять данные

🔺 snips.sh — pastebin сервис, работающий по SSH и доступный как в tui, так и в веб-морде

🔺 Formatting an XFS Filesystem — инженеры Oracle пишут о работе mkfs.xfs и о том, что происходит в процессе форматирования раздела в этой файловой системе

🔺 Установка размера кучи Java внутри контейнера Docker — запуск Java-приложений в контейнере может показаться тривиальной задачей, но есть некоторые подводные камни...

🔺 Траблшутинг отсутствующих журналов Kubernetes в Elasticsearch — рассказ о том, почему это происходит и как это предотвратить
🤩16❤‍🔥132🔥1
😇🤲 Роль информационной безопасности в наше время — не остановить все инциденты, а не допустить нанесение ущерба

Контейнеризированные среды благоволят реализовывать концепцию Zero Trust, потому что они сами приносят определенные уровни изоляции и, непосредственно, есть дополнительные инструменты, как самой системы оркестрации, так и системы Linux, которая нам это позволяет делать. Проще сред чем контейнеризированная для оркестрации и для того, чтобы реализовывать модель Zero Trust, нет.

В концепции Zero Trust мы ничему не доверяем, то есть у нас нет такого понятия, как доверенное окружение, доверенный компонент или среда. Мы изначально исходим из концепции, что везде может быть уязвимость, вредоносный код и другие проблемы. Изначально, до обнаружения проблем, мы закладываем, что они уже могут существовать и система может, возможно, уже скомпрометирована.

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

#почитать
👍2🔥2
ZRAM позволяет сжимать оперативную память на лету и таким образом увеличить ее объём.

При включении zram, сжатие переносит часть нагрузки на процессор, но использование zram действительно может улучшить производительность.

Также есть zswap, которая сжимает данные в разделе подкачки. И которая по умолчанию включена почти во всех официальных ядрах.

Проблема zswap заключается в том, что его приоритет выше чем у zram, который остается неиспользуемым. Чтобы решить эту проблему, нужно отключить zswap в ядре.

CONFIG_ZSWAP_DEFAULT_ON=N


Но чтобы применить эту опцию, нужно пересобрать ядро. Пойдем легким путем и выключим zswap через загрузчик grub.

Редактируем файл /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="zswap.enabled=0" loglevel=3 quiet "


Не забываем перегенирировать конфиг grub:

grub-mkconfig -o /boot/grub/grub.cfg


Перезагружаем машину и проверяем отключение zswap:

cat /sys/module/zswap/parameters/enabled


Если вывелась буква N — значит все правильно.

Ну и наконец включаем zram. Для этого пишем bash скрипт и кидаем его в автозагрузку:

#!/bin/bash

modprobe zram
mkdir /sys/block/zram0
echo lz4 > /sys/block/zram0/comp_algorithm
echo 1G > /sys/block/zram0/disksize
echo 2 > /sys/block/zram0/max_comp_streams
mkswap --label zram0 /dev/zram0
swapon --priority 100 /dev/zram0


1. Загружаем модуль zram
2. Выбираем алгоритм сжатия lz4 (либо zstd)
3. Объем zram 1гиг физической оперативки
4. 2 это количество потоков сжатия (потоки процессора)
5. Создаем блочное устройство и включаем его

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

Если заморачиваться с bash скриптами не хочется, ставим утилиту которая будет работать через systemd.

apt install systemd-zram-generator


Правим конфиг /etc/systemd/zram-generator.conf

[zram0]
zram-size = ram
compression-algorithm = lz4


Активируем и запускаем:

systemctl daemon-reload
systemctl start /dev/zram0


Всё! Теперь оно само будет запускаться без лишних движений.
👍10🎉7🥰65🔥5
🥷💥 Container Security Fundamentals

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

#видео
👍32
💪💪 Kubernetes V1.27 : Защита поды с помощью MemoryThrottlingFactor

В стремлении к совершенству управления ресурсами в Kubernetes 1.22 появилась важная функция — ограничения памяти. Это позволило пользователям устанавливать явные границы использования памяти, предотвращая чрезмерное потребление ресурсов контейнерами.

Запросы к памяти и ограничения стали ключевыми с появлением ограничений памяти в Kubernetes. Эти элементы играют решающую роль в точной настройке распределения ресурсов внутри кластера.

Продолжение тут

#туториал
13🎉13👏2