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

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

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

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

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
Создадим парсер, который будет из нужного конфига делать чистую болванку какого-нибудь софта, без комментариев и прочего ненужного.

Для примера будем работать с файлом php.ini и приведем его в юзер-френдли вид.

#!/bin/bash

sep=$2

while IFS= read -r var
do
[[ $var =~ ^$sep.* ]] || [[ ! $var =~ ' ' ]] && continue
echo "$var" >> $1.tpl
done < $1

Запускаем так:

./script.sh php.ini ";"

Передаем 2 параметра. Первый — имя файла-конфига, который будем читать и парсить. Второй — символ, которым комментируются строки в этом файле.

В нашем случае комментарии в файле идут после символа «;». Обращаем внимание, что второй параметр передаем в кавычках. Если передать напрямую, то оболочка не поймёт что от нее хотят и выпадет в panic.

Разбираем скрипт:

Присваиваем переменной sep, символ, который передали вторым параметром $2. У нас это символ «;».

Далее идет цикл, который построчно читает файл php.ini переданный в первом параметре $1 при запуске скрипта — можно передать любой файл.

IFS — разделяет строку с использованием символа в качестве значения

Логика цикла:

Если
первый символ равен символу «;», который уже лежит в переменной sep ИЛИ первый символ равен пустой строке, ТО передаем управление команде continue, которая проигнорирует запись в output файл. И так по кругу, пока не закончится файл.

Команда continue пропускает оставшиеся команды внутри тела цикла для текущей итерации и передает управление программой к следующей итерации цикла.

ВО ВСЕХ ДРУГИХ СЛУЧАЯХ, происходит запись в output файл, в котором будут содержаться только необходимые для работы параметры.

На выходе получится 2х килобайтный файл php.ini.tpl, без комментариев и прочего мусора.

Теперь можно сделать шаблон для ansible/puppet/chef.

В скрипте будут использованы простые регулярки.

$var =~ ^$sep.*

^ - соответствует началу текстовой строки
$sep - символ с помощью которого комментируют строки
.* - оставшийся кусок строки

#гайд
🥰31👍2514👏10🔥8
🤿🥽📟 TerraVision — это CLI-инструмент, который преобразует код Terraform в Professional Cloud Architecture Diagrams и решает проблему поддержания в актуальном состоянии документов в облачных проектах.
Terravision работает на стороне клиента без какой-либо зависимости от Terraform или доступа к облачной среде, чтобы динамически анализировать созданные ресурсы и переменные и автоматически генерировать визуальное представление вашей архитектуры. Terravision разработан как инструмент «Docs as Code» (DaC), который может быть включен в конвейер CI / CD для обновления архитектурных схем после этапов конвейера сборки / тестирования / релиза. В настоящее время он поддерживает AWS, а вскоре Google и Azure cloud.

Подробнее

#софт
7👍3
🚜🚛 blendOS — комбайн Ubuntu, Fedora и Arch Linux в одной системе

Операционная система blendOS 23.01 основана на Arch и GNOME на Wayland позволяет использовать приложения из других популярных ОС.

В blendOS можно использовать менеджеры пакетов из Arch Linux (pacman), из Fedora — это dnf, а из Ubuntu взяли apt, реализовав это все на контейнерах Distrobox/Podman. При первом запуске пакетных менеджеров Fedora или Ubuntu соответствующие контейнеры создаются автоматически и не требуют дополнительных действий.

Вся красота становится доступна при полноценной установке ОС, а еще, разрабы реализовали поддержку изолированных приложений Flatpak.

Изучить

#новость
👍93😍1
Разберем #дайджест из 8 инструментов для мониторинга и управления производительностью своей сетевой инфраструктуры.

🔺 ManageEngine OpManager. Обеспечивает глубокое понимание сетевых устройств, таких как маршрутизаторы, коммутаторы, брандмауэры, беспроводные устройства, соединения WAN, физические и виртуальные серверы, блоки хранения и всю сквозную инфраструктуру.

🔺 Auvik. Облачное ПО предлагает функции сетевого мониторинга, управления ИТ-активами, анализа сетевого трафика, простого мониторинга и устранения неполадок, управления распределенными сайтами и централизованной автоматизации.

🔺 PRTG. Инструмент может контролировать с помощью датчиков сетевые устройства, аппаратное обеспечение, приложения, базы данных, центры обработки данных, узлы виртуализации, серверы SharePoint. Может работать с доступом SNMP для подключения и мониторинга маршрутизаторов, коммутаторов и брандмауэров.

🔺 Nagios. Обеспечивает видимость критически важных сетевых компонентов в режиме реального времени, а также строит карту сети. Можно отслеживать сетевые узлы, службы, протоколы и производительность приложений, обеспечивая выявление и решение проблем на раннем этапе.

🔺 LogicMonitor. Облачная платформа для мониторинга инфраструктуры, сети, серверов, БД, облака, AIOps, а также анализа журналов, производительности приложений (APM) и т.д.

🔺 Zabbix. Бесплатный и опенсорсный инструмент работает как с опросом, так и с перехватом, при этом все отчеты, статистика и параметры конфигурации доступны через веб-интерфейс. Он также может использовать агенты для мониторинга сетевых узлов, где это применимо.

🔺 LibreNMS. Система мониторинга сети с открытым исходным кодом, основана на PHP, NGINX, MySQL / MariaDB. Работает на Linux. Предлагает автоматическое обнаружение сети, настраиваемые оповещения, доступ к API, биллинговую систему, автоматические обновления, распределенный опрос и мобильные приложения.

🔺 Datadog. Обеспечивает сквозную визуализацию производительности сети, производительность прикладного уровня и работоспособность сетевых компонентов. Прост в установке и использовании, имеет удобный интерфейс и предлагает быстрые запросы к журналам.
44🥰17🔥10👏9👍6
troubleshooting-kubernetes.en_en.v3 (1).pdf
789.6 KB
👀🤲 Наглядное руководство по устранению неполадок в развертывании Kubernetes

Вот вам схемка, которая поможет вам дефектовать и отдебажить ваши развертывания в Kubernetes.
Разбор очень подробный, с кодом, разъяснениями и комментариями.
11🔥4
👮‍♂️👮‍♂️ 3 октября пройдет вебинар DevSecOps: организация безопасной разработки на уровне процессов. Начало в 11:00.

На вебинаре будет обсуждаться, как создавать продукты, которые будут соответствовать требованиям безопасности, как автоматизировать разработку и доставку продукта там, где зависимости и условия меняются ежедневно.

Темы дискуссии:

👉 Что сегодня вкладывается в понятие DevSecOps
👉 Автоматизация тестирования безопасности на каждом этапе процесса разработки
👉 Автоматизация реакции на инциденты, стабилизация процесса функционирования приложения
👉 Governance и Compliance: как построить безопасный процесс разработки и соответствовать требованиям
👉 Облачные инструменты организации безопасной разработки на уровне процессов

Мероприятие будет полезно разработчикам и тимлидам команд разработки, DevOps и DevSecOps, руководителям и специалистам по информационной безопасности, техническим и ИТ-директорам.

Регистрация тут
5👍3
GoReplay — это опенсорсный инструмент мониторинга сети, который может записывать ваш трафик в реальном времени и использовать его для отслеживания, нагрузочного тестирования, мониторинга и детального анализа.

Установка

Загрузите последнюю версию бинарника и соберите

Как оно работает

Самый простейший вариант: sudo ./gor --input-raw :8000 --output-stdout который действует как tcpdump. Если у вас уже есть тестовая среда, вы можете сделать так: sudo ./gor --input-raw :8000 --output-http http://staging.env

Дополнительная информация: FAQ, Troubleshooting, Issues

#гайд
👍63
#вопросыссобеседования

Чему будет равно a?
a=5; true | { true && a=10; }

Ответ: а = 5. Потому что каждая команда конвейера исполняется в отдельном SubShell

efusion@cannabis:~$ a=5; true | { true && a=10; echo $a; }
10
efusion@cannabis:~$ echo $a
5
10🌚7
This media is not supported in your browser
VIEW IN TELEGRAM
Когда вас ДДОСят — вот самый правильный вариант решения проблемы 💪💪
👍123😁3
#дайджест бесплатных сертификационных курсов

🔵 Основы программирования для Linux. Курс нацелен на изучение основ программирования в операционной сиcтеме Linux. Он затрагивает базовый инструментарий и все основные компоненты: управление процессами, межпроцессные взаимодействия, сетевые возможности.

🔵 GIT. Программа поможет разобраться в трехэтапном рабочем процессе в GIT (системе контроля версий, или VCS) и настроить GIT в своей системе. Также научитесь создавать ветки и отслеживать файлы, а также создавать репозиторий в GIT, GitHub.

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

🔵 Microsoft Azure Essentials. Этот онлайн-курс расскажет о различных моделях доставки и ролях Azure. Вы узнаете о различных доступных службах Azure и тщательно изучите компоненты Azure. Кроме того, вы также получите информацию о службах Azure в различных регионах и получите подробную информацию о регионах Azure и менеджере ресурсов.

🔵 Специализация Python Scripting for DevOps. Научитесь разрабатывать и развертывать программное обеспечение с использованием Python. Эта специализация даст вам основы программирования, включая знания и навыки, необходимые для карьеры в области разработки программного обеспечения, информационных технологий и науки о данных.

🔵 Introduction to Cloud. Вы также узнаете о различных моделях облачных сервисов (IaaS, PaaS, SaaS) и моделях развертывания (публичное облако, частное облако, гибридное облако), ключевых компонентах облачной архитектуры (виртуализация, виртуальные машины, хранилища, сети, контейнеры) и новых облачных тенденциях (гибридное мультиоблачное, бессерверное, микросервисы, Cloud Native, модернизация приложений).
🥰47👍36🔥24👏23🤩22
🔥😎🤯 Развертывание non-deployable сервисов на ArgoCD и Kustomize, управляя пограничными состояниями

Условие примера, приведенного автором, требовало, чтобы была сохранена структура каталогов для сотен репозиториев при переходе от kubectl к подходу ArgoCD.

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

Ничего нового — в Spring Boot есть встроенный механизм, который склеивает все конфигурационные файлы вместе, но в Python, Javascript и других ЯП все не так просто. Такая функция поддерживается в Helm — можно объединить несколько файлов, которые объединятся и будут переданы вместе в шаблоны.

Проблема

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

Что же делать?

Kustomize можно настроить с помощью плагинов-генераторов — это скрипты или бинарники, запускаемые в контексте каталога, и в результате возвращают ресурсы Kubernetes в формате YAML.

Далее автор объединит пользовательскую логику в приложение Go, импортирует необходимые библиотеки, скомпилирует ее и выпустит в artifactory, например Nexus или JFrog.

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

#туториал
4🔥4
✍️ Библиотека программиста» находится в поиске переводчика и автора оригинальных статей

Тематика
● DevOps

Объем
● от 7 до 15 тыс. знаков без учета кода.
● 3-4 статьи в месяц.

Оплата
● 4к руб. за статью.
● перевод — 250 руб. за 1000 символов без учета кода.
● работаем с самозанятыми, ИП.

Статья публикуется на сайте proglib.io, в группе ВК (425к подписчиков), на канале «Библиотека программиста» (77к подписчиков) и в «Библиотеке devops’а» (6к подписчиков).

➡️ Заполнить анкету ⬅️
5👍3
🧑‍🏫🧑‍🏫🧑‍🏫 Что такое NOC-команда, и какие 5 KPI на нее вешать для улучшения аптайма вашей платформы

Network Operations Center — это команда, которая занимается 24/7 мониторингом системы и алертинга, и их первой линией поддержки. Команда понимает как делать базовый дебаг алертов и варнингов. Команда отвечает за полный цикл инцидент-менеджмента: то есть оркестрацию процесса фикса этого инцидента, и артефактами после того как все случилось.

Как обычно с любым процессом, всплывают роли, артефакты и события.

Роли:

🔹 NOC-команда, которая мониторит;
🔹 Incident Commander — это Engineering Manager, который ответственен за валидацию дебага и исправлением инцидента;
🔹 Incident Team — дежурящие инженеры.

Артефакты:

🔹 Root Cause Analysis (RCA) — пост-мортем (ниже будет);
🔹 Runbook — источник знаний по каждой метрике и алерту, как они могут влиять на пользователей и систему, а также как их дебажить и эскалировать.

События:

🔹 Post-Mortem — в котором вы анализируете и пишете Root Cause Analysis документ;
🔹 Incident — когда все горит и очень опасно.

К примеру, у вас есть у вас дашборд с критическими системными метриками SaaS-платформы в Grafana и команда мониторит этот дашборд. На каждый чарт в этом дашборде есть некие показатели и паттерны поведения, которые команда отслеживает. Все эти правила лежат в Runbook (справочнике). Если что-то упало — нужно смотреть что это значит, и определять можно ли это NOC-команде подебажить (вдруг ночью упала пиковая нагрузка), пофиксить (рестарт сервера), или эскалировать саппорту или инженерам.

Подробнее здесь

#обучалка
9👍4
Находитесь в поиске нормальной вакансии?
Вы уже подумали за вас и у нас есть канал вам в помощь.
Сохраняйте, чтобы не потерять
4🔥2
#туториал

Нужно найти какой-то файл?
Нет, не find!

🔎 Утилита locate используется для поиска файлов, расположенных на машине пользователя или на сервере, опираясь на собственную БД.

Обновление БД происходит автоматически, +- раз в сутки или командой updatedb.

locate txt

Ищем все файлы, имена которых содержат «txt». Опа, меньше чем за секунду команда нашла все подходящие файлы, а find потратил бы гораздо больше времени.

locate '*txt' Ищем файлы, которые оканчиваются на «txt»

Посчитаем общее количество файлов, которые нашлись: locate -ic '*txt'

(-i — не смотрим на регистр, -с — вывести общее количество найденных файлов)

Углубимся немного и заюзаем strace.

В папке tmp создадим пустой файл: > hello.txt

locate *txt

Ничего не вывел 🤔

Мы вызываем внешнюю команду locate, которую вызывает интерпретатор. И тут всплывает подстановка имен файлов, то есть Globbing.

🧑‍🎓 После того, как интерпретатор обнаружил символ «*», интерпретатор попытался сделать подстановку Globbing. При вызове команды locate она получила в качестве аргументов, результат этих подстановок. Запускаем:

strace -e execve locate *txt

Получаем:

execve("/usr/bin/locate", ["locate", "hello.txt"], 0x7ffe242252d8 /* 27 vars */) = 0

Опция e и аргумент execve сообщают strace, что отслеживаются только системные вызовы execve.

execve() выполняет программу, заданную параметром filename

Возвращаемся к выводу от strace и видим, что locate получила в качестве аргумента hello.txt

И теперь locate будет искать файлы именно по этому шаблону, а не по тому, что мы ожидали, когда писали *txt. Поэтому ничего не вывелось, когда запустили locate *txt

Чтобы этого не происходило ⚠️ всегда используйте кавычки для ожидаемого результата.

locate '*txt'
👍114
🧑‍🎓😎 Еще одна серия с мероприятия OFFZONE 2023.
Здесь собираются безопасники, разработчики, инженеры, исследователи, преподаватели и студенты из десятков стран мира. В центре внимания — только хардкорный технический контент по кибербезопасности.

Деобфускация и анализ клиентского JavaScript‑кода для обнаружения DOM‑based XSS

Основная цель доклада — описание нового, разработанного докладчиком, автоматизированного метода анализа JavaScript‑кода, использующего статический и динамический анализ, а также сравнение результатов его работы с существующими автоматизированными сканерами веб‑уязвимостей

Смотреть
👍54
HyperDX — помогает инженерам быстрее понять, почему прерывается продакшн, с помощью централизованных журналов, метрик, трассировок и исключений в одном месте. Крутая опенсорсная альтернатива Datadog и New Relic, удобная для разработчиков.

Что включено

🕵️ End to end корреляция от сеанса браузера к журналам и трассировкам всего за несколько кликов
🔥 Высокая производительность благодаря Clickhouse
🔍 Интуитивно понятный полнотекстовый поиск и синтаксис поиска свойств
🤖 Автоматическая кластеризация шаблонов событий
📈 Панель мониторинга событий без сложного языка запросов
🔔 Настройка оповещений
🔭 Нативная Open Telemetry

Вы можете начать с развертывания полного стека с помощью Docker Compose:

docker compose up -d

После этого можно перейти на http://localhost:8080 чтобы получить доступ к UI HyperDX.
10