echo "# название" >> README.md - создание файла README.mdgit init - инициализация репозиторияgit add README.md - добавления файла README.md в проектgit commit -m "first commit" - получает проиндексированный снимок состояния и выполняет его коммит в историю проектаgit remote add origin https://github.com/stanruss/название.git - команда, которой устанавливается подключение к удаленному серверу и git репозиторию, размещающемуся на нем.git push -u origin master - кзменения отправляются на удаленный серверgit log --oneline - посмотреть все коммиты.git checkout . - восстановить все.git checkout "код коммита" - вернуть до состояния этого коммита.git checkout master - вернуться в ветку мастер.Восстановить файлы на локальном компьютере:
git fetch --all
git reset --hard origin/master или git reset --hard origin/<название_ветки>
git add text.txt - Добавить файл в репозиторийgit rm text.txt - Удалить файлgit status - Текущее состояние репозитория (изменения, неразрешенные конфликты и тп)git commit -a -m "Commit description" - Сделать коммитgit push origin - Замерджить все ветки локального репозитория на удаленный репозиторий git push origin master - Аналогично предыдущему, но делается пуш только ветки mastergit push origin HEAD - Запушить текущую ветку, не вводя целиком ее названиеgit pull origin - Замерджить все ветки с удаленного репозиторияgit pull origin master - Аналогично предыдущему, но накатывается только ветка mastergit pull origin HEAD - Накатить текущую ветку, не вводя ее длинное имяgit fetch origin - Скачать все ветки с origin, но не мерджить их в локальный репозиторийgit fetch origin master - Аналогично предыдущему, но только для одной заданной веткиgit checkout -b some_branch origin/some_branch - Начать работать с веткой some_branch (уже существующей)git branch some_branch - Создать новый бранч (ответвится от текущего)git checkout some_branch - Переключиться на другую ветку (из тех, с которыми уже работаем)git branch # звездочкой отмечена текущая ветвь - Получаем список веток, с которыми работаемgit branch -a # | grep something - Просмотреть все существующие ветвиgit merge some_branch - Замерджить some_branch в текущую веткуgit branch -d some_branch - Удалить бранч (после мерджа)git branch -D some_branch - Просто удалить бранч (тупиковая ветвь)git show d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4 - Изменения, сделанные в заданном коммитеgit push origin :branch-name - Удалить бранч из репозитория на сервереgit reset --hard d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4 - Откатиться к конкретному коммиту и удалить последующие (хэш смотрим в «git log»)git push -f - Залить на сервер измененные коммитыgit clean -f - Удаление untracked filesPlease open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Чтобы открыть всю мощь ИИ, начните с помощью ИИ искать разные промокоды )) Можно экономить нормально денег при покупке разных товаров :)
Please open Telegram to view this post
VIEW IN TELEGRAM
💯6
Путаешься между Dockerfile и Docker Compose?
Это для тебя.
Хотя они дополняют друг друга, их назначение в контейнеризированной среде различается.
Dockerfile — используется для создания и сборки Docker-образов.
Docker Compose — используется для запуска контейнеров как части мультиконтейнерного окружения или с определёнными параметрами выполнения.
🔹 Начиная с версии 1.28.6, Docker Compose по умолчанию ищет
Вот простая схема, чтобы тебе было легче разобраться
Это для тебя.
Хотя они дополняют друг друга, их назначение в контейнеризированной среде различается.
Dockerfile — используется для создания и сборки Docker-образов.
Docker Compose — используется для запуска контейнеров как части мультиконтейнерного окружения или с определёнными параметрами выполнения.
compose.yaml или compose.yml. Поддержка docker-compose.yaml/yml сохраняется для обратной совместимости, но если оба файла присутствуют, будет использоваться compose.yaml.Вот простая схема, чтобы тебе было легче разобраться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4❤🔥2👍1
Эта схема отображает ключевые концепции безопасности в Kubernetes — от RBAC, PodSecurity и аудита до изоляции контейнеров — помогая командам визуализировать точки применения политик.
Разработана Telenor для on-prem кластеров, отлично подходит для моделирования угроз и проведения ревью.
https://kubesec-diagram.github.io/
Разработана Telenor для on-prem кластеров, отлично подходит для моделирования угроз и проведения ревью.
https://kubesec-diagram.github.io/
👍4
Эта схема показывает структуру файловой системы Linux и объясняет предназначение различных директорий, находящихся в корневом каталоге /
/bin - Бинарные файлы основных команд/boot - Файлы загрузчика системы/dev - Файлы устройств/etc - Системные конфигурационные файлы, специфичные для хоста/home - Домашний каталог пользователя/lib - Модули общих библиотек/media - Файлы мультимедиа, такие как CD-ROM/mnt - Временно смонтированные файловые системы/opt - Дополнительные пакеты программного обеспечения/proc - Интерфейс к структурам данных ядра/root - Домашний каталог пользователя root/run - Данные времени выполнения/sbin - Системные бинарные файлы/srv - Служебные данные, обслуживаемые этой системой/sys - Виртуальный каталог для информации о системе/tmp - Временные файлы/usr - Ресурсы Unix-системы/var - Файлы, которые постоянно изменяютсяPlease open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Привет, DevOps-инженеры! Если вы уже освоили азы NGINX, давайте углубимся в его мощь и рассмотрим, как он становится незаменимым инструментом в сложных архитектурах. Сегодня разберем кейс: обслуживание статического фронтенда и проксирование запросов к бэкенд API через NGINX.
Представьте: у вас есть SPA (Single Page Application) на React/Vue/Angular, который нужно отдавать пользователям, и REST API на Python/Node.js, к которому этот фронтенд обращается. NGINX идеально подходит для этой задачи.
Пример конфигурации:
Разберем ключевые моменты:
💡 DevOps Лайфхак: Горячая перезагрузка NGINX без простоя!
В продакшене каждая секунда простоя — это деньги. При изменении конфигурации NGINX не обязательно его полностью останавливать и запускать заново. Используйте команду:
Эта команда заставляет NGINX загрузить новую конфигурацию, не прерывая обработку текущих запросов. Старые воркеры продолжают обслуживать активные соединения, а новые начинают использовать обновленную конфигурацию. После завершения старых соединений, старые воркеры корректно завершают работу. Это позволяет обновлять конфигурацию NGINX без единого простоя!
Почему это важно? В CI/CD пайплайнах, когда вы деплоите новую версию фронтенда или бэкенда, или меняете маршрутизацию, nginx -s reload становится вашим лучшим другом для бесшовных обновлений.
Представьте: у вас есть SPA (Single Page Application) на React/Vue/Angular, который нужно отдавать пользователям, и REST API на Python/Node.js, к которому этот фронтенд обращается. NGINX идеально подходит для этой задачи.
Пример конфигурации:
nginx.confserver {
listen 80;
server_name your-domain.com www.your-domain.com;
# Отдача статических файлов фронтенда
location / {
root /var/www/your-frontend-app/build; # Путь к скомпилированному фронтенду
try_files $uri $uri/ /index.html; # Важно для SPA: все запросы, не являющиеся файлами, ведут на index.html
}
# Проксирование запросов к API
location /api/ {
proxy_pass http://your-backend-service:8000/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Опционально: редирект HTTP на HTTPS (для продакшена)
# listen 443 ssl;
# ssl_certificate /etc/nginx/ssl/your-domain.crt;
# ssl_certificate_key /etc/nginx/ssl/your-domain.key;
# return 301 https://$host$request_uri;
}Разберем ключевые моменты:
location /- Отвечает за отдачу статических файлов вашего фронтенда. root указывает на директорию со скомпилированным приложением. try_files — это магия для SPA, которая гарантирует, что при прямом заходе на роут (например, your-domain.com/users) NGINX отдаст index.html, а не 404.
location /api/- Здесь мы настраиваем проксирование всех запросов, начинающихся с /api/, на ваш бэкенд-сервис. proxy_pass указывает адрес и порт бэкенда. Заголовки proxy_set_header критически важны для корректной работы бэкенда, так как они передают информацию об оригинальном запросе (хост, IP клиента, протокол).
💡 DevOps Лайфхак: Горячая перезагрузка NGINX без простоя!
В продакшене каждая секунда простоя — это деньги. При изменении конфигурации NGINX не обязательно его полностью останавливать и запускать заново. Используйте команду:
sudo nginx -s reload
Эта команда заставляет NGINX загрузить новую конфигурацию, не прерывая обработку текущих запросов. Старые воркеры продолжают обслуживать активные соединения, а новые начинают использовать обновленную конфигурацию. После завершения старых соединений, старые воркеры корректно завершают работу. Это позволяет обновлять конфигурацию NGINX без единого простоя!
Почему это важно? В CI/CD пайплайнах, когда вы деплоите новую версию фронтенда или бэкенда, или меняете маршрутизацию, nginx -s reload становится вашим лучшим другом для бесшовных обновлений.
🔥4
Если у вас вдруг сегодня падает npm install или npm ci, то это потому что команда npm-security выпилила пакет stylus из npm, заявляя, что в нём найдена зловредная уязвимость.
Весь ваш enterprise-проект, построенный на сотнях зависимостей, оказался карточным домиком, из которого вытащили одну пыльную картонку.
https://github.com/advisories/GHSA-fh4q-jc76-r59p
https://github.com/stylus/stylus/issues/2938
Весь ваш enterprise-проект, построенный на сотнях зависимостей, оказался карточным домиком, из которого вытащили одну пыльную картонку.
https://github.com/advisories/GHSA-fh4q-jc76-r59p
https://github.com/stylus/stylus/issues/2938
😁4👍1👌1
SoftSkills.txt
6.6 KB
Кстати, DevOps – это не только про харды, но и про софты. Оставлю топ-10 советов, как быстро развить софты, потому что софты, в последнее время, выходят на передний план с появлением всяких там ИИ/LLM и прочего 😊
❤🔥4
Для отладки bash-скриптов существует инструмент set -xve. Это мастхев фича именно на момент, создания чего-либо т. к. не всегда логика может работать правильно, а с set -xve, можно вовремя увидеть все значения переменных и т.п. не используя мусорные конструкции, например, echo «Error in function xxx».
Применяется так:
Основные флаги set:
x — вывести команды и их аргументы по мере их выполнения.
v — вывести строки ввода командной строки по мере их считывания.
e — выход, если команда завершается с ненулевым статусом.
Пример:
Изменяем PS4 и добавляем вывод номера строки во включенный дебаг режим:
После выполнения мы видим:
Теперь если скрипт где-то вылетает с плохим статусом, всегда можно узнать в какой строке это приключилось
Немного украшательств, экспортируем PS4:
Происходит подкрашивание запускаемых строчек.
С помощью PS4 можно отладить shell-скрипт, задав при его выполнении set -x, что позволяет выводить каждую команду, а затем ее результаты. Перед каждой командой ставится знак +, эту строку подсказки «+» можно изменить, определив переменную PS4.
Применяется так:
#!/bin/bash -xve
set -xve
Основные флаги set:
x — вывести команды и их аргументы по мере их выполнения.
v — вывести строки ввода командной строки по мере их считывания.
e — выход, если команда завершается с ненулевым статусом.
Пример:
Изменяем PS4 и добавляем вывод номера строки во включенный дебаг режим:
#!/bin/bash -xve
PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
bar=10
echo ${bar}
echo $((6 + 6))
После выполнения мы видим:
bar=10
+(./script.sh:6): foo=10
echo ${bar}
+(./script.sh:7): echo 10
10
echo $((6 + 6))
+(./script.sh:8): echo 12
4
Теперь если скрипт где-то вылетает с плохим статусом, всегда можно узнать в какой строке это приключилось
Немного украшательств, экспортируем PS4:
PS4='\033[0;33m+(${BASH_SOURCE}:${LINENO}):\033[0m ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'Происходит подкрашивание запускаемых строчек.
С помощью PS4 можно отладить shell-скрипт, задав при его выполнении set -x, что позволяет выводить каждую команду, а затем ее результаты. Перед каждой командой ставится знак +, эту строку подсказки «+» можно изменить, определив переменную PS4.
❤3👍3
Горячие клавиши терминала Linux (часть 1)
Общие:
Общие:
Ctrl + Alt + T — в дистрибутивах, основанных на Ubuntu, это сочетание клавиш используется для открытия терминала.Tab — эта клавиша используется для автодополнения в терминале. Вам достаточно набрать начало какой-нибудь команды, затем нажать её, и команда предложит доступные варианты или завершит её, если она одна.Ctrl + L — очистить весь вывод терминала.Ctrl + S — приостановить вывод терминала.Ctrl + Q — возобновить вывод, если он был приостановлен.Ctrl + C — отправить команде сигнал SigInt для её завершения.Ctrl + Z — свернуть текущую команду в фоновый режим.❤🔥3
Ребята давайте еще раз попрошу вас, проголосовать на какие темы вам было бы интересно читать посты,это не говорит о том что посты будут только на эту тематику, но упор будет выбран на интересующую вас тему
Anonymous Poll
37%
DevOps для начинающих (разные фишки,хаки для начинающих)
24%
DevOps для опытных (сложные хаки, фишки)
21%
1+2 варианты
8%
Новости из мира DevOps
13%
DevOps+AI новости
29%
DevOps+AI внедрение ИИ процессов в DevOps
29%
Личный опыт
24%
Факапы и лайфхаки из мира DevOps
11%
Мемчики из мира IT
18%
За все варианты
Сегодня, в честь праздника выходной от постов. Отдохнем и мы, и вы отдыхайте от информационного шума :) Всем хорошей пятницы и выходных 🍻 🍺
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾7