22119
Авторский канал от действующего девопса Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue Курс: @tormozilla_bot РКН: https://bit.ly/knd2gov
Три бесплатных воркшопа по Linux для тех, кто хочет учиться на практике.
В программе: митап про карьеру в Linux и три закрытых онлайн-интенсива с инженерами из Orion soft, K2 Cloud и K2 Tech. На воркшопах погрузимся в практику — настроим self-hosted мессенджер, VPN-решение, облачное хранилище.
Переходи по ссылке и выбирай свой воркшоп до 7 октября.
erid: 2VtzqvE2KAF
Курс "Kubernetes для разработчиков" + видеокурс "Docker. Основы" в подарок 🔥
➡️Старт 23 сентября⬅️
- Не хватает практики и знаний для уверенной работы с к8s?
- Разработка, дебаг и оптимизация приложений в K8s вызывают сложности?
- Не понимаете о чем говорят DevOps'ы?
«Группа Астра» проводит первую бесплатную практическую конференцию для разработчиков Astra DevConf 2024.
Разработчики ИТ-компаний раскроют секреты эффективной и безопасной разработки, а также поделятся практическими кейсами.
На конференции мы:
— расскажем как выстроить процесс разработки на базе Git-системы (конкретные примеры на различных языках и фреймворках);
— покажем, как легко и просто опубликовать ваше приложение в RuStore;
— поделимся лучшими практиками в построении DevOps-процессов для проектов, написанных на Spring Framework и Java/Kotlin;
— расскажем, как осуществить сборку из Dockerfile или Buildpack и развертывание образа на виртуальной машине (пока вы пьете кофе);
— и многое другое.
Для участников конференции будет доступен:
— личный кабинет разработчика, в котором можно бесплатно скачивать решения «Группа Астра» для целей изучения и разработки (в том числе ОС Astra Linux 1.8);
— портал с документацией, где опубликованы различные инструменты для разработки, примеры кода и готовые стенды для тестирования.
Дата и время: 24 сентября, в 10:00
Формат: онлайн/офлайн
Регистрация доступна по ссылке. Поехали!
Реклама. ООО «РусБИТех-Астра». ИНН 7726388700. erid: 2VtzquoUpC7
Митап честных кейсов по сетевой безопасности от Positive Technologies
24 сентября в 16:00
Новый формат обсуждения продуктов для ИБ. Никаких разговоров о фичах — только отзывы и «боевые» истории пользователей песочницы PT Sandbox и системы поведенческого анализа трафика PT NAD.
В программе:
· Нюансы сетевых атак
· Особенности работы на больших потоках
· Бенефиты от объединения двух технологичных продуктов
Вас ждет неформальная обстановка, много реальных кейсов и честное мнение о NetSec-решениях Positive Technologies.
Регистрируйтесь, чтобы не пропустить!
Не хватает практики и знаний для работы с K8s?
➡️ Поможем DevOpsам систематизировать знания и освоить навыки работы с кластером.
Поток “Kubernetes База”
➕ видеокурс “Мониторинг в Grafana”
➕ видеокурс "Ansible. Основы"
➕ видеокурс "Docker. Основы"
🔥70 000 ₽ (вместо 100 000 ₽)
Промокод на скидку в боте до 20 сентября
❓Как эффективно работать с Планом обмена и синхронизировать данные между типовыми конфигурациями 1С?
Узнайте на открытом вебинаре 17 сентября в 20:00 мск, где мы разберем:
- что такое План обмена и как работать с этим объектом;
- как настроить типовую синхронизацию между базами 1С;
- все возникающие вопросы.
Спикер Юлия Харочкина — опытный программист 1С и преподаватель.
Встречаемся в преддверии старта курса «Разработчик 1С. Basic». Все участники вебинара получат специальную цену на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/7ZG4/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🚀 Яндекс разработал AI-ассистента для работы с кодом
С помощью сервиса разработчики смогут по фрагменту кода сгенерировать наиболее вероятное его продолжение. Это поможет упростить написание и редактирование кода и ускорить продуктовую разработку в компаниях. Ассистент протестировали тысячи разработчиков Яндекса, 60% из которых стали постоянными пользователями сервиса.
Использование Yandex Code Assistant помогает повысить эффективность работы: доверьте рутинные операции AI и сосредоточьтесь на решении более сложных задач, чтобы ускорить разработку и сократить Time to market. Да и просто делает жизнь разработчиков проще и счастливее.
⚙️ Для кого
Инструмент полезен разработчикам любого уровня, а также техническим руководителям, которые хотят оптимизировать процессы и повысить продуктивность своих команд.
→ Как попробовать
Yandex Code Assistant доступен бесплатно на облачной платформе Yandex Cloud в режиме Preview. Для тестирования оставьте заявку.
Selectel Tech Day — конференция для айтишников и бизнеса
10 октября Selectel проведет флагманскую конференцию — самую масштабную в своей истории. В этом году будут обсуждать главные тренды в сфере железа, облачных сервисов, информационной безопасности и ML — каждое направление связали с определенной цифровой стихией и обыграли в докладах.
В программе:
✔️ эксклюзивная презентация
✔️ экспертные доклады
✔️ нетворкинг
✔️ активности на стендах
✔️ бесплатный мерч
✔️ афтепати
Где? Онлайн и офлайн в Центре событий РБК, Москва
Регистрируйтесь, чтобы не пропустить одно из главных IT-событий года: https://slc.tl/s5q3v
Реклама АО «Селектел». ИНН: 7810962785
Erid: 2VtzqvwgbiF
Хотите узнать, как автоматизировать процессы CI/CD и снизить порог входа в DevOps? Тогда присоединяйтесь к вебинару «Как эффективно построить конвейер DevOps».
Когда: 12 сентября в 11:00.
Виталий Астраханцев, руководитель разработки инструментов DevSecOps в СберТехе, расскажет об инструменте Orchestra R, который позволяет настраивать конвейеры в режиме low-code. Поговорим о том, почему шаблонизация этапов так эффективна, и сколько DevOps-инженеров понадобится для создания конвейера с сотней шагов.
Кому будет полезен вебинар:
· PO/CPO, CTO
· руководителям ИТ-отделов
· руководителям разработки
· Delivery Lead
· DevOps-инженерам
Регистрируйтесь сейчас, чтобы не потерять событие.
До встречи на вебинаре!
Хотите улучшить свои карьерные возможности в администрировании Linux?
Приходите на вебинар «Основы балансировки нагрузки в Angie и Nginx». Вы будете знать:
1️⃣ архитектуру балансировки нагрузки в веб-приложениях;
2️⃣ различные методы балансировки нагрузки в Nginx и Angie, а также различия в этих продуктах;
3️⃣ отказоустойчивость.
Информация очень полезна для администраторов Linux, веб-разработчиков и всех, кто использует Nginx в проектах.
БОНУС: Регулярные выражения для системного администратора
👉 https://otus.pw/ufEA/
Курс Администрирование Nginx/Angie научит:
1️⃣ Настраивать Angie и Nginx как фронт веб-серверы для любых приложений.
2️⃣ Оптимизировать серверную и клиентскую производительность.
3️⃣ Конфигурировать балансировщики нагрузки L4 (TCP, UDP) и L7 (HTTP/HTTPS).
4️⃣Управлять логированием и оптимизировать HTTPS-соединения. И другое!
🦸♂️Спикер Николай Лавлинский - опытный разработчик, руководитель, преподаватель и автор каналов «Ускорение сайтов» и «Поддержка сайтов».
Встречаемся 16 сентября: https://otus.pw/ufEA/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🖥Для многих ИТ-компаний, которые занимаются разработкой софта, одним из важнейших элементов является лицензирование ПО. Оно выполняет не только функцию защиты от пиратства, но и является хорошим средством заработка. Гибкое лицензирование помогает продавать ПО эффективно и соответствовать меняющимся требованиям рынка.
🐪20 сентября в Москве и 4 октября в Санкт-Петербурге состоится конференция Guardant Day – мероприятие для обмена практическим опытом по вопросам обеспечения технической защиты, выбора бизнес-модели лицензирования и определения стратегии развития продукта.
Что мы подготовили для участников:
🔘Круглый стол, посвященный мерам государственной поддержки вендоров ПО.
🔘Кейсы по работе с системой защиты и лицензирования от разработчиков ПО: практические рекомендации.
🔘 Экспертные доклады о технологиях, инструментах и продуктах.
🔘Презентация новой версии Guardant SLK 4.0 и планы по развитию.
🔘Сессия для ИТ/ИБ-маркетологов с экспертными докладами и обменом опытом.
🔘Технические стенды с возможностью увидеть продукты в действии.
В этом году мероприятие пройдет:
🌆20 сентября в Москве. Регистрация тут
🌉4 октября в Санкт-Петербурге. Регистрация тут
В обоих городах начало деловой части в 14:00.
Участие в мероприятии бесплатное по предварительной регистрации.
Подробнее о мероприятии в ТГ-канале Guardant TechClub
erid LjN8K93Eg
25 сентября в Москве пройдёт одно из самых крупных мероприятий по облачным технологиям – Yandex Scale
На конференции выступят эксперты Yandex Cloud, а также приглашённые специалисты из Mindbox, Lamoda, Райффайзен банка и других компаний — всего более 50 спикеров.
Генеративные нейросети, речевые технологии, новинки сервисов инфраструктуры, решения по работе с данными и безопасности, AI‑инструменты и serverless‑подход — в каждом треке ожидаются технологические анонсы и разбор кейсов.
Мероприятие будет интересно как руководителям и менеджерам, так и разработчикам, тестировщикам, архитекторам, инженерам SIEM и другим ИТ-специалистам. Присоединиться можно офлайн и онлайн, очных участников ждёт afterparty.
Участие бесплатное, регистрация открыта.
При создании продукта разработчикам часто приходится выполнять непрофильные задачи. К примеру, разрабатывать и настраивать сервисы для нотификаций: уведомления об изменении статуса заказа, о входе в аккаунт и многое другое.
Чтобы разработчикам не приходилось делать это самостоятельно, Yandex Cloud предоставляет готовые решения: Yandex Cloud Postbox — для отправки email-сообщений и Yandex Cloud Notification Service — для мобильных push-уведомлений.
В карточках рассказываем почему стоит воспользоваться готовым решением 👉
Привет. В дополнение к предыдущему посту про свистоперделки.
Чтобы каждый раз не вводить такую дичь:
ssh -i ~/.ssh/id_rsa user@xxx.xxx.xxx.xxx
ssh user@xxx.xxx.xxx.xxx
if [ -z "$SSH_AUTH_SOCK" ]; then
eval $(ssh-agent -s) > ~/.ssh/ssh-agent
fi
ssh-add ~/.ssh/gitlab_rsa
ssh-add ~/.ssh/production_rsa
ssh-add ~/.ssh/home_rsa
ssh-add -L, а удалить всё из агента можно командой ssh-add -D.
После того как я проверил на себе Suicide Linux, я всё проебал. Пришлось с нуля настраивать всё окружение.
В процессе настройки решил отказаться от zsh + oh-my-zsh и жить на чистом bin/bash.
ㅤ
Через пару дней понял, что мне не хватает «авто-подсказок». В zsh я использовал плагин zsh-autosuggestions, но а как быть с чистым башем? Там плагин через .bashrc хуй поставишь.
И нашел я BLE.sh (Bash Line Editor). Звучит же?
Софтина полностью меня устроила, даж красненьким подсвечивает команды когда я хуйню пытаюсь ввести.
Устанавливается просто, клонируешь себе из гит репки файлы, компилируешь и в ~/.profile подключаешь. Выглядит это так:
git clone --recursive https://github.com/akinomyoga/ble.sh.git
make -C ble.sh
echo "source ble.sh/out/ble.sh" >> ~/.profile
curl -s https://ohmyposh.dev/install.sh | bash -s
mkdir ~/.poshthemes
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip
unzip ~/.poshthemes/themes.zip -d ~/.poshthemes
chmod u+rw ~/.poshthemes/*.omp.*
rm ~/.poshthemes/themes.zip
~/.profileeval "$(oh-my-posh --init --shell bash --config ~/.poshthemes/capr4n.omp.json)"
--config вставляем название понравившейся темы. Ну и оболочку указываем, я естественно захуярил туда bash.
Аутентификация, авторизация. Навеяло.
Есть два вида запоминания паролей - хранение и связанная генерация. Это когда ты вводишь логин, а программа на основании его и модификатора (соли) вычисляет пароль.
ㅤ
Хранить лучше в программах типа keepass и аналогах. Сейчас затронем тему генерации.
Есть такая известная программа как pwgen. Просто чудесная. Столько всего умеет. В том числе и связывать логин и пароль. Проблема только в том, что при генерации командная строка может попасть в history.
И пароль может быть немного скомпрометирован. Я написал для нее небольшую обертку, которая, как мне кажется, решает эту проблему.
Программа запрашивает логин, и с помощью ключевого файла и модификатора связывает логин и пароль.
Модификатор - это что-то типа парольной фразы при использовании ключа.
Модификатором может быть любая фигня, типа названия филиала, номер телефона, да просто набор букв, который вы всегда помните. И будете помнить вечно.
Ключевой файл тоже желательно сохранять в нескольких местах, поскольку при утрате восстановить пароль будет невозможно.
Модификатор может набираться с клавиатуры видимом и скрытом режимах. Все зависит от агрессивности коллектива.
В общем, для хранения паролей от госуслуг не рекомендую, а вот генерить пароли для почты сотрудников или от каких-нибудь сайтов - самое оно.
Да, совсем забыл, параметр PWGEN_OPT - дополнительные опции генерации пароля НЕЛЬЗЯ менять после начала эксплуатации программы.
Программа pwgen должна быть установлена.
Для debian sudo apt install pwgen
declare -r PWGEN_OPT='-1 --symbols --ambiguous --capitalize'
declare -r PASSLEN=15
declare -r PASSNUM=5
declare -r KEYFILE=${0%/*}/'1.jpg'
declare -l HIDDENMOD=0
declare -r PWGEN=$(which pwgen)
declare LOGIN
declare MOD MOD1
if [[ ! "$PWGEN" ]];then
echo pwgen not installed
exit 1
fi
if [[ ! -s "$KEYFILE" ]];then
echo keyfile "$KEYFILE" not found
exit 2
fi
read -p "Input login:" LOGIN
if [[ "1y" =~ "$HIDDENMOD" ]];then
read -s -p "Input modificator:" MOD;echo
read -s -p "Confirm modificator:" MOD1;echo
if [[ "$MOD" != "$MOD1" ]];then
echo "Modificator not confirmed"
exit 3
fi
else
read -p "Input modificator:" MOD;echo
fi
echo pwgen options: $PWGEN_OPT
echo "Login: $LOGIN"
$PWGEN $PWGEN_OPT -H"${KEYFILE}#${LOGIN}${MOD}" $PASSLEN $PASSNUM
сохраняем в файл passgen.sh
chmod +x passgen.sh
./passgen.sh
Input login:tagd@bashdays.ru
Input modificator:BashDaysTheBest
pwgen options: -1 --symbols --ambiguous --capitalize
Login: tagd@bashdays.ru
aig3ohkie.Wah4X
AiguW~u7vohphae
eiJa7ahxei.die!
FaeNa=phah9voh3
Kih]ahca3Hie7ke
help declare read
man pwgen
https://cheatsheets.zip
Тыж в курсе, что терминал и консоль это не одно и тоже?
Нет? Спешу удивить, нихуя это не одно и тоже.
ㅤ
Хотя для меня и скорее всего для тебя терминал и консоль — один хуй.
Всегда бесит когда какой-то умник пытается мне объяснить разницу между - авторизацией и аутентификацией. Открываем форточку.
Хоть усрись, неважно как это называется, важно какой смысл ты в это закладываешь.
А смысл один - формочка с логином и паролем. И называть я это буду авторизацией, а захочу, назову - аутентификацией.
Вернемся к терминалам и консолям.
Терминалами раньше называли физическую хуйню с кнопками и телевизором. И вся эта прикольная штука была подключена к шкафу с бабинами.
У нас на заводе бухгалтерию так называли — «кабинет с бабинами». Бабины были моё почтение.
/dev/pts/<x>: Псевдотерминальные устройства, используемые для терминальных сессий, таких как SSH или терминалы в графических средах. Они представляют собой виртуальные терминальные устройства, которые обычно создаются и управляются операционной системой.
/dev/tty/<x>: Устройства, представляющие собой физические или виртуальные терминалы на уровне ядра. Например, это могут быть устройства для текстовых консольных сессий или виртуальные консоли, предоставляемые ядром Linux.
Важно отметить, что /dev/tty без <x> также может обозначать текущее терминальное устройство, к которому привязан процесс, например, при работе в командной строке.
$ echo "Bashdays here!" > /dev/pts/0
А еще про всякие vt100, xterm, ansi я писал тут, почитай, интересно.
Богатствуйте!
И снова полезный пост! Тунеядцев прошу расслабить жопы и перейти к концу, там анекдот.
ㅤ
Меня часто спрашивают… Нет, всем похуй. Короче:
systemctl restart php-fpm
Unit php-fpm.service could not be found.
php8.2-fpm-fuck-you!history | grep php
systemctl | grep php
php8.2-fpm-fuck-you.service
phpsessionclean.timer
Здрасти. К делу!
Гиту откровенно насрать на права доступа файлов. И после клонирования репы, эти права будут установлены по umask пользователя.
ㅤ
Ситуация не критичная, но иногда случаются моменты когда нужно все эти права сохранить и после клона восстановить.
На помощь приходит костыль, всё в лучших традициях!
#!/bin/bash
find . -type f -exec stat --format='%a %n' {} \; > permissions.txt
git add permissions.txt
git commit -m "на залупе лешего вертели"
git push
permissions.txt, коммитим, пушим.#!/bin/bash
if [ -f permissions.txt ]; then
while read perm file; do
if [ -f "$file" ]; then
chmod "$perm" "$file"
fi
done < permissions.txt
fi
Как автоматизировать писал в этом посте, на примере можешь адаптировать.
Сентябрь горит, как и моя жопа. Поставил я давеча на пятую малинку self-hosted гитлаб, чтоб к ребятам с LF быть поближе.
Это пост изобилует грубыми и матерными выражениями и, в силу своего содержания, вообще не предназначен для просмотра лицам с нежной и хрупкой психикой.
Да даже взять ситуацию перевода private репы в public.
/etc/gitlab/gitlab.rb и…gitlab_rails['registry_enabled'] = true
gitlab-ctl reconfigure
gitlab-ctl restart
Docker connection error. We are having trouble connecting to the Container Registry. Please try refreshing the page. If this error persists, please review the troubleshooting documentation .
Реестр контейнеров автоматически включается и становится доступным в вашем домене GitLab, если вы используете встроенную интеграцию Let's Encrypt.
gitlab.rb:letsencrypt['enable'] = true
letsencrypt['auto_renew'] = true
gitlab-ctl reconfigure && gitlab-ctl restartsudo gitlab-ctl status
ok: run: registry: (pid 20114) 0s
Здарова! Годнота подъехала!
Если любишь копаться в «кишочках» эта штука тебе обязательно пригодится, называется Binsider.
Я себе в арсенал ее добавил, штука охуительная, при условии если знаешь зачем оно тебе и как этим пользоваться. Я пока не знаю, но обязательно разберусь.
У хорошего девопса и бычий хуй веревка!
cd /tmp
VERSION="0.1.0"
wget "https://github.com/orhun/binsider/releases/download/v${VERSION}/binsider-${VERSION}-x86_64-unknown-linux-gnu.tar.gz"
tar -xvzf binsider-*.tar.gz
cd "binsider-${VERSION}"
./binsider
Хелоу мая диа френдз! Я повидал дохуя bash скриптов по зачистки старых бекапов, какие-то работают заебись, какие-то создают лишь видимость.
ㅤ
Заебись когда бекапы у тебя лежат на той же машине где ты их делаешь.
Запускаешь по крону команду rm и паре с find и зачищаешь ненужное гавно которое старше определенного времени.
А чо делать когда бекапы «правильно» заливаются в облако s3 по протоколу swift?
Там find с rm уже не прокатит. Можно конечно изгаляться, но я в рот ебал изобретать очередной велосипед.
Для этих целей отлично подходит rclone, кто бы блядь мог подумать.
Работает так:
/usr/bin/rclone --config ~/.config/rclone/rclone.conf \
--log-file /var/log/rclone-trasher.log \
-v delete selectel:backups/1c/ --min-age 3d --rmdirs
[selectel]
type = swift
env_auth = false
user = bashdays
key = fuckyou
auth = https://auth.selcdn.ru/
endpoint_type = internal
rmdirs.
Я тут решил поделиться впечатлениями. И хорошими и не очень. Вобщем, все в дом BashDays.
Недавно мне не дали премию за написание статей для BashDays. Сразу скажу, что на нее я не рассчитывал, поэтому охренел обрадовался и решил потратить ее на что-нибудь бесполезное, но приятно-интересное.
ㅤ
В общем, прикупил себе Безвентиляторный ПК Intel Celeron N2840 @ 2.16GHz 8Gb 128Gb 2 Lan 1Gb wi-fi Intel® Centrino® Advanced-N 6205. (далее писюк)
Проц выбрал именно такой из-за TDP 7W. На машине стояла Win10. Ну, я ее включил, залез на youtube. Измерил потребляемую мощность 12-15 Вт. Ну, короче, работать можно, если без претензий Корпус грелся, но я долго не работал. Снес.
Поставил pfsense. Установилась легко. Работает шустро. Но я не смог поднять точку доступа WI-FI. Интерфейс поднимается, но режим точки доступа не доступен. Немного погуглил, народ пишет, что pfsense и wi-fi AP не очень дружат, и рекомендуют просто купить дрочку доступа. Ой, как забавно опечатался. Даже исправлять не буду. Снес.
Поставил debian 12. Затем hostapd, dnsmasq, iptables. В общем, точка доступа поднялась с танцами и бубном, но, проверка скорости с помощью iperf3 показала, что ноут с этой точкой доступа работает на скорости около 35-37 Мбит/с.
Между тем, мой старичек keenetic 4G (KN-1210) RU выдает 80-90 Мбит/с. И это включая интернет канал до Нидерландов. В общем, полное разочарование. Да, это на 2.4 ГГц. На 5 мне попробовать было нечем. Снес.
После этого решил на пробу установить ipfire. Дистрибутив, специально заточен для периметрового маршрутизатора, но по функционалу, который можно доставить очень напоминает openwrt. (C самой openwrt я знаком чисто теоретически).
Про ipfire раньше никогда не слышал, прям сегодня почитал, и решил попробовать. Знаете, впечатление очень даже ничего. Ставится просто, web-интерфейс довольно удобный. (За исключением правил firewall. Но это я после pfsense такой привередливый:-)
Порадовала документация на сайте. Все очень простым английским языком. Да, один косяк. При установке, вначале указал язык русский и после перезагрузки в инсталляторе все тексты были квадратиками. Что-то парни со шрифтами намудрили.) Пришлось переставлять. Поставил, поднял точку доступа с пол-оборота, замерил скорость - 35-37Мбит/с. Грешу на wi-fi адаптер.
Заменить полноценно Keenetic не получилось. Да, из самого неприятного, писюк греется. Я пробовал поставить частоты по минимуму, производительности хватает, но все равно греется, хотя и значительно меньше.
Для проца температура совсем ерундовая, но для ссд и материнки условия не очень комфортные. Видимо придется колхозить вентилятор, тем более отверстия под 60мм есть.
Буду рад послушать о вашем опыте использования подобных игрушек. О проблемах и путях решения. Пишите в комментах, кто для чего использует и какой софт.
tags: #рабочиебудни © by Tagd Tagd
—
🔔 @bashdays➡️ @gitgate
Оказывается не все знают как в гитлабе сделать приватную репу публичной.
➡️ На примере облачного гитлаба:
Пиздуем в Проект → Settings → General → Visibility, project features, permissions → Project visibility
ㅤ
Выбираем из выпадающего списка: private, public, internal
Если у тебя облачный гитлаб с группами, читай дальше.
➡️ На примере Self-Hosted:
В отличии от облачного гитлаба, здесь недоступны варианты public, internal. Это многих смущает и вводит в ступор. Если коротко — сгорают жопы!
Открываем проект c репозиторием, вверху слева будет название группы, у меня оно linuxfactory и следом название проекта. Тыкаем на название группы, попадаем примерно на такой урл: https://git.bashdays.ru/linuxfactor
Нажимает три точки справа сверху появляется всплывашка, выбираем → Group Settings.
Находим: Visibility level и выставляем видимость группы public.
Пиздуем опять на страницу проекта с репозиторием → Settings → General → Visibility, project features, permissions → Project visibility
И о чудо! Активируются пункты public и internal.
Если чо-то забыл, добавляй в комменты, тема реально муторная и многие на эти грабли частенько наступают. Да чо греха таить я сам прихуел от таких пиздостраданий.
Пользуйтесь!
tags: #devops
—
🔔 @bashdays➡️ @gitgate
Здрасти. Еще один частый вопрос с проекта Linux Factory:
Я собрал докер имейдж, а контейнер вечно в ребуте либо вообще не запускается, чо делать и как отлаживать?
FROM nginx:latest
WORKDIR /etc/nginx
COPY ./nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
location / {
return 200 'Hello, Docker!'
add_header Content-Type text/plain;
}
}
}
docker build -t my-nginx .
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my-nginx latest b844ef77daa3 33 seconds ago 188MB
docker run -d -p 80:80 my-nginx
docker ps
docker ps -a
Exited (1) 4 minutes agodocker logs --follow <id or name>
<id or name> подставляем айдишник либо имя контейнера:invalid number of arguments in "return" directive in /etc/nginx/nginx.conf:15
docker inspect <id or name>
ExitCode = 137, значит не хватило ресурсов, подкинь памяти и все взлетит. Наверное…docker exec -it <id or name> bash/sh
DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -OL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.deb
sudo apt install ./dive_${DIVE_VERSION}_linux_amd64.deb
dive <id or imagename>
docker exec -it <id or name> cat /etc/nginx/nginx.conf
docker cp <id or name>:/etc/nginx/nginx.conf /tmp
docker cp /tmp/nginx.conf <id or name>:/etc/nginx/nginx.conf
Прикол в том, что тебе не нужно билдить новый имейдж, ты делаешь правки прям в контейнере.
docker exec <id or name> nginx -s reload
Обычно bash используется для неинтерактивного выполнения скриптов. А что делать, если хочется чего-то интерактивного?
ㅤ
Можно использовать оператор read. По умолчанию он читает ту херню, которую пользователь пишет на клавиатуре. Ну, не всю херню.
В общем, тут возникают проблемы. Даже не так. ТУТ ВОЗНИКАЮТ ПРОБЛЕМЫ.
Проблем несколько, и они нихрена не решаются простыми способами:
1. Только простые клавиши генерят одиночные коды типа буквы, цифры, печатные символы.
2. Стрелки, HOME, END... и особенно функциональные клавиши (F1-F12) генерят многобайтные коды.
3. Клавиши TAB ENTER SPACE вообще нихрена не выдают.
4. Коды нажатых клавиш зависят от терминала, который у вас эмулируется.
5. Очень много клавиш используется в качестве "горячих", поэтому их обработка производится раньше, чем их обработает bash.
В общем - если вы умный человек - не используйте bash для обработки функциональных клавиш.
А если похожи на меня - приведу функцию, которая помогает минимизировать проблемы.
Поскольку не все клавиши генерят печатные коды, я не придумал ничего более умного, чем конвертнуть коды в hex-последовательность. Поверьте, работать со строкой в 10 символов проще, чем с управляющими символами.
Понятней.
Программа более-менее обрабатывает совместное нажатие CTRL+, ALT+. Не обрабатывает нажатия нескольких клавиш.
#!/bin/bash
function GET_KEY(){
declare K1 K2 K=
declare -i i
read -rsn1 K1;read -rsn4 -t 0.001 K2
if [[ "$K1" != $'\x1b' ]];then
K2=
fi
K1="${K1}${K2}"
i=${#K1}
while ((i--));do
printf -v K2 "%02X" \"${K1:$i:1}\"
K=${K2}${K}
done
printf "%s" $K
}
clear
echo "TERMINAL="$TERM
KEY=1
while [ "$KEY" != "" ];do
KEY=$(GET_KEY)
echo $KEY
# echo -e "\x$KEY"
done
key2hex.shchmod +x ./key2hex.sh
./key2hex.sh
read -rsn1 K1;read -rsn4 -t 0.001 K2 считывает 1 символ, потом возможно еще 4, но с малым временем ожидания. Если символ многобайтный - в буфере он уже есть. 1b (ESC) он должен быть однобайтным.${#K1} -число символов в строке.while ((i--));do посимвольно преобразуем строку в hex, накапливая в переменной Kecho -e "\x$KEY" команда перевода hex в char привожу для примера.F5.CTRL+ALT+F1, а вернуться обратно обычно ALT+F7F7. посмотреть, куда возвращаться можно командой w . Даже маленькие разберутся.
Еще раз привет. В последнее время многие столкнулись с проблемой при запуске пайплайнов в гитлабе.
ㅤ
Требуется какая-то ебучая Verify my account, квест который не так просто пройти. Но есть способ это обойти, спасибо за наводку Akhmed Gvashev.
Пиздуем в Settings → CI/CD → Runners → Instance runners и отключаем Enable instance runners for this project.
Всё, дело в шляпе. А дальше регистрируешь свои локальные раннеры и запускаешь пайплайны хоть до посинения.
Пользуйтесь!
tags: #devops
—
🔔 @bashdays➡️ @gitgate
Здрасти приехали, пятница!
Частый вопрос который задают ребята с проекта Linux Factory:
ㅤ
Как в gitlab registry чистить докер имейджы, а то там такая пиздец блядь каша после экспериментов.
Run cleanup — выбираешь как часто запускать зачисткуKeep these tags — теги которые не нужно зачищатьRemove these tags — теги которые будем удалятьRemove tags older than — ну тут ежу понятно
🔵 Инженер техподдержки? Получи оффер в YADRO всего за неделю!
У тебя есть возможность поучаствовать в One Week Offer от крупнейшей технологической компании России - лидера инженерной индустрии.
Если ты хорошо знаешь принципы серверной архитектуры и СХД и хочешь стать частью масштабных проектов:
• Пришли своё резюме и заполни форму участия до 22 сентября.
• Пройди техническое интервью.
• Получи оффер после успешного собеседования.
Скорее переходи по ссылке и стань частью команды.
Когда собирался писать об этом операторе на ум пришла считалочка, которой меня научили в пионерском лагере.
А поскольку я сейчас не матерюсь, чтоб никто не догадался, перейду на старославянский алфавит.
Итак: Шёл Хер по херу, встретил Хера на херу, взял Хер Хера за хер, и к херам закинул нахер.
Вот, а сейчас говорят, что пионеров ничему хорошему не учили... exec.
Есть два варианта использования:
1. exec command — билет в один конец. Для чего это нужно я так и не понял, может умные в комментах напишут. Перед выполнением команды, bash фактически завершается, управление передаётся команде. И все...
пример:exec echo 123 — результат очень красочный. Такой же, как и с любой другой командой.
2. Перенаправление. Это штука крайне нужная и очень понятная. В других, нормальных ЯП она называлась бы open.
В Basic open "filename.txt" for input as #3
В bash exec 3<fileneme.txt
В Basic open "filename.txt" for output as #4
В bash exec 4>filename.txt
В Basic open "filename.txt" for append as #5
В bash exec 5>>filename.txt
В Basic open "filename.txt" for random as #6
В bash exec 6<>filename.txt
Приведу несколько полезных примеровexec 2>/dev/null — все сообщения об ошибках отправить по пути, указанному в считалочке.
На код ошибки (типа errorlevel) это не влияет.exec 1>filename.txt все сообщения, кроме ошибок отправить в файл.exec 1>filename.txt 2>&1 все сообщения, включая ошибки отправить в файл.
Стоп-стоп. Откуда взялся &? Легко запомнить. Это костыль. Если вы не укажите &, сообщения попадут в файл с именем "1".
Все помнят, что 0=/dev/stdin 1=/dev/stdout 2=/dev/stderr. Остальные 3-9 можем использовать по собственному усмотрению.
Пример:
#!/bin/bash
seq 1 3|tee 1.txt > 2.txt
exec 3<1.txt
while read -u3 L1;do
exec 4<2.txt
while read -u4 L2;do
echo $L1 $L2
done
done
seq — создаем два файла, по три строки в каждомexec 3<1.txt - открываем файл для чтения с дескриптором 3read -u3 L1 читаем из файла с дескриптором 3. Дальше все аналогично.exec 4>&-man tee seq
help while read exec