Авторский канал от действующего девопса Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue Курс: @tormozilla_bot РКН: https://bit.ly/knd2gov
Приветcвую вас, комрады!
🔤🔤🔥🔤🔤🔤🔤🔤🔤🔤
Есть довольно редкоземельная но полезная утилитка, обзывается она - Crane
ㅤ
Примеры использования:
Копирование образа между реестрами (без необходимости их пулить себе).
Бывало у вас такое, что нужно перенести образ из одного реестра в другой?
С crane это делается на раз-два:
crane cp gcr.io/shlyapa-project/executor:v1.7.0-debug myharbor.ru/shlyapa-executor:v1.7.0-debug
executor:v1.7.0-debug
из реестра gcr.io
в ваш собственный реджистри myharbor.ru.
crane export executor - | tar -tvf - | less
crane export executor - | tar -Oxf - etc/passwd
diff <(crane config front:1.32 | jq) <(crane config front:1.33 | jq)
1.32
и 1.33
образа front с помощью утилиты diff.crane manifest gcr.io/buildpacks/builder:v1 | jq '.config.size + ([.layers[].size] | add)'
crane mutate myharbor.ru/shlyapa-project/bear_ass_image:tag --annotation "org.opencontainers.image.description=New description" --label "version=2.0"
Такс, теперь в тему как отлаживать ssh подключения к серверу. К примеру ты все прописал и сделал как тут #linuxfactory, а оно все равно тебя не пускает по ключам.
ㅤ
Тут хочешь не хочешь нужен доступ к логам сервера к которому подключаешься. Так что заранее об этом побеспокойся, прежде чем перезапускать sshd службу.
Если рута нет, загружайся в рекавери и откатывайся по конфигам на сход по паролю. В рекавери я думаю ты знаешь как заходить, да и облачных провайдеров обычно это есть из коробки.
Маунтишь корневой раздел и откатываешь конфиги. Заходишь в конфиги (/etc/sshd/
) руками и просто откатываешь, то что ты там закомментировал.
Ладно, предположим у тебя есть доступ к руту и ты зашел на сервер.
Запускай команду:
tail -f /var/log/auth.log
~/.ssh/authorized_keys
или папку ~/.ssh/.
Invalid user
bad ownership or modes for /home/<username>/.ssh
Authentication failed
Connection closed by remote host
Permission denied
Too many authentication failures
Connection refused
PAM authentication errors
User not allowed
Host key verification failed
SSH protocol mismatch
Banner errors
Brute-force attempts
Timeout
Subsystem errors
Resource temporarily unavailable
Кстати китайцы тут DeepSeek запустили, мол убийца GPT. Бесплатная и работает в РФ без приколов. Домашку ребенку решать милое дело.
Пока я борюсь за выживание, скидываю тебе третью часть чтива. Не всё технически посты пилить.
Первая часть
Вторая часть
Привет, сегодня без излишеств, организм решил что хватит с него и повысил температуру до некомфортных значений. Домашки проверю как отпустит. На связи! Не болейте!
Читать полностью…А я всё же нашел вторую часть, как оказалась есть и третья и четвертая, упоролся видимо знатно в 2021 году. Ну чо, раз просили, сливаю, мож кого замотивирует.
Первая часть тут и там
В периоды праздников и больших распродаж растёт не только выручка, но и нагрузка на ИТ-системы компании. Например, если во время праздников перестанет работать сервис по продаже билетов — компания потеряет миллионы.
Такая же ситуация у интернет-магазинов, туроператоров, банков, стриминговых сервисов. Здесь показатели бизнеса напрямую связаны с работой инфраструктуры.
30 января на вебинаре эксперты MTC Web Services расскажут, как подготовиться к сезону, чтобы ваши системы не упали в период высоких нагрузок.
Вы узнаете:
🔴К каким рискам в работе ИТ-систем нужно быть готовым во время высокого спроса
🔴Почему просто докупить серверы недостаточно
🔴Какие облачные сервисы помогают нашим клиентам выдерживать резкие всплески нагрузок
Вебинар будет полезен:
✔️Ресурсам с резким всплеском трафика (сервисы по продаже билетов, новостные ленты, туроператоры и сервисы букинга, стриминговые сервисы, продажа образовательных курсов);
✔️Букмекерским конторам;
✔️E-commerce и онлайн-магазинам;
✔️Банковскому сектору.
Регистрируйтесь и приходите на вебинар, задавайте вопросы спикерам — за лучший вопрос в комментариях будет подарок от команды!
Что делать, если не хватает практики для работы с k8s?
👉 пойти учиться в Слёрм и освоить навыки работы с Kubernetes!
За 6 недель разберем:
🔸архитектуру k8s, основные понятия и компоненты
🔸создание, развертывание и масштабирование контейнеризированных приложений
🔸эксплуатацию кластеров k8s
🔸настройку мониторинга в кластере k8s
➕ Видеокурс «Мониторинг в Grafana» в подарок до 31 января — для тех, кто хочет научиться работать со связкой Prometheus+Grafana, разбираться в работе системы и читать созданные графики.
🔥115 000 ₽80 000 ₽
В конце прошлого года «Лаборатория Касперского» запустили образовательную онлайн-платформу по ИБ, где собраны все доступные практические курсы от ведущих специалистов компании.
В портфолио Kaspersky Cybersecurity Training представлены самые востребованные программы в постоянном онлайн-доступе! Можно пройти курсы и получить практические навыки кибербезопасности в удобном формате и комфортном для вас темпе.
Чтобы больше узнать о доступных программах для онлайн-обучения, их наполнении и условиях обучения Kaspersky 30 января в 11.00 (МСК) проведет бесплатный вебинар с видеоуроками, презентациями и покажут целую облачную лабораторию, где можно отточить навыки на реальных образцах вредоносного кода и артефактах, с которыми специалисты сталкивались в расследованиях.
Представят эксклюзивный курс по безопасной разработке ПО и разберут кому будут полезны курсы, и какие компетенции вы сможете освоить с помощью представленных программ.
А если не сможете присутствовать на вебинаре 30 января? Не переживайте! Просто зарегистрируйтесь, и вам отправят запись после мероприятия!
Проект масштабируется, и поддерживать его работоспособность становится сложнее?
✅ Значит, пора углубляться в создание, управление и мониторинг работы кластеров!
Все знания и практику можно получить на курсе «Kubernetes Мега» от учебного центра Слёрм.
➕ Видеокурс «Мониторинг в Grafana» в подарок до 31 января — для тех, кто хочет научиться работать со связкой Prometheus+Grafana, разбираться в работе системы и читать созданные графики.
🔥145 000 ₽110 000 ₽
Базы данных для задач любой сложности
Безопасность, масштабируемость и отказоустойчивость баз данных — ключевые требования для любых современных веб-сервисов и приложений. А наличие этих требований по умолчанию, без дополнительной головной боли — мечта для любого бизнеса. Или не мечта, а реальность? Selectel предлагает одни из лучших облачных баз данных на рынке и берет эти на заботы на себя:
● предоставляет высокую производительность за счет оптимальной настройки ПО, подбора мощного железа и локальных NVMe-дисков;
● обеспечивает резервное копирование. Бесплатные бэкапы создаются автоматически, а восстановление данных происходит вплоть до секунды;
● гарантирует отказоустойчивость. Создать отказоустойчивый кластер можно всего от двух нод, что позволяет сэкономить до 33% стоимости ресурсов;
● дает возможности для быстрого масштабирования. При росте нагрузки можно поменять конфигурацию облачного сервера и количество реплик без простоя.
● заботится о безопасности: сервис соответствует российским и международным стандартам — закону 152-ФЗ (УЗ-1), приказу ФСТЭК № 21, PCI DSS, ISO 27001, 27017, 27018 и ГОСТ Р 57580.
Развернуть готовые к работе кластеры облачных баз данных в несколько кликов: https://slc.tl/89548
Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqxMCKuV
🔹 Ищете надёжное оборудование для мониторинга серверных комнат? 👀🔍
✅ Обратите внимание на устройства NetPing
Компания с 2005 года разрабатывает и производит устройства для мониторинга и удаленного управления энергопитанием серверного оборудования.
🤝 Устройства NetPing будут полезны компаниям, которые используют IT-оборудование, инженерам и системным администраторам, сервисным компаниям и провайдерам, а также компаниям-интеграторам проектов IT-инфраструктуры.
Почему стоит обратить внимание на устройства NetPing?
✅ Собственная разработка и высокотехнологичное производство,
✅ Простота настройки и использования,
✅ Высокая надежность на протяжении многих лет,
✅ Непрерывный мониторинг ключевых параметров серверного оборудования и удаленное управление энергопитанием,
✅ Универсальные и легко интегрируются с существующей инфраструктурой.
🌟 NetPing
помогает IT-инфраструктуре работать стабильно и безопасно. 💪💻
#удаленноеуправление #серверныекомнаты #ITоборудование #системныеадминистраторы
Реклама. ООО «Алентис Электроникс», ИНН: 7720310270, erid: 2VtzqwqVt7V
🐧 Вы уже работаете с Linux, но хотите оперативно устранять сбои и решать нестандартные задачи при настройке серверов?
💪 Все продвинутые навыки — от баш-скриптов и умения гибко рулить авторизацией до применения подхода Infrastructure as code — ждут вас на онлайн-курсе «Administrator Linux. Professional» от OTUS.
Пройдите тестирование, чтобы:
- оценить свои навыки;
- занять место на курсе по специальной цене;
- получить доступ к бесплатным урокам курса (доступны сайте курса).
👉 Полное тестирование: https://vk.cc/cHrfeH
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Helm в Kubernetes: Продвинутая шаблонизация манифестов
⚡️бесплатный вебинар от учебного центра Слёрм!
🔴Рассмотрим создание ресурсов в Kubernetes с помощью YAML-файлов
🔴Обсудим шаблонизаторы ресурсов: Kustomize, Helm, CUE и Jsonnet
🔴Разберемся с терминологией Helm и основными командами
🔴Изучим внутреннее устройство одного helm-чарта
🔴Научимся искать и работать с готовыми helm-чартами с Artifact HUB
Спикер: Руслан Гайнанов, Тимлид DevOps-команды проекта «Осмакс» в ИТ-Холдинге Т1
Ведущий: Виталий Лихачев, SRE в крупном голландском тревелтехе
Когда: 29 января в 19:00
Занять место на вебинаре — через бота 👈
Реклама ООО «Слёрм» ИНН 3652901451
Открытый урок «Хранение данных в Kubernetes: Volumes, Storages, Stateful-приложения»
⏺️ 30 января в 20:00 МСК
Бесплатно. Урок в рамках старта курса «Инфраструктурная платформа на основе Kubernetes» от Otus.
На вебинаре:
✔️Разберем, что такое тома и постоянные тома в Kubernetes, и как они помогают организовать хранение данных;
✔️ определение между типами хранилищ: от локального до облачного и распределенного;
✔️ увидим, как эффективно работать с StatefulSet и управлять stateful-приложениями в Kubernetes;
✔️ лучшие практики настройки и использования Persistent Volume Claims (PVC), классов хранения и других инструментов.
Вебинар будет полезен:
DevOps-инженерам и разработчикам, системным администраторам, разработчикам Backend и FullStack, работающим с приложениями, требующими надежного хранения данных и сохранения состояния.
🚀 Ссылка на регистрацию: https://vk.cc/cHuhd3
Участники вебинара получат гарантированную скидку на курс.Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
❗️ Внимание! Открытый урок «Клиентская оптимизация веб-приложения» 23 января, 19:00 мск.
😱 Тесты скорости кричат: «слишком медленно»? Клиенты не хотят ждать? Узнайте, как ускорить приложение с минимальными усилиями, но максимальным результатом.
На вебинаре:
- разберём методы клиентской и серверной оптимизации;
- проанализируем скорость и научимся её тестировать;
- обсудим решения, которые внедряются за пару часов.
⭐️Спикер Николай Лавлинский — опытный разработчик, руководитель и преподаватель, кандидат экономических наук.
🚀 Участники урока получат скидку на большое обучение «Инфраструктура высоконагруженных систем».
👉 Регистрация для участия: https://vk.cc/cHrf5b
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🚀 Всё для сисадминов и директоров по ИТ – в одном месте!
✅ Рекомендации:
Popeye — утилита, которая сканирует работающие кластеры Kubernetes
kubectl-neat — плагин позволяющий удалить беспорядок из манифестов Kubernetes
Топ-5 полезных утилит для Docker
Kubernetes. Прокачка. Часть 1
Kubernetes. Прокачка. Часть 2
✅ Импортозамещение:
Облака: итоги 2024 и прогнозы 2025
Облака на практике и в теории
Российская виртуализация: всё важное в одном посте
Тестирование 6 отечественных СЗИ
✅ Инфобез:
БОЛЬШАЯ ИБ-ПОДБОРКА
CIS: лучшие мировые практики построения ИБ в компании
Ужесточение ответственности в сфере ПДн
Оборотные штрафы, уголовная ответственность – что делать прямо сейчас
Защита персданных: полный перечень документов
➡️ Присоединяйтесь к каналу для ДИТов
Реклама ООО "Кортэл"
ИНН: 7816246925
Привет всем пользователям и администраторам Linux! Специально для вас я создал канал @/usr/bin, в котором регулярно делюсь своим опытом и опытом других людей по администрированию ОС и приложений на ней. Каждый день в канале публикуется новая интересная статья.
В планах собрать интересную базу знаний, которой потом можно будет постоянно пользоваться.
Топ последних постов, опубликованных на канале:
🚀 usr_bin_linux/LxhslXBFN5w">Подстроки в Bash: извлечение и обработка
🚀 usr_bin_linux/EeS2XTYEeT6">Как устроен кэш Linux: руководство для начинающих
🚀 usr_bin_linux/f0hComg5ImT">Статья о том, как стать grep-ниндзей
🚀 usr_bin_linux/J7zSa1_cSiX">Буферный кэш PostgreSQL: автоматизация анализа с помощью bash-скрипта
🚀 usr_bin_linux/nnYHynU1C9g">Как проверить, используется ли папка службами в Linux
Подписывайтесь на канал /usr/bin, чтобы не пропустить новые интересные статьи.
Есть и другие каналы, которыми тоже занимаюсь:
🚀 @monitorim_it — всё о мониторинге
🚀 @zabbix_ru — лайфхаки в Zabbix
🚀 @elasticstack_ru — лайфхаки ElasticSearch/OpenSearch
Реклама. ООО "ГАЛС СОФТВЭР". ИНН:5047195298. Erid:2VtzqwickTE
Нетворкинг, живые кейсы и облачные технологии — всё на K2 Cloud Conf.
Ребята из K2 Cloud сделали свою конференцию, где поделятся всем про облака: как подключаться к ним без компромиссов в безопасности, автоматизировать процессы с помощью PaaS, а также расскажут о новом типе сетевых дисков – всё это и не только!
Встречаемся 4-го марта. Подробности и регистрация по ссылке.
erid: 2VtzqwJTkuJ
🚀 На открытом вебинаре «Процессы в Linux» мы разберёмся, что такое процесс, чем он отличается от программы и научимся находить, анализировать и управлять процессами в вашей системе.
Это не просто урок — это первый шаг к освоению Linux на профессиональном уровне! Администраторы, разработчики, девопсы — мы готовим базу, которая станет фундаментом вашей карьеры в IT.
⭐️ Спикер Андрей Буранов — системный администратор в VK, входит в топ-3 лучших преподавателей образовательных порталов.
Регистрируйтесь на открытый урок 28 января в 20:00 мск. Все участники вебинара получат скидку на обучение на курсе «Administrator Linux. Basic».
👉 Успейте занять своё место: https://vk.cc/cHRVht
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Ой чо я тебе принес!
Tower Networking Inc.
ㅤ
Халявный симулятор интернет провайдера. Обжимаем кабеля, конфигуряем циски, микротики, решаем проблемы, выслушиваем дерьмо от жильцов в свой адрес, короче полное погружение.
Вот сделал ты все как написано тут и тут и тут, сгенерил ключи и подготовил сервера, но сука все равно что-то какая-то шляпа:
Искал медь, обосрал медведь…
ssh user@server
Permission denied (publickey).
Особенно ребята испытывают страдания при запуске ансибла. И начинают грешить именно на ансибл и плейбуки, а дело тут опять же в этих ключах.
Ансибл ходит на сервера по ssh, соответственно это агент и ему тоже нужно знать про ssh ключи.
ssh -i ~/.ssh/bashdays_rsa user@server
sudo apt-get update
sudo apt-get install openssh-client
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/bashdays_rsa
ssh-add ~/.ssh/ed25519
ssh-add -L
~/.profile
(или чо там у тебя) такую конструкцию:if [ -z "$SSH_AUTH_SOCK" ]; then
eval $(ssh-agent -s) > ~/.ssh/ssh-agent
fi
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/bashdays_rsa
ssh-add ~/.ssh/ed25519
~/.zshrc
прописываем:plugins=(git ssh-agent)
zstyle :omz:plugins:ssh-agent agent-forwarding on
zstyle :omz:plugins:ssh-agent identities id_rsa bashdays_rsa ed25519
zstyle :omz:plugins:ssh-agent lifetime
~/.ssh/config
, открываем этот файл у себя на машине и пишем:Host bashdays.ru
Hostname bashdays.ru
IdentityFile /home/user/.ssh/bashdays_rsa
bashdays.ru
, то автоматически подставится указанный файл с ключами.Host github.com
Hostname github.com
IdentityFile ~/.ssh/id_ed25519
Host github.com-bashdays
Hostname github.com
IdentityFile ~/.ssh/bashdays_rsa
alias stage='ssh -i ~/.ssh/bashdays_rsa user@server'
alias prod='ssh -i ~/.ssh/id_ed25519 root@server'
[defaults]
private_key_file = ~/.ssh/bashdays_rsa
export ANSIBLE_PRIVATE_KEY_FILE=~/.ssh/bashdays_rsa
Немного съедем с темы и решим задачку с монтированием виндового раздела (BitLocker) в Linux.
Если у тебя есть виндовый диск который запечатан битлокером, оказывается нифига не просто его подключить.
При попытке монтирования получишь ошибку — анкновн файлсистем тайп БитЛохер.
Всё решается с помощью утилиты dislocker.
sudo apt install dislocker
sudo mkdir -p /mnt/bitlocker
sudo mkdir -p /mnt/bitlockermount
fdisk -l
ну или lsblk
. Ну а дальше делаем финт ушами:sudo dislocker <partition> -u<password> -- /mnt/bitlocker
fdisk
или lsblk
. Что-то типа /dev/sdd1 /dev/sdc1.
sudo mount -o loop /mnt/bitlocker/dislocker-file /mnt/bitlockermount
mount: /mnt/bitlockermount: wrong fs type, bad option, bad superblock on /dev/loop10, missing codepage or helper program, or other error.
sudo mount -t ntfs-3g -o loop /mnt/bitlocker/dislocker-file /media/bitlockermount
sudo mount -t exFAT-fuse -o loop /mnt/bitlocker/dislocker-file /media/bitlockermount
-p<password>
-c
-f <BEKFILE>
Заметь что после ключа -p нет пробела, это важно.
<partition> /mnt/bitlocker fuse.dislocker user-password=<password>,nofail 0 0
/mnt/bitlocker/dislocker-file /media/bitlockermount auto nofail 0 0
Скинул мне как-то давненько NPC свой ssh ключ, чтобы я прописал его на сервере. Смотрю я на этот ключик и понять не могу — ты блядь через что это сделал?
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAAAAAwA...
ed25519
это всего лишь один из видов ключей которые можно пропихать в ~/.ssh/authorized_keys
. И всё будет работать!rsa, ecdsa, ed25519, dsa
(устаревший), может что-то еще существует, хуй знает, не интересовался.ssh-rsa AAAAB3NzaC1yc2EAAAABIw...
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTI...
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICm8x...
ssh-dss AAAAB3NzaC1kc3MAAACBAPnsfNOnD...
ssh-keygen -t dsa -f ~/.ssh/bashdays_dsa
- В одном лабиринте(пики точеные)тебе нужно просто найти правильное число, которое делится на два других (RSA).
- В другом лабиринте(хуи дроченые)тебе нужно найти точку на сложной кривой, которая соответствует определенному числу (ED25519).
"Conversions" → "Export OpenSSH Key"
sudo apt update
sudo apt install putty-tools
puttygen bashdays.ppk -O private-openssh -o id_ed25519
ssh-keygen -y -f id_ed25519 > id_ed25519.pub
На прохождение Cyber Shadow я потратил 20 часов и сдох 727 раз. Что сказать, моя жопа давно так не горела, со времен Ninja Gaiden на Денди. Но своеобразное удовольствие я всё же получил.
Ладно, сегодня продолжаем серию постов #linuxfactory
ㅤ
SSH ключи мы с тобой сделали, на сервере их прописали, надеюсь хорошо разжевал и ты проникся.
Но это еще не всё, сервер не готов запускать тебя по ключам. Сейчас это исправим.
Пиздуем на сервер под рутом, на тот самый куда ты закинул публичную часть ключа и открываем на редактирование файл /etc/ssh/sshd_config
.
Активируем эти строчки:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
ChallengeResponseAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
PermitRootLogin no
UsePAM no
PermitRootLogin no
ты иногда все равно сможешь зайти под рутом. Тут все дело в невинном файле который порой пихают из коробки. /etc/ssh/sshd_config.d/50-cloud-init.conf
PermitRootLogin yes
.Так что, если ты отключил это в основном конфиге, проверь, а нет ли где-то еще реврайтов. На эти грабли очень часто наступают и тратят пол дня на дебаг.
sshd -t
systemctl reload sshd
Бывают неприятные моменты, когда ты отключил вход по паролю и ssh ключи не завелись. Пизда рулю. Позже покажу как и это решать малой кровью.
/etc/ssh/ssh_config
/etc/ssh/sshd_config
/etc/ssh/sshd_config
.Такс, по гиту немного прошлись (но еще вернемся), теперь по ssh ключам. Для многих как оказалось тоже большая проблема. Но это база, поэтому нужно с этим научиться жить. Принять и простить.
Задача — хочу с локальной машины подключиться к серверу по ssh используя ключ.
В момент подключения к серверу публичная часть ключа «сравнивается» с приватной частью и если все хорошо, то включается зеленый свет.
ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/bashdays_rsa
~/.ssh/
.-N
указывает что на ключе не будет парольной фразы. Если по безопасности упарываешь, то можешь поставить пароль и ебстись с ним в будущем.~/.ssh/
два ключа bashdays
и bashdays.pub
. ssh-keygen -y -f ~/.ssh/bashdays_rsa > ~/.ssh/bashdays.pub
ssh-copy-id -i ~/.ssh/bashdays.pub root@server
ssh-copy-id -i ~/.ssh/bashdays.pub suchka@server
bashdays_rsa
, подключиться к удаленному серверу так:ssh -i ~/.ssh/bashdays_rsa root@server
ssh -i ~/.ssh/bashdays_rsa suchka@server
ssh-copy-id
, а сразу ручусь на сервер под паролем, руками создаю файл /home/user/.ssh/authorized_keys
и в него просто копирую содержимое публичного ключа bashdays.pub.
authorized_keys
должны быть права 600 или 644. Иначе на сервер не пустят. У меня всегда 600.chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ssh-copy-id.
cat ~/.ssh/bashdays_rsa.pub | ssh username@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
И снова здрасти, продолжаем больные темы.
А еще ребят пиздец напрягает каждый раз делать:
git add .
git commit -m "ебальник убивальник"
git push
~/.bashrc
или чо там у тебя ~/.zshrc
и пиздяришь:alias gg="git add . && git commit -m \"$(date +'%d-%m-%Y %H:%M:%S')\" && git push"
source ~/.bashrc && ~/.zshrc
. Теперь когда нужно что-то закомитить и отправить. Просто пишем «gg» и дело в шляпе.[alias]
cm = "commit -m"
git config --global alias.cm "commit -m"
git cm "initial commit"
[alias]
a = add
aa = add .
c = commit
cm = commit -m
s = status
pl = pull
pu = push
df = diff
b = branch
bl = branch --all
bd = branch --delete
bD = branch -D
bren = branch -m
bdr = push origin --delete
fa = fetch --all
fp = fetch -p
t = tag
tf = fetch --tags
tpu = push origin --tags
tpuacq = push acquia --tags
td = tag -d
tpur = push origin --delete
tpuacq = push acquia --delete
co = checkout
cob = checkout -b
resh = reset --hard
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --graph
clear = clean -f -d
clearw = checkout -- .
git push
и git pull
Еще один частый затык с гитом — у тебя создана чистая репа в гитлабе и локально на машине лежит уже наработанный проект. Но проект еще не под гитом.
ㅤ
Как заебенить проект в репу в гитлабе?
Первый вариант
Самый беспроигрышный и лёгкий вариант — это склонировать себе эту чистую репу в какую-нибудь папку и затем просто перетащит в эту папку все файлы из твоего проекта.
Приватные репы клонируй через git@
, а публичные можешь и через https
.
Если попробуешь склонировать приватную репу через https, оно запросит у тебя логин и пароль от учетки гитлаба/гитхаба. Но такие вещи обычно делают на ssh ключах, без хуйни и паролей.
git clone git@gitlab.com:linuxfactory/infra.git
git add .
git commit -m "initial commit"
git push
Author identity unknown
, про этот случай я рассказывал вчера.cd /path/to/project
git init
git add .
git commit -m "initial commit"
git remote add origin https://gitlab.com/username/reponame.git
git push -u origin master
fatal: repository not found
remote: HTTP Basic: Access denied
remote origin already exists
Updates were rejected because the tip of your current branch is behind
error: failed to push some refs
rebase
или вообще конфликты решать. А решать конфликты это то еще удовольствие..git
в проекте. Сделай все по первому способу и всё починится. Это намного быстрее чем разгребать и дебажить неочевидные ошибки.Как я понял много кто за гит не шарит, опять же судя по ОЧЕНЬ частым вопросам в LF. Хотя очевидные вещи для одного, не всегда очевидны для другого.
Поэтому давай закрывать эти боли. Будет несколько серий постов, банально, но полезно. Пройдем максимально просто и быстро. Если чо непонятно пиши в комменты, будем разбираться.
Думал в рамках закрытого интенсива сделать, но пусть будет бесплатно.
ㅤ
Ну и первая проблема:
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: empty ident name (for <user@dev.>) not allowed
git commit
.git config --global user.email "hello@devopsina.ru"
git config --global user.name "Roman Shubin"
~/.gitconfig
1. BashDays
2. LinuxFactory
.git
и открываем на редактирование файл config
.[user]
name = Roman Shubin
email = hello@devopsina.ru
git config user.email "hello@devopsina.ru"
git config user.name "Roman Shubin"
--global.
git config --list --show-origin
- Если вы используете GitHub, GitLab или другую платформу, и хотите, чтобы ваши коммиты были связаны с вашим аккаунтом, то email, указанный в Git, должен совпадать с email, привязанным к вашему аккаунту на этой платформе. Это нужно для того, чтобы платформа могла корректно отображать ваши коммиты в вашем профиле.
- Если email не совпадает, коммиты все равно будут отправлены, но они не будут автоматически связаны с вашим аккаунтом на платформе.
Как правильно хранить тяжелые файлы гит репах? Например, бинарники или что-то подобное.
ㅤ
Ответ очевидный и правильный — никак! В гитлабах/гитхаба/битбакетах установлены лимиты на размер отдельных файлов. Там что-то вроде 50 метров на файл дается.
В принципе можно уложиться. Но нахуй надо. Прикинь у тебя пайплайн вытягивает репу размером с 10 гигабайт. И так каждую сборку. Гит репа должна быть тощей и дрищёвой.
А всё тяжелое будь бобр-добр храни в s3 либо на других решениях.
НО если очень хочется прям в гите держать. Для этого существует GIT LFS
. Дословно — Large File Storage (дохуя большое файловой хранилище).
У LFS
уже свои лимиты в отличие от нативного git репозитория. И это LFS
включен из коробки в гитлабах/гитхаба/битбакетах. Там уже размер файла может быть 1 гигабайт или что-то вроде того.
В gitea тоже можно LFS
через конфиг включить:
[server]
LFS_START_SERVER = true
LFS_ALLOW_PURE_SSH = true
[lfs]
PATH = /home/gitea/data/lfs
apt-get install git-lfs
brew install git-lfs
cd /home/user/linuxfactory/infra
git lfs install
/infra/roles/node_exporter/files
у меня лежит бинарник node_exporter который весит 100 мегабайтcd /infra/roles/node_exporter/files
git lfs track "node_exporter"
.gitattributes
. Это правила для этого файла, которые указывают чтобы node_exporter улетал в LFS
.node_exporter filter=lfs diff=lfs merge=lfs -text
LFS
.git lfs track "*.jpg"
git add .
git commit -m "add lfs for node_exporter"
git push
LFS
, а в самом гит репозитории осталась лишь ссылка которая на этот файл ссылается.Пишу очередной урок для LF и понадобилось мне нагенерить мусорного трафика в прометеус. Чтобы ребятам показать визуально как это будет выглядеть в графане.
Тестировщикам (QA) кстати тоже эта хуйня отлично зайдет, хайлоад там устроить.
ㅤ
Для таких дел я обычно использую 2 утилиты.
1. Bombardier
2. Stress
bombardier -c 125 -n 10000000 http://localhost:8080
stress --cpu 4
stress --hdd 100
stress --cpu 4 --vm 2 --io 1 --timeout 20
apt install bombardier stress
wrk, ab, hey
и т.п. но с ними как-то у меня не сложилось.