DevOps | Вопросы собесов
5.2K subscribers
35 photos
824 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Как узнать ip-адрес какого-нибудь сайта?

🚩Методы

🟠Использование команды `ping`
Команда ping отправляет пакеты ICMP на указанный домен и отображает IP-адрес.
ping google.com


Пример вывода
В этом примере IP-адрес google.com142.250.190.78.
PING google.com (142.250.190.78): 56 data bytes
64 bytes from 142.250.190.78: icmp_seq=0 ttl=115 time=14.3 ms


🟠Использование команды `nslookup`
Команда nslookup запрашивает DNS-сервер для получения информации о домене, включая IP-адрес.
nslookup google.com


Пример вывода
Server:         8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name: google.com
Address: 142.250.190.78


🟠Использование команды `dig`
Команда dig (domain information groper) запрашивает DNS-сервер для получения информации о домене. Она более гибкая и детализированная, чем nslookup.
dig google.com


Пример вывода
; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49142
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 299 IN A 142.250.190.78

;; Query time: 21 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Jul 26 12:00:00 UTC 2024
;; MSG SIZE rcvd: 55


🟠Использование команды `host`
Команда host — еще один способ запроса DNS для получения IP-адреса домена.
host google.com


Пример вывода
google.com has address 142.250.190.78
google.com has IPv6 address 2607:f8b0:4005:809::200e


🟠Использование онлайн-сервисов
Существует множество онлайн-сервисов, которые позволяют определить IP-адрес веб-сайта.
[WhatIsMyIPAddress](https://www.whatismyipaddress.com/)
[DNSWatch](https://www.dnswatch.info/)
[IP-Checker](https://ipinfo.info/html/ip_checker.php)

🚩Примеры использования

ping
ping example.com

PING example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=12.3 ms


nslookup
nslookup example.com

Server:         8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name: example.com
Address: 93.184.216.34


dig
dig example.com

; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32477
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN A

;; ANSWER SECTION:
example.com. 299 IN A 93.184.216.34

;; Query time: 21 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Jul 26 12:00:00 UTC 2024
;; MSG SIZE rcvd: 55


host
host example.com

example.com has address 93.184.216.34


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
🤔 Что такое helm, helm charts?

Helm — это менеджер пакетов для Kubernetes, который упрощает установку и управление приложениями. Helm Charts — это пакеты предварительно настроенных ресурсов Kubernetes, которые можно развертывать как единые приложения. Charts описывают набор связанных ресурсов Kubernetes и включают в себя все необходимые зависимости и параметры конфигурации.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥101
🤔 Что слышали про ulimits?

Это команда в Unix-подобных операционных системах, которая используется для ограничения ресурсов, доступных оболочке и запущенным из нее процессам. С помощью ulimit можно устанавливать и проверять различные лимиты, такие как количество открытых файлов, размер стека, размер файлов и т. д. Эти лимиты помогают предотвратить исчерпание системных ресурсов отдельными процессами и улучшить безопасность и стабильность системы.

🚩Параметры

🟠-n
Максимальное количество открытых файлов (file descriptors).
🟠-u
Максимальное количество процессов, которые может создать пользователь.
🟠-f
Максимальный размер файлов, которые могут быть созданы пользователем (в блоках).
🟠-s
Размер стека (stack size).
🟠-c
Размер файлов core dump.
🟠-v
Максимальный объем виртуальной памяти (virtual memory size).
🟠-l
Максимальный объем памяти, который может быть заблокирован в оперативной памяти (locked-in-memory size).

🚩Примеры использования

1⃣Проверка текущих лимитов
ulimit -a


Вывод этой команды покажет все текущие лимиты для текущего пользователя и сеанса
core file size          (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63691
max locked memory (kbytes, -l) 16384
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 63691
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited


2⃣Установка лимитов
🟠На количество открытых файлов
Это установит лимит на 4096 открытых файлов для текущей сессии.
ulimit -n 4096


🟠На размер файлов
Это установит максимальный размер файла в 1 ГБ (1048576 блоков по 1024 байта).
ulimit -f 1048576


🟠На размер стека
Это установит размер стека в 16 МБ.
ulimit -s 16384


3⃣Постоянная настройка лимитов
Чтобы установить лимиты на постоянной основе, нужно отредактировать конфигурационные файлы, такие как /etc/security/limits.conf и /etc/pam.d/common-session.
*               soft    nofile          4096
* hard nofile 65536
* soft nproc 4096
* hard nproc 8192


🚩Примеры использования в скриптах

Вы можете включить ulimit в ваши скрипты для временного изменения лимитов ресурсов перед выполнением команд
#!/bin/bash
ulimit -n 4096
ulimit -s 16384
# Выполнение команд
./myprogram


🚩Важные замечания

🟠Root и обычные пользователи
Root может устанавливать более высокие лимиты, чем обычные пользователи. Ограничения могут варьироваться между различными системами и дистрибутивами Linux.
🟠Применение изменений
Изменения, сделанные с помощью команды ulimit, применяются только к текущему сеансу и процессам, запущенным из него.
🟠Максимальные значения
Лимиты могут иметь максимальные значения, заданные ядром системы. Например, максимальный лимит для количества открытых файлов может быть установлен с помощью параметра fs.file-max в /etc/sysctl.conf.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🔥1
🤔 Чем отличаются HTTP и HTTPS?

HTTP (HyperText Transfer Protocol) — это протокол передачи данных, используемый для загрузки веб-страниц. HTTPS (HTTP Secure) — это расширение HTTP, которое добавляет слой шифрования (SSL/TLS), обеспечивая безопасную передачу данных между клиентом и сервером. HTTPS защищает от прослушивания и манипуляций данными.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🤔 Как поднять лимиты nginx?

Можно увеличить несколько лимитов, связанных как с самой конфигурацией Nginx, так и с настройками операционной системы.

🚩Шаги

🟠Увеличение лимита открытых файлов

1⃣Проверка текущих лимитов
ulimit -n


2⃣Увеличение лимитов для пользователя
* soft nofile 65536
* hard nofile 65536


3⃣Применение изменений
Перезапустите терминал или перезагрузите систему, чтобы изменения вступили в силу.

4⃣ Установка лимитов для процессов Nginx
LimitNOFILE=65536

sudo systemctl daemon-reload


🟠Настройка параметров Nginx

1⃣Редактирование основного конфигурационного файла Nginx
Откройте файл конфигурации Nginx (обычно /etc/nginx/nginx.conf) и настройте следующие параметры:

worker_rlimit_nofile: Установите максимальное количество открытых файлов.
worker_rlimit_nofile 65536;


worker_connections: Увеличьте количество соединений, которые каждый рабочий процесс может обрабатывать одновременно.
events {
worker_connections 65536;
}


worker_processes: Настройте количество рабочих процессов. Обычно это число соответствует количеству ядер процессора.
worker_processes auto;


🟠Настройка системных параметров

1⃣Увеличение лимита открытых файлов в системе
Отредактируйте файл /etc/sysctl.conf и добавьте строку
fs.file-max = 2097152


Примените изменения
sudo sysctl -p


2⃣Настройка TCP-параметров
Отредактируйте файл /etc/sysctl.conf и добавьте строки
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 4096


Примените изменения
sudo sysctl -p


🟠Перезагрузка Nginx
После внесения всех изменений перезагрузите Nginx для их применения:
sudo systemctl restart nginx


Пример конфигурационного файла Nginx
user nginx;
worker_processes auto;
worker_rlimit_nofile 65536;

events {
worker_connections 65536;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/conf.d/*.conf;
}


🚩Проверка изменений

Проверка лимита открытых файлов
ulimit -n


Проверка параметров sysctl
sysctl fs.file-max
sysctl net.core.somaxconn
sysctl net.ipv4.tcp_max_syn_backlog


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
🤔 Что такое ELK?

ELK стек — это сочетание трех открытых инструментов Elasticsearch, Logstash и Kibana, которые вместе используются для индексации, анализа и визуализации логов в реальном времени. Elasticsearch используется как поисковая и аналитическая движущая сила, Logstash — для обработки и передачи данных, а Kibana — для визуализации данных из Elasticsearch.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥71
🤔 Как и где посмотреть логи какого-нибудь сервиса?

Обычно хранятся в каталоге /var/log. Также многие современные дистрибутивы используют систему журналирования systemd для управления и просмотра логов.

🚩Способы просмотра

🟠Просмотр логов в /var/log
Каталог /var/log содержит логи большинства системных сервисов и приложений.

Логи системных сообщений
/var/log/syslog: Содержит общие системные логи. /var/log/messages: Содержит общие системные сообщения (не во всех дистрибутивах).
cat /var/log/syslog
less /var/log/syslog
tail -f /var/log/syslog


Логи конкретных сервисов
Apache: /var/log/apache2/ или /var/log/httpd/ Логи доступа: /var/log/apache2/access.log или /var/log/httpd/access_log Логи ошибок: /var/log/apache2/error.log или /var/log/httpd/error_log
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log


Nginx: /var/log/nginx/ Логи доступа: /var/log/nginx/access.log Логи ошибок: /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log


MySQL: /var/log/mysql/ или /var/log/mysqld.log
tail -f /var/log/mysql/error.log 


SSH: /var/log/auth.log или /var/log/secure
tail -f /var/log/auth.log 


🟠Использование `journalctl` для системных логов
journalctl — это утилита для просмотра и управления журналами systemd. Она позволяет фильтровать логи по различным критериям, таким как время, сервис и уровень логирования.

Основные команды journalctl
Просмотр всех журналов
journalctl  



Логов конкретного сервиса
journalctl -u nginx.service  


Последних логов и продолжение просмотра в реальном времени
journalctl -f
journalctl -u nginx.service -f


Логов за определённый период
journalctl --since "2024-07-25 12:00:00" --until "2024-07-25 13:00:00" 


Логов с определённым уровнем логирования
journalctl -p err
journalctl -p warning


🚩Примеры использования

🟠Просмотр логов Apache
Логи доступа
tail -f /var/log/apache2/access.log  


Логи ошибок
tail -f /var/log/apache2/error.log 


🟠Просмотр логов Nginx
Логи доступа
tail -f /var/log/nginx/access.log


Логи ошибок
tail -f /var/log/nginx/error.log  


🟠Использование `journalctl` для просмотра логов Nginx
Все логи Nginx
journalctl -u nginx.service  


Последние логи Nginx в реальном времени
journalctl -u nginx.service -f  


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🤔 Что такое и нужен ли swap?

Swap (файл подкачки) — это область на жестком диске, используемая операционной системой для временного хранения данных из оперативной памяти (RAM), когда она заполнена. Swap может помочь системе справляться с перегрузкой памяти, но использование swap может замедлить работу системы, так как доступ к данным на жестком диске медленнее, чем к RAM.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🤔 Как открывается смотреть огромный лог размером 4-5 Гб?

Работа с большими логами может быть сложной, так как стандартные текстовые редакторы и команды могут не справляться с такими объемами данных.

🟠Использование команды `less`
Это команда для постраничного просмотра файлов, которая загружает файл по частям, что позволяет работать с большими файлами без их полного открытия в памяти. Навигация:
Space: следующая страница
b: предыдущая страница
G: перейти в конец файла
g: перейти в начало файла
/pattern: поиск по файлу
less /path/to/large-log-file.log


🟠Использование команды tail
Это команда для просмотра последних строк файла. Она полезна для мониторинга новых записей в реальном времени.
tail -n 1000 /path/to/large-log-file.log


Для непрерывного мониторинга
tail -f /path/to/large-log-file.log


🟠Использование команды `head`
Это команда для просмотра первых строк файла.
head -n 1000 /path/to/large-log-file.log


🟠Использование команды `awk`
Это мощный текстовый процессор, который может быть использован для фильтрации и обработки лог-файлов.
awk '/ERROR/' /path/to/large-log-file.log


🟠Использование команды tail
Это команда для поиска по файлу. Она позволяет быстро находить строки, содержащие определенные паттерны.
grep "ERROR" /path/to/large-log-file.log


Для просмотра строк до и после найденного паттерна
grep -C 5 "ERROR" /path/to/large-log-file.log


🟠Использование команды `split`
Это команда для разбиения больших файлов на более мелкие части. Разбиение файла на части размером по 500 МБ
split -b 500M /path/to/large-log-file.log part_


🟠Использование `Sublime Text` или других редакторов с поддержкой больших файлов
Некоторые текстовые редакторы, такие как Sublime Text, поддерживают работу с большими файлами. Они могут быть полезны для просмотра и редактирования логов.

🟠Использование специализированных утилит
GoAccess: интерактивный просмотр логов веб-сервера в режиме реального времени.
goaccess /path/to/access.log -c


lnav: интерактивный просмотрщик логов, который автоматически определяет формат логов и предоставляет удобную навигацию и поиск.
lnav /path/to/large-log-file.log


🚩Примеры использования

Использование less для просмотра большого лог-файла
less /path/to/large-log-file.log


Использование grep для поиска по логу
grep "ERROR" /path/to/large-log-file.log


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🤔 В чём разница между TCP и UDP?

TCP (Transmission Control Protocol) — это протокол с установлением соединения, обеспечивающий надежную, упорядоченную и безошибочную передачу данных. UDP (User Datagram Protocol) — это более простой протокол без установления соединения, который позволяет передавать данные без гарантий доставки, порядка или проверки ошибок. TCP используется для задач, где важна надежность, а UDP — для задач, требующих максимальной скорости передачи.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍181
🤔 Что такое cherry pick?

Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки.

🚩Когда используется

🟠Применение отдельных изменений
Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки.
🟠Быстрое исправление ошибок
Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза.
🟠Избежание сложного слияния
Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям, cherry-pick позволяет аккуратно перенести только нужные коммиты.

🚩Примеры использования

🟠Простого `cherry-pick`
Перенос одного коммита из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick коммита
git cherry-pick <commit-hash>


🟠Применения нескольких коммитов
Перенос нескольких коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick нескольких коммитов
git cherry-pick <commit-hash-1> <commit-hash-2> <commit-hash-3>


🟠Применения диапазона коммитов
Перенос диапазона коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick диапазона коммитов
git cherry-pick <start-commit-hash>..<end-commit-hash>


🚩Разрешение конфликтов

1⃣Разрешите конфликты в файлах.

2⃣Добавьте изменения в индекс
git add <filename>   


3⃣Завершите процесс cherry-pick
git cherry-pick --continue   


🚩Прерывание

Если вы хотите прервать процесс cherry-pick, можно использовать команду
git cherry-pick --abort


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🤔 По какой причине inode могут закончиться?

Inode могут закончиться на файловой системе, если создается большое количество мелких файлов. Каждый файл в UNIX-подобных системах использует inode для хранения метаданных. Если файловая система имеет ограниченное количество inode, и все они используются, новые файлы создать будет невозможно, даже если на диске еще есть свободное пространство.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥21
🤔 Как отменить последний коммит?

🚩Методы

🟠Отмена последнего коммита с сохранением изменений
Команда git reset с параметром --soft отменяет последний коммит, но оставляет изменения в индексе (staging area), что позволяет вам внести изменения и закоммитить их снова. HEAD~1: указывает на один коммит назад от текущего HEAD. --soft: сохраняет изменения в индексе.
git reset --soft HEAD~1


🟠Отмена последнего коммита с сохранением изменений в рабочей директории
Команда git reset с параметром --mixed отменяет последний коммит и сбрасывает индекс, но сохраняет изменения в рабочей директории. Это позволяет вам внести изменения и добавить их в индекс заново. --mixed: сбрасывает индекс, но сохраняет изменения в рабочей директории (по умолчанию).
git reset --mixed HEAD~1


🟠Отмена последнего коммита и изменений
Команда git reset с параметром --hard отменяет последний коммит и удаляет все изменения как из индекса, так и из рабочей директории. Это действие необратимо и должно использоваться с осторожностью. `--hard`: сбрасывает индекс и рабочую директорию.
git reset --hard HEAD~1


🟠Отмена последнего коммита с помощью `git revert`
Команда git revert создает новый коммит, который отменяет изменения, внесенные последним коммитом. Это сохраняет историю изменений и является более безопасным способом отмены коммита, особенно в публичных ветках. `HEAD`: указывает на последний коммит.
git revert HEAD


🚩Примеры использования

🟠Отмена последнего коммита с сохранением изменений в индексе
git reset --soft HEAD~1    


Проверка состояния:
git status    


🟠Отмена последнего коммита с сохранением изменений в рабочей директории
git reset --mixed HEAD~1    


Проверка состояния
git status    


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🤔 Зачем эта работа?

Этот вопрос может иметь различные ответы в зависимости от контекста. Если речь идет о DevOps, то такая работа нужна для упрощения процессов разработки, тестирования, развертывания и мониторинга приложений, что в конечном итоге увеличивает скорость и качество выпуска продуктов, а также повышает удовлетворенность и продуктивность команды.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍41
🤔 Как решить конфликты в гите?

Конфликты в Git возникают, когда два или более коммитов изменяют одну и ту же часть файла по-разному, и система контроля версий не может автоматически объединить эти изменения. Решение конфликтов требует ручного вмешательства.

🚩Шаги для разрешения конфликтов

1⃣Идентификация конфликтов
Когда возникает конфликт, Git сообщает о конфликтных файлах после выполнения команды слияния (git merge) или ребейза (git rebase).
git merge feature-branch


Вывод:
Auto-merging filename
CONFLICT (content): Merge conflict in filename
Automatic merge failed; fix conflicts and then commit the result.


2⃣Разрешение конфликтов вручную
Откройте конфликтный файл в текстовом редакторе. Конфликтные изменения помечены специальными маркерами. Удалите маркеры и решите, какие изменения сохранить. Это может быть одно из изменений или комбинация обоих.
<<<<<<< HEAD
# Изменения из текущей ветки
=======
# Изменения из сливаемой ветки
>>>>>>> feature-branch


Пример разрешения конфликта:
# До разрешения конфликта
<<<<<<< HEAD
Старый текст из текущей ветки
=======
Новый текст из feature-branch
>>>>>>> feature-branch

# После разрешения конфликта
Старый текст из текущей ветки
Новый текст из feature-branch


3⃣Добавление исправленных файлов в индекс
После разрешения конфликтов сохраните изменения и добавьте исправленные файлы в индекс:
git add filename


4⃣Завершение слияния или ребейза

🟠Завершение слияния
После добавления исправленных файлов в индекс завершите слияние, выполнив коммит:
git commit


🟠Завершение ребейза
Если вы выполняли ребейз, завершите процесс
git rebase --continue


Если необходимо прервать процесс ребейза
git rebase --abort


🚩Инструменты для упрощения разрешения конфликтов

🟠Встроенные инструменты редакторов
Многие текстовые редакторы, такие как Visual Studio Code, имеют встроенные инструменты для разрешения конфликтов, которые делают процесс более визуальным и удобным.

🟠Инструменты визуального сравнения (Merge tools)
KDiff3, Meld, Beyond Compare и другие инструменты могут помочь визуально сравнить и разрешить конфликты. Установка и настройка инструмента для слияния
git config --global merge.tool meld   


Запуск инструмента для разрешения конфликтов
git mergetool   


🚩Примеры

1⃣Идентификация конфликта
git merge feature-branch   


Вывод
Auto-merging filename
CONFLICT (content): Merge conflict in filename
Automatic merge failed; fix conflicts and then commit the result.


2⃣Откройте файл filename в текстовом редакторе и разрешите конфликт:
# До разрешения конфликта
<<<<<<< HEAD
Старый текст из текущей ветки
=======
Новый текст из feature-branch
>>>>>>> feature-branch

# После разрешения конфликта
Старый текст из текущей ветки
Новый текст из feature-branch


3⃣Добавление исправленного файла в индекс
git add filename   


4⃣Завершение слияния
git commit   


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤔 Что такое Helm и Helm Charts?

Helm — это менеджер пакетов для Kubernetes, который упрощает развертывание и управление приложениями в кластерах. Helm Charts — это пакеты, содержащие все необходимые ресурсы и конфигурации для развертывания приложений в Kubernetes. Они позволяют параметризовать установку и обеспечивать повторное использование конфигураций через шаблоны.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥3
Forwarded from Идущий к IT
Твое резюме на HeadHunter — ОК, если ты видишь это.

HeadHunter сравнивает ключевые навыки в твоем резюме и в вакансии и в момент отклика отображает, насколько % ты соответствуешь требованиям.

Специальный бейджик «Подходит по навыкам на 100%» отображается, если соответствие составляет более 60%.

Если при просмотре вакансий ты видишь такой бейджик, это значит, что список навыков в твоем резюме качественно составлен.

Это важный параметр, так как рекрутерам чаще показываются резюме с лучшим соответствием.

О том, как правильно указывать ключевые навыки и оптимизировать свое резюме я уже рассказывал в этом видео
👍1
🤔 Где можно указать переменные в ролях?

В Ansible переменные могут быть определены в нескольких местах, включая роли. Роли в Ansible организуют задачи и файлы, делая плейбуки более модульными и повторно используемыми.

🟠defaults/main.yml
Переменные, определенные здесь, имеют самый низкий приоритет. Обычно используются для определения значений по умолчанию.
# roles/role_name/defaults/main.yml
some_variable: "default_value"


🟠vars/main.yml
Переменные, определенные здесь, имеют более высокий приоритет, чем переменные из defaults/main.yml. Используются для переменных, которые не должны быть изменены пользователем.
# roles/role_name/vars/main.yml
some_variable: "fixed_value"


🟠tasks/main.yml
Переменные могут быть определены непосредственно в задачах. Переменные, определенные таким образом, будут видны только в контексте этой задачи.
# roles/role_name/tasks/main.yml
- name: Set a variable
set_fact:
temporary_variable: "value"


🟠meta/main.yml
В файле метаданных можно определять зависимости ролей и использовать переменные для их настройки.
# roles/role_name/meta/main.yml
dependencies:
- role: dependency_role
some_variable: "value"


🟠templates/
Переменные могут использоваться в шаблонах Jinja2.
# roles/role_name/templates/template.j2
The value of some_variable is {{ some_variable }}


🟠handlers/main.yml
Переменные могут использоваться в хендлерах для настройки условий запуска.
# roles/role_name/handlers/main.yml
- name: restart service
service:
name: "{{ service_name }}"
state: restarted


🟠files/
В файлах, используемых в задачах копирования или шаблонизации, можно использовать переменные для указания пути к файлам или другим параметрам.

🚩Пример использования

defaults/main.yml
# roles/nginx/defaults/main.yml
nginx_port: 80


vars/main.yml
# roles/nginx/vars/main.yml
nginx_user: "www-data"


tasks/main.yml
 # roles/nginx/tasks/main.yml
- name: Install Nginx
apt:
name: nginx
state: present

- name: Configure Nginx
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf

- name: Start Nginx
service:
name: nginx
state: started
enabled: true


templates/nginx.conf.j2
# roles/nginx/templates/nginx.conf.j2
user {{ nginx_user }};
worker_processes auto;

events {
worker_connections 1024;
}

http {
server {
listen {{ nginx_port }};
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🤔 Чем отличаются HTTP и HTTPS

HTTP (HyperText Transfer Protocol) передаёт данные без шифрования, что делает соединение уязвимым для перехвата. HTTPS (HyperText Transfer Protocol Secure) использует SSL/TLS для шифрования данных, обеспечивая защиту конфиденциальной информации. Таким образом, HTTPS более безопасен и предпочтителен для передачи чувствительных данных, например, паролей и финансовой информации.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
🤔 Какая иерархия переменных в ролях?

🚩Иерархия переменных в ролях

🟠defaults/main.yml
Переменные с самым низким приоритетом. Используются для значений по умолчанию, которые могут быть переопределены.
🟠vars/main.yml
Переменные с более высоким приоритетом, чем defaults. Используются для значений, которые не должны быть легко изменены пользователем.
🟠Переменные в задачах (tasks)
Переменные, заданные с помощью set_fact в задачах, имеют более высокий приоритет. Также переменные, определенные в локальном контексте задачи.

🚩Общая иерархия переменных

🟠Переменные из роли
defaults/main.yml в роли.
🟠Переменные плейбука
Переменные из vars плейбука.
🟠Переменные инвентаря
Переменные из статического или динамического инвентаря.
🟠Факты Ansible (gathered facts)
Динамически собранные данные о хостах.
🟠Переменные командной строки
Переменные, переданные через командную строку с помощью флага -e.

🚩Пример

defaults/main.yml
# roles/example/defaults/main.yml
example_variable: "default_value"


vars/main.yml
# roles/example/vars/main.yml
example_variable: "vars_value"


Переменная в плейбуке
# playbook.yml
- hosts: all
roles:
- role: example
example_variable: "playbook_value"


Переменная командной строки
ansible-playbook playbook.yml -e "example_variable=command_line_value"


🚩Приоритет переменных

1⃣defaults/main.yml задает example_variable как "default_value".
2⃣vars/main.yml переопределяет это значение на "vars_value".
3⃣Переменная, указанная в плейбуке, переопределяет это значение на "playbook_value".
4⃣Переменная командной строки, переданная при запуске плейбука, переопределяет все предыдущие значения на "command_line_value".

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7