DevOps Portal | Linux
13.4K subscribers
867 photos
112 videos
10 files
881 links
Присоединяйтесь к нашему каналу и погрузитесь в мир DevOps

Связь: @devmangx

РКН: https://clck.ru/3P8kFH
Download Telegram
1000+ Bash скриптов для DevOps

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

Так что держите эту большую подборку — это скрипты, связанные с настройкой и управлением AWS, GCP, Kubernetes, Docker, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure TeamCity, Spotify, LDAP, Python и это далеко не полный список

Есть здесь даже скрипты для конфигурирования .bashrc, .vimrc, .gitconfig, .screenrc, tmux

Ссылка: тык

👉 DevOps Portal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍221
Упражнения для DevOps специалистов на GitHub

Репозиторий содержит в себе разные упражнения по:
- Linux
- DNS
- АРМ
- Go


И мноооого всего другого

Ссылка: тык

👉 DevOps Portal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍5🏆2
tailspin

Утилита, которая позволяет просматривать логи с подсветкой. Это удобно, красиво и сокращает много времени на анализ.

Но есть один минус - если привыкните, то читать логи без этой тулзы будет очень сложно 🤓

🔛 https://github.com/bensadeh/tailspin

👉 DevOps Portal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥6😁2
Команды systemd для управления Docker

Для запуска Docker многие дистрибутивы Linux используют systemd. Для запуска сервисов используется команда systemctl. Если ее нет, следует использовать команду service.

$ sudo systemctl start docker
$ sudo service docker start


Чтобы добавить сервис в автозагрузку, либо убрать его:

$ sudo systemctl enable docker
$ sudo systemctl disable docker


Для проверки параметров запуска сервиса и их изменения:

$ sudo systemctl edit docker

Просмотра связанных с сервисом журналов:

$ journalctl -u docker

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Держите пять классных ресурсов, которые помогут разобраться в GIT

👉 Learn Git Branching — это интерактивный учебник по Git, направленный на закрепление теории прохождением наглядной практики.

👉 Oh My Git! — игра для обучения Git. Там визуализируются внутренние структуры репозиториев. Игра опенсорс, так что можно покопаться в исходниках

👉 Git How To — это интерактивный тур, который познакомит вас с основами Git

👉 Pro Git book — онлайн учебник по Git, который предлагает подробные руководства и документацию по всем аспектам работы с системой контроля версий

👉 Git Gud — CLI-игра с различными уровнями сложности, которая поможет освоить Git от базового уровня до профи

👉 DevOps Portal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤔1🤝1
KubePug

Загружает сгенерированный файл data.json, содержащий информацию об устаревании API Kubernetes

Проверяет текущий кластер Kubernetes или входные файлы, проверяя, существуют ли объекты в этих устаревших версиях API, позволяя пользователю проверить перед переносом

Особенности

🔛 Может запускаться в кластере Kubernetes, используя kubeconfig или текущий кластер
🔛 Может выполняться с другим набором манифестов/файлов
🔛 Позволяет указать целевую версию Kubernetes, подлежащую проверке
🔛 Предоставляет заменяющий API, который следует использовать
🔛 Сообщает версии, что API устарел или удален, в зависимости от версии целевого кластера

Как использовать

Запустите kubectl krew install deprecations

Как использовать с Helm

Если хотите проверить сгенерированные манифесты с помощью Helm, можно запустить так:

helm template -f values.yaml .0 | kubepug --k8s-version v1.22.0 --input-file=-


Измените аргументы в kubepug (и шаблоне Helm) по своему желанию

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
#Cобеседования

df сообщает о наличии 20 Гб занятого пространства, подсчёт занятого файлами места при помощи du даёт результат в 20 Мб. При каких обстоятельствах может возникнуть описанная ситуация?

Когда файл удален т. к. файловый дескриптор «держит» его.

Ищем файл через:

lsof -a +L1 | grep var | grep httpd

При удалении файла, который в этот момент был «занят» процессом — его имя удаляется, но inode — остаётся в файловой системе до тех пор, пока не завершится процесс, который «держит» этот файл.

Соответственно, что бы «освободить» уже удалённые файлы — необходимо перезапустить процесс, который этот файл держит.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍344🤝2
Media is too big
VIEW IN TELEGRAM
Popeye — утилита, которая сканирует работающие кластеры Kubernetes и сообщает о потенциальных проблемах с развёрнутыми ресурсами и конфигурациями.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3
Полный рабочий процесс CI/CD с Skaffold для вашего приложения

Современный способ построения полного рабочего процесса от локального до продакшена с помощью Skaffold и Gitlab на кластере Kubernetes для снижения когнитивной нагрузки и операционной сложности в стеках приложений.

🔛 Часть I
https://blog.equationlabs.io/cicd-workflow-with-skaffold-for-your-application-part-i

🔛 Часть II
https://blog.equationlabs.io/how-to-build-a-cicd-workflow-with-skaffold-for-your-application-part-ii

🔛 Часть III
https://blog.equationlabs.io/how-to-build-a-cicd-workflow-with-skaffold-for-your-application-part-iii

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
Лучшие практики работы с Docker

Никогда не запускайте контейнер от имени root.

Запуск от имени root внутри контейнера означает запуск от имени root на хосте Docker. Если злоумышленник получит доступ к вашему контейнеру, он получит все привилегии root и сможет совершать атаки на хост.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥52
Как узнать имя функции из самой функции

#!/bin/bash

deploy() {
# здесь хотим получить "deploy"
}

Для получения имени функции из самой функции, можно воспользоваться переменной ${FUNCNAME[*]}.

Элемент с индексом 0 это имя любой выполняемой функции в данный момент.Элемент с самым большим индексом будет называться main.

deploy() {
echo ${FUNCNAME[0]}
}

Выведет название функции: deploy

Переменная FUNCNAME существует только во время выполнения скрипта. Если самостоятельно задать переменную FUNCNAME, это ничего не даст и все равно выведется эталонное имя функции.

При обращении к массиву без индекса, будет возвращен первый элемент массива текущий функции. Но так же будет содержать все остальные функции в стеке вызова.

Например:

exp1() {
echo ${FUNCNAME}
}

exp2() {
echo ${FUNCNAME[*]}
}

Первая функция выведет: exp1, а вторая выведет весь массив функции: exp2 main.

Не обязательно указывать индекс, все будет корректно работать и так. Это больше как правила хорошего тона. Как точка с запятой в конце строки, которая не влияет на функционал и никак не интерпретируется.

В zsh это называется funcstack, это тот же массив всех функций скрипта.

deploy() {
echo $funcstack[1]
}


Еще переменная FUNCNAME используется с BASH_LINENO и BASH_SOURCE, об этом можно почитать в официальной документации.


BASH_SOURCE - переменная, содержит путь к исходному файлу оболочки, полезна при отладке и анализе ошибок.

BASH_LINENO - переменная, содержит номер строки на которой произошла ошибка в текущем скрипте.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113
В этом репозитории вы найдете Dockerfile для 13 языков программирования

Для каждого образа Docker имеется свой Dockerfile, содержащий набор инструкций, необходимых для его создания. В этом файле указывается, что должно быть в образе, какие команды, зависимости и процессы он будет содержать.

React
NodeJS
Python
Golang
Java Spring Boot
Java Quarkus
ASP.NET Core
Ruby
Rust
PHP Laravel
Dart
R Studio
Contact

👉 https://github.com/hoalongnatsu/Dockerfile

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Чем отличается команда rm от unlink?

Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.

Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.

У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.

# unlink /tmp/hardlink
# unlink /tmp/file


Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.

Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.

Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.

Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:

rm -f test.txt

И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:

unlink test.txt

получим ошибку:

unlink: cannot unlink 'test.txt': No such file or directory

То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.

С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.

Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root:

chattr +i test.txt

chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).

Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
Если любишь унижения от железного друга, это просто must-have

Включаем "режим унижений". Суть его проста: ошибаешься с паролем при использовании sudo — система выдаёт порцию "тёплых слов" ❤️

Активируется добавлением в файл /etc/sudoers (либо в /etc/sudoers.d/fuck.conf) строчки:

Defaults insults


А после этого попробуй выполнить от пользователя:

sudo apt update


и ошибись с паролем. Получишь в ответ:

Take a stress pill and think things over.
You fucking stupid shit!
My mind is going. I can feel it.
Realy? Are you on drugs?


А если базовых оскорблений недостаточно, кастомизируй через:
Defaults  badpass_message="Ты там в порядке, вообще?"


А кто хочет пойти ещё дальше, может собрать свой bash-скрипт с выборкой «теплых слов» для рандомного вывода. Например:
#!/bin/bash

messages=("Неверный пароль! Твой мозг там как, цел?"
"Еще раз и я в логах всё твоё позорище сохраню."
"Ты серьезно? Ну хоть капслок проверь...")

echo "${messages[$RANDOM % ${#messages[@]}]}"


Режим точно не для слабонервных, но если вам не хватает эмоций в консоли — милости просим😈

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁54👍11🌭3🔥21
This media is not supported in your browser
VIEW IN TELEGRAM
OpenCost — инструмент мониторинга затрат с открытым исходным кодом для Kubernetes

Модели OpenCost дают представление о текущих и прошедших расходах Kubernetes и распределении ресурсов. Эти модели обеспечивают прозрачность затрат в средах Kubernetes, которые поддерживают множество приложений, команд, отделов и т.д.

👉 https://github.com/opencost/opencost

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Пять GitHub проектов, которые помогут вам стать лучшим инженером DevOps

Давненько у нас не было топовых репозиториев. Исправляемся:

🔹 Active Directory Exploitation Cheat Sheet
Памятка по эксплуатации Active Directory.

🔹 k'exp - Kubernetes Explorer
Предназначен не для управления продом, а для изучения Kubernetes через визуализацию. Может отражать состояние вашего кластера в режиме реального времени. Есть возможности для разработки приложений, контроллеров и операторов.

🔹 Configu
Простой, универсальный стандарт для управления и совместной работы с конфигурациями ПО.

🔹 SadServers
Сервис для практики troubleshooting на Linux-серверах. Предоставляется полный доступ к серверу Linux через SSH. Нужно устранить поставленную проблему в течение ограниченного времени.

🔹DockerCheatSheet
Шпаргалка по Docker – от установки и запуска контейнера до работы в сети и безопасности.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍7