ServerAdmin.ru
31K subscribers
573 photos
46 videos
22 files
2.83K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Регистрация в РКН: https://vk.cc/cG1Urj
Download Telegram
​​На канале было много обучающего материала про git. Как курсы, так и тренажёры, игры. Но при этом я ни разу не упомянул про книгу с переводом на русский язык Pro Git (авторы Scott Chacon и Ben Straub). Она полностью переведена и выложена на сайте:

https://git-scm.com/book/ru/v2

Я не могу сказать, что это самая лучшая книга про git или что-то в этом роде, потому что других не читал. Но к этой возвращался много раз. На неё ведёт много поисковых запросов из поисковиков. Регулярно вижу их, когда что-то ищу по git. Некоторые главы книги я внимательно изучал, когда разбирался с какой-то темой.

Сейчас существует не так много обучающего материала в текстовом виде, да ещё в веб версии, с которой легко и удобно работать - искать, читать. Книга даже в электронном виде не так удобна для взаимодействия. А вот если она выложена по главам на сайте, то это уже другое дело. Да ещё и полностью бесплатно.

Там же, кстати, есть и pdf, и epub версия. И так же есть git версия на github:
https://github.com/progit/progit2-ru

#обучение #git
​​🎓 Мне давно скидывали ссылку на небольшой курс по GIT на youtube для начинающих. Там с самых азов даётся инфа для тех, кто с GIT никогда не работал. Только сейчас дошли руки посмотреть. Вроде неплохо сделано, послушал введение. Комментарии хорошие, просмотров много. Весь материал разбит на небольшие ролики по 5-7 минут, где разбирается одна тема. Если вы совсем нулёвый по этой теме, то это для вас:

Базовый курс по Git

Заодно решил подбить всю эту тему с обучением GIT.

▪️ Обзорное видео по GIT от авторского ютуб канала Артема Матяшова - Git. Большой практический выпуск. Автор очень хорошо объясняет. Если прям ничего про GIT не знаете, рекомендую начать с него. Хороший монтаж, подача, оформление. Я почти все его видео с удовольствием смотрел. У него их немного.

🔥Очень прикольная визуальная обучалка по основам GIT - LearnGitBranching. Она поддерживается, регулярно обновляется. Качественно сделана. Есть русский язык.

▪️ Ещё одна игра по обучению GIT - Oh My Git! Она попроще learnGitBranching, но в целом тоже неплохая.

▪️ Бесплатный курс по основам от Слёрм - Git для начинающих.

▪️ Бесплатные курсы по основам GIT на Stepik: Основы работы с Git и Самоучитель по GIT.

▪️ Более продвинутый курс с погружением в нюансы, ориентированный на разработчиков - Git курс от сообщества javascript.ru.

▪️ Бесплатная книга на русском языке - Pro Git book.

В завершении добавлю мотивирующий текст, который я написал ещё 3 года назад здесь на канале, если вы всё ещё сомневаетесь, надо ли вам разбираться с GIT или нет:

Хочу посоветовать всем системным администраторам, кто это еще не сделал, обратить пристальное внимание на git. Сам я давно пользуюсь этой системой контроля версий, но только недавно дошел до того, что стал там хранить практически все текстовые данные. 

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

Теперь всегда, прежде чем начать писать какой-то скрипт или более ли менее большой конфиг, создаю репозиторий под это дело и все пушу туда. Я обычно использую облачный gitlab и свой локальный для приватных данных. Gitlab - мое личное предпочтение. Вы можете использовать любой бесплатный сервис. Их сейчас полно развелось. 

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

С тех пор я неизменно верен себе. Все нужные скрипты, конфиги в обязательном порядке хранятся в репозиториях git, как локально на ноуте, так и на удалённых сервисах.

#обучение #git #подборка
Git - довольно замороченная система контроля версий. Не очень понятно, за что она завоевала такую популярность. Разобраться с ней - пуд соли съесть. Какие-то самые простые вещи делать не сложно. А вот если чуть копнуть, то там тёмный лес.

Об этом тёмном лесе даже сайт замутили с говорящим названием - ohshitgit.com. В англоязычном интернете он довольно популярен. Не раз видел на него ссылки. У нас особо не встречал. Есть две русские версии этого сайта.

⇨ Одна матерная - https://ohshitgit.com/ru
⇨ Вторая без мата - https://dangitgit.com/ru

Я кратко перечислю команды, которые там описаны, чтобы просто отложилось в голове информация о том, что так можно. Потом можно будет найти и посмотреть команду. О некоторых вещах просто не знаешь, хотя они много раз пригодились бы. Например, я только на этом сайте узнал, что текст последнего коммита, оказывается, можно спокойно изменить. Или то, что можно подправить последний коммит, если заметил, что какую-то опечатку или мелкую поправку не сделал, а не делать ещё один коммит.

📌 Журнал всех действий в репозитории:
# git reflog
Откатится на какое-то событие из этого списка:
# git reset HEAD@{index}

📌 Добавить что-то в уже созданный коммит:
# git add .
# git commit --amend --no-edit

📌 Изменить сообщение последнего коммита:
# git commit --amend

📌 Перенести последний коммит из мастер ветки в новую ветку:
# git branch какое-то-имя-новой-ветки
# git reset HEAD~ --hard
# git checkout какое-то-имя-новой-ветки

📌 Отменить коммит, который был 5 коммитов назад:
# git log
# git revert [сохранённый хеш]

📌 Отменить изменения в файле:
# git log
# git checkout [сохранённый хеш] -- путь/к/файлу
# git commit -m "Ого, теперь не придётся копипастить, чтобы отменить изменения!"

Для тех, кто не видел, оставлю ссылку на публикацию с подбором хороших обучающих материалов по git:

🎓 Подборка бесплатных материалов по GIT

#обучение #git
В моих заметках про self-hosted сервера GIT постоянно возникали упоминания Gogs. Это тоже легковесный open source сервис GIT от китайских разработчиков. Причём упоминаемая несколько раз ранее Gitea является форком Gogs, который случился довольно давно. С тех пор Gitea развивается намного активнее, обросла дополнительной функциональностью, была приобретена коммерческой компанией и получила какие-то проблемы с лицензией, так что и её уже форкнули в новый проект Forgejo.

Если вам нужно простое хранилище кода с различной функциональностью только вокруг него, то Gogs будет оптимальным выбором с точки зрения потребления ресурсов. Там нет ни своего registry, ни инструментов для CI/CD, ни учёта времени, ни многих других возможностей, которые есть в той же Gitea.

При этом базовые возможности для совместной работы с кодом там будут:

- привычные профили пользователей, дашборды с активностью и т.д.;
- доступ к репам по ssh и https;
- веб редактор для работы с кодом и записями в wiki;
- аутентификация по паролям, через LDAP или SMTP (!) сервер
- управление пользователями, организациями, репозиториями.

В общем, тут только GIT и ничего больше. В качестве хранилища состояния могут использоваться PostgreSQL, MySQL, SQLite3 и TiDB. При использовании SQLite3 для запуска службы не нужно ничего, кроме самого бинарника gogs и установленного в системе git:

# apt update && apt install git -y
# wget https://dl.gogs.io/0.13.0/gogs_0.13.0_linux_amd64.tar.gz
# tar xzvf gogs_0.13.0_linux_amd64.tar.gz
# cd gogs
# ./gogs web

Запускается gogs в режиме веб сервера. Можно идти на 3000-й порт по IP адресу и выполнять настройку. Как я уже сказал, если выбрать в качестве СУБД SQLite3, то установка будет выполнена тут же, а база будет создана в файле data/gogs.db.

Веб интерфейс работает очень быстро и легко. Системные требования минимальны. Запускается на VPS с 512 МБ оперативной памяти. Есть русский язык. По умолчанию выбирается язык браузера. Чтобы его поменять, надо выйти к окну логина и там снизу выбрать. Я сначала долго искал, никак не мог понять, как изменить язык.

Доступа к сайту gogs.io без VPN нет. Как я понял, это блокировка со стороны РФ для хостера DigitalOcean. Сайт живёт на нём.

🌐 Сайт / Исходники

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#git
Очень простая и быстрая в настройке утилита для бэкапа GIT репозиториев. Можно использовать как для бэкапа куда-то локально или в S3, так и для копирования из одного репозитория в другой. Речь пойдёт про open source проект gickup.

Сразу покажу на примере, как я забэкапил к себе локально несколько своих закрытых репозиториев на публичном gitlab.

# wget https://github.com/cooperspencer/gickup/releases/download/v0.10.38/gickup_0.10.38_linux_amd64.tar.gz
# tar xzvf gickup_0.10.38_linux_amd64.tar.gz

Создаю конфигурационный файл conf.yml:

source:
gitlab:
- token: glpat-GtPuYrBvnxxkTFsq-Y
url: https://gitlab.com/
user: zeroxzed
include:
- gatus
- scripts
- configs
wiki: true
issues: true

destination:
local:
- path: /home/zerox/backup-gitlab
structured: true
keep: 5


Для получения token сходил в PreferencesAccess tokens и создал personal access token с доступом только на чтение. В своём примере я забэкапил только 3 репозитория: gatus, scripts, configs. Если их не указать, забэкапит все.

Запускаю бэкап:

# ./gickup conf.yml

Вот и всё. Gickup поддерживает все популярные платформы для хостинга git, как публичные, так и приватные:

- Github
- Gitlab
- Gitea
- Gogs
- Bitbucket
- Onedev
- Sourcehut

В качестве источников для сохранения или копирования поддерживает их же, плюс:

- локальная директория
- S3 хранилище

Настройка источников и приёмников отражена в документации. Там всё кратко и по делу. Список параметров невелик. У меня сразу всё получилось.

Очень простой и быстрый способ копировать репозитории в одно или несколько мест одновременно. Дополнительно gickup умеет отправлять уведомления о своей работе в ntfy, gotify и apprise. Также может локально логи писать и отправлять метрики в Prometheus. Правда не очень понял какие. Не проверял это.

🌐 Сайт / Исходники

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#git #backup #devops