🗓 21 мая, 16:00
📌 Как развернуть приватные инсталляции Kubernetes в публичном облаке с помощью Terraform?
Коллеги из поддерживают сотни клиентских серверов, в том числе Highload-кластеры крупных компаний. На практическом вебинаре они покажут, как развернуть приватную инсталляцию в публичном облаке и поднять кластер Kubernetes с помощью Terraform. А еще обещают поделиться опытом и кейсами клиентов. Вебинар будет интересен системным администраторам, DevOps-инженерам и всем, кто работает с Kubernetes.
Основные темы:
◽ Kubernetes и Terraform
◽ Публичное и частное облако
◽ Облачный роутер и Firewall
Задавайте вопросы через форму регистрации или в чате трансляции — спикеры ответят на них в конце вебинара. Авторам самых интересных подарят плюшевых Тирексов. Все зарегистрированные участники получат запись трансляции и примеры готовых манифестов Terraform.
Зарегистрироваться: https://slc.tl/bz6mj
Реклама ООО «Селектел» erid 2VtzqvtiJoc
📌 Как развернуть приватные инсталляции Kubernetes в публичном облаке с помощью Terraform?
Коллеги из поддерживают сотни клиентских серверов, в том числе Highload-кластеры крупных компаний. На практическом вебинаре они покажут, как развернуть приватную инсталляцию в публичном облаке и поднять кластер Kubernetes с помощью Terraform. А еще обещают поделиться опытом и кейсами клиентов. Вебинар будет интересен системным администраторам, DevOps-инженерам и всем, кто работает с Kubernetes.
Основные темы:
◽ Kubernetes и Terraform
◽ Публичное и частное облако
◽ Облачный роутер и Firewall
Задавайте вопросы через форму регистрации или в чате трансляции — спикеры ответят на них в конце вебинара. Авторам самых интересных подарят плюшевых Тирексов. Все зарегистрированные участники получат запись трансляции и примеры готовых манифестов Terraform.
Зарегистрироваться: https://slc.tl/bz6mj
Реклама ООО «Селектел» erid 2VtzqvtiJoc
🎉 Результаты розыгрыша:
Победители:
1. Dmitry ()
2. Ренат
3. КорМан ()
Проверить результаты
Победители:
1. Dmitry ()
2. Ренат
3. КорМан ()
Проверить результаты
Грузить не буду, как-никак выходные. Подкину интересного чтива. Если коротко — автор статьи предлагает использовать в скриптах для комментариев, команду «:» вместо символа «#».
Это позволяет видеть комментарии в режиме отладки. Подход имеет ряд некоторых проблем, но общая концепция весьма интересна.
✔️ COLODEBUG: a simple way to improve bash script debugging.
Статья на иностранном, но с переводчиком всё понятно. Изучайте.
tags: #bash #linux
—
🔔
Это позволяет видеть комментарии в режиме отладки. Подход имеет ряд некоторых проблем, но общая концепция весьма интересна.
✔️ COLODEBUG: a simple way to improve bash script debugging.
Статья на иностранном, но с переводчиком всё понятно. Изучайте.
tags: #bash #linux
—
🔔
Сегодня дождливый день, даже материться не хочется.
Поэтому потыкаем strace и файловый менеджер.
Для экспериментов я взял десктопный линукс на 22 убунте + gnome. Внутри моего гнома зашит файловый менеджер Nautilus. Но подойдет абсолютно любой дистрибутив и любой файловый менеджер например kde/dolphin.
Для начала создаём файл:
Этот файл я приправил магическими числами
Так, запускаем:
Не забудь указать актуальное название своего файлового менеджера, у меня nautilus, у тебя может быть другой.
После запуска в файловом браузере откроется папка tmp, в ней мы увидим наш файл bashdays. Иконка у этого файла соответствует иконке bz2 архива.
Теперь возвращаемся в терминал с strace и смотрим что произошло.
В выводе наблюдаем обращение к файлу
Отлично! Мы на верном пути. Теперь закрываем файловый менеджер, тормозит ранее запущенный strace. И добавляем к файлу расширение txt.
Снова запускаем strace:
И видим другую картину:
Отсутствуют системные вызовы связанные с чтением файла. А файловый менеджер интерпретировал это как текстовый файл. Сменилась иконка.
Если сейчас кликнуть на этом файле 2 раза, то файл откроется в текстовом редакторе.
✔️ Делаем выводы
Если у файла есть расширение, то файловый менеджер полагается на него и не производит никаких действий с файлом.
А если расширение не указано, то происходит анализ содержимого. В моём случае файловый менеджер нашел сигнатуру bz2 и автоматически решил что это архив.
Чтобы определить тип файла, можешь воспользоваться командой:
Вот такая вот логика зашита в кишочках.
Хорошей тебе рабочей недели, изучай!
tags: #linux #debug
—
🔔
Поэтому потыкаем strace и файловый менеджер.
Для экспериментов я взял десктопный линукс на 22 убунте + gnome. Внутри моего гнома зашит файловый менеджер Nautilus. Но подойдет абсолютно любой дистрибутив и любой файловый менеджер например kde/dolphin.
Для начала создаём файл:
echo -ne '\x42\x5a\x68' > /tmp/bashdays
Этот файл я приправил магическими числами
hex:42 5a 68
, что равносильно формату файла: bz2.Так, запускаем:
strace -o'|cat' -P /tmp/bashdays -qqqyf nautilus /tmp 2> /dev/null
Не забудь указать актуальное название своего файлового менеджера, у меня nautilus, у тебя может быть другой.
После запуска в файловом браузере откроется папка tmp, в ней мы увидим наш файл bashdays. Иконка у этого файла соответствует иконке bz2 архива.
Теперь возвращаемся в терминал с strace и смотрим что произошло.
openat("/tmp/bashdays", O_RDONLY) = 25</tmp/bashdays>
read(25</tmp/bashdays>, "BZh", 4096) = 3
close(25</tmp/bashdays>) = 0
В выводе наблюдаем обращение к файлу
/tmp/bashdays
, дополнительно видим что файл был прочитан. Также видим что была определена сигнатура файла BZh
.Отлично! Мы на верном пути. Теперь закрываем файловый менеджер, тормозит ранее запущенный strace. И добавляем к файлу расширение txt.
mv /tmp/bashdays /tmp/bashdays.txt
Снова запускаем strace:
strace -o'|cat' -P /tmp/bashdays.txt -qqqyf nautilus /tmp 2> /dev/null
И видим другую картину:
statx("/tmp/bashdays.txt")
Отсутствуют системные вызовы связанные с чтением файла. А файловый менеджер интерпретировал это как текстовый файл. Сменилась иконка.
Если сейчас кликнуть на этом файле 2 раза, то файл откроется в текстовом редакторе.
✔️ Делаем выводы
Если у файла есть расширение, то файловый менеджер полагается на него и не производит никаких действий с файлом.
А если расширение не указано, то происходит анализ содержимого. В моём случае файловый менеджер нашел сигнатуру bz2 и автоматически решил что это архив.
Чтобы определить тип файла, можешь воспользоваться командой:
file /tmp/bashdays.txt
Вот такая вот логика зашита в кишочках.
Хорошей тебе рабочей недели, изучай!
tags: #linux #debug
—
🔔
📚 Здесь собраны все вопросы, которые могут спросить на собеседовании. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам. Просто выбери своё направление:
1. Frontend / JavaScript
2. Python
3. Java
4. Тестировщик QA
5. Data Science
6. DevOps
7. C#
8. С/C++
9. Golang
10. PHP
11. Kotlin
12. Swift
1. Frontend / JavaScript
2. Python
3. Java
4. Тестировщик QA
5. Data Science
6. DevOps
7. C#
8. С/C++
9. Golang
10. PHP
11. Kotlin
12. Swift
Воплоти свои идеи в жизнь и получи специальный приз от immers.cloud и Bashdays!
📋 Условия:
Тебе необходимо в течении 48 часов создать необычное изображение при помощи предустановленного образа Stable Diffusion от immers.cloud. Победитель получит 10,000 руб на пополнение баланса от immers.cloud, а также специальный приз от Bashdays.
Правила простые:
1️⃣ Регистрация: Зарегистрируйся на платформе Immers.cloud. Не забудь включить в свой никнейм на сайте (username) слово "bash" - это важно для участия в конкурсе.
2️⃣ Активация бонуса: После регистрации перейди по ссылке, чтобы активировать бонус в 2,000 рублей, которые ты сможешь использовать в рамках конкурса.
3️⃣Выбор образа и настройка: Перейди по ссылке на предустановленный образ Stable Diffusion. Важно выбрать видеокарту 3090 или 4090 при настройке конфигурации.
4️⃣Творчество: После получения доступа к образу начни творить! Используй воображение и Искусственный Интеллект, чтобы создать нечто удивительное и уникальное.
5️⃣Отправка работ: Отправь свою ...
📋 Условия:
Тебе необходимо в течении 48 часов создать необычное изображение при помощи предустановленного образа Stable Diffusion от immers.cloud. Победитель получит 10,000 руб на пополнение баланса от immers.cloud, а также специальный приз от Bashdays.
Правила простые:
1️⃣ Регистрация: Зарегистрируйся на платформе Immers.cloud. Не забудь включить в свой никнейм на сайте (username) слово "bash" - это важно для участия в конкурсе.
2️⃣ Активация бонуса: После регистрации перейди по ссылке, чтобы активировать бонус в 2,000 рублей, которые ты сможешь использовать в рамках конкурса.
3️⃣Выбор образа и настройка: Перейди по ссылке на предустановленный образ Stable Diffusion. Важно выбрать видеокарту 3090 или 4090 при настройке конфигурации.
4️⃣Творчество: После получения доступа к образу начни творить! Используй воображение и Искусственный Интеллект, чтобы создать нечто удивительное и уникальное.
5️⃣Отправка работ: Отправь свою ...
✨ 10 мест в твоём городе где можно потрахаться.
Лидером, конечно же остается Linux.
А сегодня на повестке дня, снова твой любимый strace и замечательная опция -T, которая позволяет находить ботлнэк (узкое место).
В посте будут встречаться лютые «франкенштейны», но ты сразу не уходи, я кратенько всё разжую и ты проникнешься. Бля буду!
Запускаем «франкенштейна»
✔️ Для начала давай разберем эту кишку:
s0 = размер буфера, строки не обрезаются
o/nl/&2 = вывод в стандартную ошибку на утилиту nl
nl = утилита нумерует строки
T = затраченное время на системный вызов
y = показывать симлинки для файловых дескрипторов
qqq = отключаем лешний шлак
f = трассируем дочерние процессы
e = трассировка только write
dd = читает из random блоками 4096 и пишем по 23 блока
дальше скармливаем это while
while = читает данные побайтно (-n1) без обработки символов конца строки (-r)
Вывод сокращаю, чтобы не так погано смотрелось:
Смотрим на последний столбик, видим аномалию после 16 строки, время выполнения существенно увеличилось. Поздравляю мы нашли bottleneck (узкое место).
Теперь давай разберемся с этим узким местом. Что произошло, почему все стало тормозить?
Умножаем блок 4096 на номер строки 16, получаем = 65536. Знакомая цифра? Знакомая!
65536 это ёмкость пайпа (канала), по достижению предела пишущий процесс заблокировался, пока не было прочитано и освобождено достаточно места.
Подробнее можешь почитать в мане:
Бонусом команда, которая протестирует ёмкость пайпа:
Если dd сообщает о недоступности стандартного вывода, значит тест удался. У меня получилось так:
Вот так находясь на границе между кодом приложения и кодом ядра можно увидеть тонкие моменты. Изучай!
tags: #linux #debug
—
🔔
Лидером, конечно же остается Linux.
А сегодня на повестке дня, снова твой любимый strace и замечательная опция -T, которая позволяет находить ботлнэк (узкое место).
В посте будут встречаться лютые «франкенштейны», но ты сразу не уходи, я кратенько всё разжую и ты проникнешься. Бля буду!
Опция -T выводит разницу во времени между запуском и завершением системного вызова. Применяется для того, чтобы увидеть момент, когда конкретный вызов начал тормозить (встал раком) на фоне предыдущих.
Запускаем «франкенштейна»
strace -s0 -o'|nl >&2' -Tyqqqfe write dd if=/dev/random bs=4096 count=23 status=none | while read -rn1;do : ;done
✔️ Для начала давай разберем эту кишку:
s0 = размер буфера, строки не обрезаются
o/nl/&2 = вывод в стандартную ошибку на утилиту nl
nl = утилита нумерует строки
T = затраченное время на системный вызов
y = показывать симлинки для файловых дескрипторов
qqq = отключаем лешний шлак
f = трассируем дочерние процессы
e = трассировка только write
dd = читает из random блоками 4096 и пишем по 23 блока
дальше скармливаем это while
while = читает данные побайтно (-n1) без обработки символов конца строки (-r)
Вывод сокращаю, чтобы не так погано смотрелось:
01 write() = 4096 <0.004691>
02 write() = 4096 <0.000010>
03 write() = 4096 <0.000009>
04 write() = 4096 <0.000009>
05 write() = 4096 <0.000009>
06 write() = 4096 <0.000009>
07 write() = 4096 <0.000009>
08 write() = 4096 <0.000009>
09 write() = 4096 <0.000009>
10 write() = 4096 <0.000009>
11 write() = 4096 <0.000009>
12 write() = 4096 <0.000009>
13 write() = 4096 <0.000009>
14 write() = 4096 <0.000009>
15 write() = 4096 <0.000009>
16 write() = 4096 <0.000009>
17 write() = 4096 <0.014406>
18 write() = 4096 <0.023782>
19 write() = 4096 <0.023870>
20 write() = 4096 <0.023944>
21 write() = 4096 <0.023815>
22 write() = 4096 <0.024032>
23 write() = 4096 <0.024088>
Смотрим на последний столбик, видим аномалию после 16 строки, время выполнения существенно увеличилось. Поздравляю мы нашли bottleneck (узкое место).
Теперь давай разберемся с этим узким местом. Что произошло, почему все стало тормозить?
Умножаем блок 4096 на номер строки 16, получаем = 65536. Знакомая цифра? Знакомая!
65536 это ёмкость пайпа (канала), по достижению предела пишущий процесс заблокировался, пока не было прочитано и освобождено достаточно места.
Подробнее можешь почитать в мане:
man 7 pipe
(раздел Pipe capacity).Бонусом команда, которая протестирует ёмкость пайпа:
sh -c '( dd if=/dev/zero obs=1 oflag=nonblock || pkill -P $$ -x "sleep" ) | sleep 300'
Если dd сообщает о недоступности стандартного вывода, значит тест удался. У меня получилось так:
dd: writing to 'standard output': Resource temporarily unavailable
129+0 records in
65536+0 records out
65536 bytes (66 kB, 64 KiB) copied, 0.0195754 s, 3.3 MB/s
Terminated
Вот так находясь на границе между кодом приложения и кодом ядра можно увидеть тонкие моменты. Изучай!
tags: #linux #debug
—
🔔
Все о безопасной разработке расскажут на PHDays Fest 2 в Лужниках 23-26 мая. Positive Technologies вместе с сообществом POSIdev подготовили несколько секций с докладами для разработчиков:
🔥 General development
🔥 Development Security
🔥 Platform Engineering
🔥 Data Engineering
🔥 Team Lead
🔥 Python совместно с сообществом Moscow Python
🔥 Dev tools, languages & frameworks
Спикеры из Samokat, Тинькофф, СберМаркет, Yandex Cloud, Kaspersky, Lamoda Tech, Aвито, Positive Technologies и других компаний расскажут про архитектуру распределенных систем, безопасную разработку приложений, алгоритмы, языки и инструменты разработки, управление командой и не только.
В перерывах можно будет поиграть в IT-крокодила, решить безопасный кроссворд, выиграть полезную книгу или просто отдохнуть в лаунж-зоне. А в субботу, 25 мая, участвуйте в воркшопах экспертов из Positive Technologies, Yandex Cloud и Hilbert Team, Wildberries или в олимпиаде по программированию.
👉 Программа
👉 Регистрация
🔥 General development
🔥 Development Security
🔥 Platform Engineering
🔥 Data Engineering
🔥 Team Lead
🔥 Python совместно с сообществом Moscow Python
🔥 Dev tools, languages & frameworks
Спикеры из Samokat, Тинькофф, СберМаркет, Yandex Cloud, Kaspersky, Lamoda Tech, Aвито, Positive Technologies и других компаний расскажут про архитектуру распределенных систем, безопасную разработку приложений, алгоритмы, языки и инструменты разработки, управление командой и не только.
В перерывах можно будет поиграть в IT-крокодила, решить безопасный кроссворд, выиграть полезную книгу или просто отдохнуть в лаунж-зоне. А в субботу, 25 мая, участвуйте в воркшопах экспертов из Positive Technologies, Yandex Cloud и Hilbert Team, Wildberries или в олимпиаде по программированию.
👉 Программа
👉 Регистрация
Привет. Я обычно предпочитаю строгие терминалы, которые — белым по черному. Но вчера у коллеги подсмотрел свистоперделку и тоже захотелось. Эх, вроде всегда топлю против новогодних ёлок, но тут не устоял и захуячил себе.
Обращаем внимание на задний фон в терминале, в нем проигрывается gif’ка.
А всё что выводится на экран это результат работы утилиты lolcat, которая делает праздник из любого тухлого выхлопа.
Как поставить такой видео фон? Для WSL это не проблема, добавляем строчки в json конфиг и всё из коробки поднимается:
Регулируем прозрачность и наслаждаемся.
А вот в нативном линуксе, придется изъебнуться. 99999% терминалов не поддерживает gif и mp4.
Некий персонаж смог такое реализовать через terminology. Но тут уже сам ковыряй. Единственное, что могу скинуть, это как случа...
Обращаем внимание на задний фон в терминале, в нем проигрывается gif’ка.
А всё что выводится на экран это результат работы утилиты lolcat, которая делает праздник из любого тухлого выхлопа.
Эту утилиту я привел для примера, так, поугарать, мож пранканешь кого-нибудь.
Как поставить такой видео фон? Для WSL это не проблема, добавляем строчки в json конфиг и всё из коробки поднимается:
"backgroundImage": "C:\\\\pixelart\\b1.gif",
"backgroundImageOpacity": 0.28,
Регулируем прозрачность и наслаждаемся.
Гифки в стиле пиксель арт я собрал и залил на яндекс-диск, забирай.
А вот в нативном линуксе, придется изъебнуться. 99999% терминалов не поддерживает gif и mp4.
Некий персонаж смог такое реализовать через terminology. Но тут уже сам ковыряй. Единственное, что могу скинуть, это как случа...
🔥 Positive Technologies представила коммерческую версию второго метапродукта — MaxPatrol Carbon
По данным исследования готовности российских организаций противостоять кибератакам, основными сложностями при выполнении задач по усилению защищенности ИТ-инфраструктуры являются:
• Дефицит времени на выполнение всех поставленных задач.
• Недостаток компетенций для формирования задач.
• Отсутствие эффективной коммуникации между командами ИБ и ИТ.
MaxPatrol Carbon берет эти задачи на себя: метапродукт помогает подготовить ИТ-инфраструктуру к отражению атак и обеспечивает непрерывный контроль киберустойчивости, делая невозможным причинение ущерба компании.
Метапродукт позволяет действовать превентивно: он анализирует, как в конкретной инфраструктуре могут быть совершены кибератаки, и формирует практические рекомендации для усиления ее защиты.
Все подробности о новинке можно найти на сайте вендора.
По данным исследования готовности российских организаций противостоять кибератакам, основными сложностями при выполнении задач по усилению защищенности ИТ-инфраструктуры являются:
• Дефицит времени на выполнение всех поставленных задач.
• Недостаток компетенций для формирования задач.
• Отсутствие эффективной коммуникации между командами ИБ и ИТ.
MaxPatrol Carbon берет эти задачи на себя: метапродукт помогает подготовить ИТ-инфраструктуру к отражению атак и обеспечивает непрерывный контроль киберустойчивости, делая невозможным причинение ущерба компании.
Метапродукт позволяет действовать превентивно: он анализирует, как в конкретной инфраструктуре могут быть совершены кибератаки, и формирует практические рекомендации для усиления ее защиты.
Все подробности о новинке можно найти на сайте вендора.
Здрасти. Если открыть два терминала, в первом ввести команду ls -la, а во втором history, то во втором терминале, ты не увидишь в истории команду ls -la.
Хотя сервер один и тот же. И не увидишь ты эту команду в истории, пока не завершишь сессию в первом терминале, либо не сделаешь определенный финт ушами. Пиздец неудобно!
✔️ Финт ушами в первом терминале:
a = пишем текущую историю сессии в файл
с = очищаем текущую сессию
r = перезагружаем файл истории
Теперь если перезайти во второй терминал, то увидишь там команду ls -la, то есть история как бы синхронизировалась. Это хорошо, но недостаточно хорошо!
Как это можно автоматизировать?
Добавляем в .bashrc:
ignoredups:erasedups
1. Команды, вводимые несколько раз, не дублируются в истории.
2. Повторная команда заменяет все предыдущие в истории.
shopt -s histappend
Эта команда включает опцию histappend, которая добавляет новые команды в конец файла истории (~/.bash_history) при завершении сессии, вместо перезаписи файла. Это позволяет сохранить команды из разных сессий и объединить их в единую историю.
А кишка PROMPT_COMMAND = Назначает значение переменной PROMPT_COMMAND, которая используется в bash для выполнения команды перед отображением командной строки (приглашения).
Теперь твоя история команд будет автоматически синхронизирована с файлом истории. Это полезно, если ты работаешь с несколькими терминалами и хочешь иметь актуальную историю без хуйни.
А еще есть фича:
После выполнения любой команды, на экран будет выводиться «привет осёл». Эту команду можно заменить на любую другую, например триггерить bash скрипт, который будет отправлять введенные команды сразу тебе в телеграм. Ну или забить exit 1 по приколу.
Ёмко? Ёмко! Изучай!
tags: #linux #bash
—
🔔
Хотя сервер один и тот же. И не увидишь ты эту команду в истории, пока не завершишь сессию в первом терминале, либо не сделаешь определенный финт ушами. Пиздец неудобно!
✔️ Финт ушами в первом терминале:
history -a
history -c
history -r
a = пишем текущую историю сессии в файл
с = очищаем текущую сессию
r = перезагружаем файл истории
Теперь если перезайти во второй терминал, то увидишь там команду ls -la, то есть история как бы синхронизировалась. Это хорошо, но недостаточно хорошо!
Как это можно автоматизировать?
Добавляем в .bashrc:
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
ignoredups:erasedups
1. Команды, вводимые несколько раз, не дублируются в истории.
2. Повторная команда заменяет все предыдущие в истории.
shopt -s histappend
Эта команда включает опцию histappend, которая добавляет новые команды в конец файла истории (~/.bash_history) при завершении сессии, вместо перезаписи файла. Это позволяет сохранить команды из разных сессий и объединить их в единую историю.
А кишка PROMPT_COMMAND = Назначает значение переменной PROMPT_COMMAND, которая используется в bash для выполнения команды перед отображением командной строки (приглашения).
Теперь твоя история команд будет автоматически синхронизирована с файлом истории. Это полезно, если ты работаешь с несколькими терминалами и хочешь иметь актуальную историю без хуйни.
А еще есть фича:
declare -r PROMPT_COMMAND="echo 'привет осёл'"
После выполнения любой команды, на экран будет выводиться «привет осёл». Эту команду можно заменить на любую другую, например триггерить bash скрипт, который будет отправлять введенные команды сразу тебе в телеграм. Ну или забить exit 1 по приколу.
Как взаимодействовать с телегой через консольку, писал в этом посте. А про облачную синхронизацию истории упоминал в этом посте.
Ёмко? Ёмко! Изучай!
tags: #linux #bash
—
🔔
4 июня пройдёт большая конференция по инфраструктуре от Яндекса — infra.conf 2024!
Вас ждёт 18 докладов-кейсов от разработчиков и техлидов из Тинькофф, Ozon Tech, Яндекса, «Лаборатории Касперского» и других крупных компаний, активный нетворкинг, игры, Q&A-сессии и вечеринка.
Поговорим о платформенной разработке, тестировании и эксплуатации инфраструктуры, базах данных и хранилищах, облачных технологиях, CI/CD-пайплайнах и Kubernetes, ML-инфраструктуре, безопасности, опенсорс-решениях и о многом другом.
📍 4 июня, Москва, площадка Bounce & Pulsar, а также онлайн.
➡️ Участие бесплатное. Рекомендуем зарегистрироваться уже сейчас.
Вас ждёт 18 докладов-кейсов от разработчиков и техлидов из Тинькофф, Ozon Tech, Яндекса, «Лаборатории Касперского» и других крупных компаний, активный нетворкинг, игры, Q&A-сессии и вечеринка.
Поговорим о платформенной разработке, тестировании и эксплуатации инфраструктуры, базах данных и хранилищах, облачных технологиях, CI/CD-пайплайнах и Kubernetes, ML-инфраструктуре, безопасности, опенсорс-решениях и о многом другом.
📍 4 июня, Москва, площадка Bounce & Pulsar, а также онлайн.
➡️ Участие бесплатное. Рекомендуем зарегистрироваться уже сейчас.
Хелоу ворлд, вчера наш с вами товарищ Tagd Tagd попросил опубликовать статью, которую любезно написал для нас с вами. Спасибо дружище! Исполняю, вникайте, пишите комменты.
Я стилистику сохранил, но сверстал и поправил то, что ворд подчеркнул красным, чтобы читалось полегче. Эхх.. как же руки чесались добавить пару забористых фраз, ну да ладно, пусть будет как будет.
👇👇👇
Да, я знаю про алиасы и ssh_config. Скрипт предназначен для ИНТЕРАКТИВНОГО проброса TCP-портов через jump-серверы, средствами ssh.
Позволяет пробрасывать порт с удаленной машины на 127.0.0.1 и коннектиться к службам компов, доступных из подсети jump-сервера (в скрипте gate сервер) за firewall.
При небольшой модификации можно открывать порт для компов своей локальной подсети. Удобен для сопровождения небольших фирм.
Кому это не интересно, рассматривайте скрипт, как учебный, потому как
тут есть некоторые фишки, которые поясню ниже.
В инете есть машина IP=1xx.2xx.2xx.54, у которой на порту 13527 висит ssh.
После подключения у нас на машине по адресу 127.0.0.1:8080 будет висеть служба 192.168.1.10:443 из локальной сети шлюзовой машины.
Кстати, dest_ip, dest_port, lo_port - значения по-умолчанию. При подключении их можно менять, не трогая конфиг.
Если кто заинтересовался пробросом портов через ssh рекомендую смотреть ключи -L -R -D.
✔️ Теперь к скрипту.
MULTICOLUMN=0 - список подключений в один столбец. Подходит, когда список до 20-30 строк.
MULTICOLUMN=1 список в несколько столбцов. Некрасиво, но много...
function ini() - список параметров, для тех, кто хранит данные в скрипте (можно еще heredoc).
awk !/^#/ && NF - выводит строки, НЕ начинающиеся с #, и с числом полей >0. (не пустые, без комментов)
|eval $CMD - ПОЗВОЛЯЕТ МЕНЯТЬ ЛОГИКУ цепочки PIPE
|cat - заглушка (nop в мире pipe)
Дальше все просто.
read -i позволяет указать значение по-умолчанию, которое, можно изменить.
Скрипт можно приспособить для любого интерактива: выбор версии скачиваемой программы, монтирование/размонтирование FS, выполнение нужных, но редких скриптов, которые, блин, постоянно забываешь...
tags: #bash
—
🔔
Я стилистику сохранил, но сверстал и поправил то, что ворд подчеркнул красным, чтобы читалось полегче. Эхх.. как же руки чесались добавить пару забористых фраз, ну да ладно, пусть будет как будет.
👇👇👇
redirall.sh
Да, я знаю про алиасы и ssh_config. Скрипт предназначен для ИНТЕРАКТИВНОГО проброса TCP-портов через jump-серверы, средствами ssh.
Позволяет пробрасывать порт с удаленной машины на 127.0.0.1 и коннектиться к службам компов, доступных из подсети jump-сервера (в скрипте gate сервер) за firewall.
При небольшой модификации можно открывать порт для компов своей локальной подсети. Удобен для сопровождения небольших фирм.
Кому это не интересно, рассматривайте скрипт, как учебный, потому как
тут есть некоторые фишки, которые поясню ниже.
В инете есть машина IP=1xx.2xx.2xx.54, у которой на порту 13527 висит ssh.
После подключения у нас на машине по адресу 127.0.0.1:8080 будет висеть служба 192.168.1.10:443 из локальной сети шлюзовой машины.
Кстати, dest_ip, dest_port, lo_port - значения по-умолчанию. При подключении их можно менять, не трогая конфиг.
Если кто заинтересовался пробросом портов через ssh рекомендую смотреть ключи -L -R -D.
✔️ Теперь к скрипту.
MULTICOLUMN=0 - список подключений в один столбец. Подходит, когда список до 20-30 строк.
MULTICOLUMN=1 список в несколько столбцов. Некрасиво, но много...
function ini() - список параметров, для тех, кто хранит данные в скрипте (можно еще heredoc).
Для тех, кто обожает конфиги - просто вставьте cat file.conf внутрь функции ini.
awk !/^#/ && NF - выводит строки, НЕ начинающиеся с #, и с числом полей >0. (не пустые, без комментов)
|eval $CMD - ПОЗВОЛЯЕТ МЕНЯТЬ ЛОГИКУ цепочки PIPE
|cat - заглушка (nop в мире pipe)
Дальше все просто.
read -i позволяет указать значение по-умолчанию, которое, можно изменить.
Скрипт можно приспособить для любого интерактива: выбор версии скачиваемой программы, монтирование/размонтирование FS, выполнение нужных, но редких скриптов, которые, блин, постоянно забываешь...
Советы приветствуются. Конфиг можно загружать и из сети, но перед объявлением ini.
#!/bin/bash
declare -i MULTICOLUMN=0
function ini(){ echo '
#name ssh_gate_ip gate_port ssh_user dest_ip dest_port lo_port
Filial1 1xx.2xx.2xx.54 13527 u232sr 192.168.1.10 80 8080
Filial2 9y.1yy.1yy.66 13531 u232sr 192.168.1.18 5432 5432
Firma2 1zz.2zz.2zz.53 22 p183975 192.168.1.100 3389 3388
'
}
declare -i COLS=$(echo "cols"|tput -S)
declare -i NUM=0
clear
[[ $MULTICOLUMN -eq 0 ]] && CMD='cat' || CMD='column -x -c$COLS'
#autonum & print list
ini |awk '!/^#/ && NF {print ++i, $1 }' |eval $CMD
#protection
declare -i MAX=$(ini |awk '!/^#/ && NF {++i}END{print i}')
while [[ $NUM -le 0 ]] || [[ $NUM -gt $MAX ]];do
read -p "select connection number = " NUM
done
#get default param for selected num
read -r NAME GATE_IP GATE_PORT USR DEST_IP DEST_PORT LO_PORT <<< \
$(ini | awk -v n="$NUM" '!/^#/ && NF {if(++i==n){print $0;exit}}') #'
clear
echo -e \\n"Connect to $NAME $GATE_IP"\\n
#modify param
read -e -p "DESTINATION_IP " -i "$DEST_IP" DEST_IP;echo
read -e -p "DESTINATION_PORT " -i "$DEST_PORT" DEST_PORT;echo
read -e -p "LOCAL PORT >1024 " -i "$LO_PORT" LO_PORT
#prompt
echo -e "127.0.0.1:$LO_PORT ~> $NAME" "$DEST_IP:$DEST_PORT"\\n\\n
#connect
ssh -L ${LO_PORT}:${DEST_IP}:${DEST_PORT} -p ${GATE_PORT} ${USR}@${GATE_IP}
tags: #bash
—
🔔
Сегодня специалисты DevOps — одни из самых востребованных на рынке. По данным hh.ru, на 2000 вакансий приходится 1900 соискателей. Если вы хотите работать с методологией DevOps — попробуйте курс Практикума.
После курса вы:
— начнёте применять DevOps в работе,
— разберётесь в Docker и Kubernetes,
— изучите современные инструменты,
— почувствуете себя опытным SRE.
Поможем сделать релизы более быстрыми и безопасными, инфраструктуру — стабильной, а взаимодействие команд — более эффективным и слаженным. А дальше — получить новый грейд или ответственную роль в команде.
Программа рассчитана на 6 месяцев, учёба займет от 15 часов в неделю. В финале — итоговый проект для портфолио, в котором нужно подготовить инфраструктуру и настроить конвейер деплоя.
Осваивать принципы DevOps начнём уже 5 июня. Приходите учиться!
Начать курс
После курса вы:
— начнёте применять DevOps в работе,
— разберётесь в Docker и Kubernetes,
— изучите современные инструменты,
— почувствуете себя опытным SRE.
Поможем сделать релизы более быстрыми и безопасными, инфраструктуру — стабильной, а взаимодействие команд — более эффективным и слаженным. А дальше — получить новый грейд или ответственную роль в команде.
Программа рассчитана на 6 месяцев, учёба займет от 15 часов в неделю. В финале — итоговый проект для портфолио, в котором нужно подготовить инфраструктуру и настроить конвейер деплоя.
Осваивать принципы DevOps начнём уже 5 июня. Приходите учиться!
Начать курс
Здрасти. Ща будет познавательно. Рекомендую почитать.
При установки софта в Linux, иногда требуется предварительно вкорячить какой-то build-essential.
В 99% случаев ты бездумно ставишь этот пакет, раз написано, значит нужно. Но всяко не задумывался, а чо блядь это такое?
И правда, а что это такое?
build-essential это «метапакет», который устанавливает набор необходимых инструментов. Эти инструменты требуются для компиляции исходников.
✔️ В состав build-essential обычно входят:
gcc — основной компилятор для языков C и C++.
g++ — компилятор для языка C++.
make — утилита для автоматизации сборки программ.
libc6-dev — заголовочные файлы и библиотеки C стандартной библиотеки.
dpkg-dev — утилиты для работы с исходными пакетами Debian.
ну и другие…
Грубо говоря, build-essential это швейцарский нож, всё в одном.
Ну и чо?
Да ничо, либо ты руками будешь ставить 10 софтин для компиляции своих поделок, либо один раз установишь build-essential и у тебя под рукой уже есть все самое необходимое.
Короче build-essential создан для твоего удобства. Этакий билдер старт-пак. Но никак не отдельная утилита/программа.
Нужно всегда помнить, что это не серебреная пуля для установки рабочих окружений Golang, Python и т.п. Иногда придется все же что-то дополнительно поставить ручками.
Скучный высер из доков:
Поздравляю, теперь ты и это знаешь!
tags: #linux
—
🔔
При установки софта в Linux, иногда требуется предварительно вкорячить какой-то build-essential.
sudo apt install build-essential
В 99% случаев ты бездумно ставишь этот пакет, раз написано, значит нужно. Но всяко не задумывался, а чо блядь это такое?
И правда, а что это такое?
build-essential это «метапакет», который устанавливает набор необходимых инструментов. Эти инструменты требуются для компиляции исходников.
✔️ В состав build-essential обычно входят:
gcc — основной компилятор для языков C и C++.
g++ — компилятор для языка C++.
make — утилита для автоматизации сборки программ.
libc6-dev — заголовочные файлы и библиотеки C стандартной библиотеки.
dpkg-dev — утилиты для работы с исходными пакетами Debian.
ну и другие…
Грубо говоря, build-essential это швейцарский нож, всё в одном.
Ну и чо?
Да ничо, либо ты руками будешь ставить 10 софтин для компиляции своих поделок, либо один раз установишь build-essential и у тебя под рукой уже есть все самое необходимое.
Короче build-essential создан для твоего удобства. Этакий билдер старт-пак. Но никак не отдельная утилита/программа.
Нужно всегда помнить, что это не серебреная пуля для установки рабочих окружений Golang, Python и т.п. Иногда придется все же что-то дополнительно поставить ручками.
Скучный высер из доков:
Мета-пакет - это удобный способ массовой установки групп приложений, их библиотек и документации. Многие дистрибутивы Linux используют их для различных целей, от создания образов дисков, которые впоследствии станут новыми выпусками, до создания программных «пакетов», которые пользователь может легко установить.
Мета-пакет редко содержит что-либо, кроме журнала изменений и, возможно, информации об авторских правах, он не содержит внутри себя приложений или библиотек. Способ их работы заключается в наличии списка «зависимостей», который считывает менеджер пакетов. Затем менеджер пакетов обращается к репозиториям, находит зависимости и устанавливает их.
Поздравляю, теперь ты и это знаешь!
tags: #linux
—
🔔
Ворвусь на секундочку, нативка от нашей хорошей коллеги.
Кто угарает со скрама и аджайла, велком в авторские мемы «Кринжайл». Не уговариваю, пока вспомнил, решил поделиться, мож зайдет конкретно тебе 👇
Кто угарает со скрама и аджайла, велком в авторские мемы «Кринжайл». Не уговариваю, пока вспомнил, решил поделиться, мож зайдет конкретно тебе 👇
Всех с понедельником! Начнем с простого, а вечером обсудим «сосо́чки».
Вопрос от подписчика: а можно ли после обновления linux ядра, сразу применить это ядро, без перезагрузки машины?
Нууу… вообще не рекомендуется заниматься хуйнёй, лучше конечно ребутнуться. Но если очень хочется, то кое что сделать можно, есть такие утилиты, но опять же всё на свой страх и риск.
В продакшене такое делается так — поднимаешь параллельно новую машину с новым ядром и т.п. Если все устраивает, переключаешь DNS, апстримы и т.п. на новую машину и вуаля.
Теперь по утилитам. Из того что вспомнил, это kexec. Позволяет загрузить новое ядро, прямо из текущего работающего ядра.
Решение не является полной заменой перезагрузки, так как система все равно перезапустится, но произойдет это в разы быстрее, поскольку не происходит полная инициализация аппаратного обеспечения.
Дальше существует Live Patching. Эта технология позволяет применять обновления ядра без перезагрузки.
- kpatch от Red Hat
- kGraft от SUSE
- Kernel Live Patching (KLP) с версии ядра 4.0
Live Patching позволяет вносить изменения в ядро, такие как исправления безопасности, без необходимости перезагрузки. Однако, это не подходит для всех видов обновлений ядра, таких как смена версии или значительные изменения в функциональности.
Ну и KernelCare. Это коммерческое решение, которое предоставляет возможность обновлять ядро Linux без перезагрузки. Оно поддерживает различные дистрибутивы Linux и позволяет администраторам систем применять критические обновления безопасности на лету.
Таким образом, полностью избежать перезагрузки при обновлении ядра невозможно в случае, если требуется полная смена версии ядра.
Однако, для большинства критических обновлений безопасности можно использовать технологии Live Patching, что позволяет поддерживать высокую доступность системы.
Такие дела.
tags: #linux
—
🔔
Вопрос от подписчика: а можно ли после обновления linux ядра, сразу применить это ядро, без перезагрузки машины?
Нууу… вообще не рекомендуется заниматься хуйнёй, лучше конечно ребутнуться. Но если очень хочется, то кое что сделать можно, есть такие утилиты, но опять же всё на свой страх и риск.
В продакшене такое делается так — поднимаешь параллельно новую машину с новым ядром и т.п. Если все устраивает, переключаешь DNS, апстримы и т.п. на новую машину и вуаля.
Теперь по утилитам. Из того что вспомнил, это kexec. Позволяет загрузить новое ядро, прямо из текущего работающего ядра.
Решение не является полной заменой перезагрузки, так как система все равно перезапустится, но произойдет это в разы быстрее, поскольку не происходит полная инициализация аппаратного обеспечения.
kexec -l /boot/vmlinuz-new-kernel --initrd=/boot/initrd-new-kernel --command-line="root=/dev/sda1" kexec -e
Дальше существует Live Patching. Эта технология позволяет применять обновления ядра без перезагрузки.
- kpatch от Red Hat
- kGraft от SUSE
- Kernel Live Patching (KLP) с версии ядра 4.0
Live Patching позволяет вносить изменения в ядро, такие как исправления безопасности, без необходимости перезагрузки. Однако, это не подходит для всех видов обновлений ядра, таких как смена версии или значительные изменения в функциональности.
Ну и KernelCare. Это коммерческое решение, которое предоставляет возможность обновлять ядро Linux без перезагрузки. Оно поддерживает различные дистрибутивы Linux и позволяет администраторам систем применять критические обновления безопасности на лету.
Таким образом, полностью избежать перезагрузки при обновлении ядра невозможно в случае, если требуется полная смена версии ядра.
Однако, для большинства критических обновлений безопасности можно использовать технологии Live Patching, что позволяет поддерживать высокую доступность системы.
Такие дела.
tags: #linux
—
🔔
📌 Воркшоп «Как быстро настроить сеть?»
🕓 28 мая, 16:00
Хотите узнать больше про масштабирование из выделенных серверов в облако? Коллеги из подготовили онлайн-разбор практических кейсов🦖
В прямом эфире расскажут, как организовать инфраструктуру на базе выделенных серверов и облачной платформы в разных пулах и регионах. Вы также узнаете, как настроить сеть и организовать связность между серверами и продуктами в панели управления Selectel.
Основные темы:
🔹 масштабирование выделенных серверов в облачную платформу через Глобальный роутер,
🔹 связность выделенных и облачных серверов,
🔹 связность выделенного сервера с Managed Kubernetes и облачными базами данных,
🔹 связность выделенного сервера и файлового хранилища (SFS).
Регистрируйтесь на мероприятие по ссылке, задавайте вопросы в форме и участвуйте в розыгрыше Тирекса ➡️ https://slc.tl/bakep
Реклама ООО «Селектел» erid 2VtzqvR3iTM
🕓 28 мая, 16:00
Хотите узнать больше про масштабирование из выделенных серверов в облако? Коллеги из подготовили онлайн-разбор практических кейсов🦖
В прямом эфире расскажут, как организовать инфраструктуру на базе выделенных серверов и облачной платформы в разных пулах и регионах. Вы также узнаете, как настроить сеть и организовать связность между серверами и продуктами в панели управления Selectel.
Основные темы:
🔹 масштабирование выделенных серверов в облачную платформу через Глобальный роутер,
🔹 связность выделенных и облачных серверов,
🔹 связность выделенного сервера с Managed Kubernetes и облачными базами данных,
🔹 связность выделенного сервера и файлового хранилища (SFS).
Регистрируйтесь на мероприятие по ссылке, задавайте вопросы в форме и участвуйте в розыгрыше Тирекса ➡️ https://slc.tl/bakep
Реклама ООО «Селектел» erid 2VtzqvR3iTM