Иногда после очередного обновления Windows внезапно ломается приложение, драйвер или какой-то системный функционал. В такой ситуации самый разумный шаг - удалить конфликтное обновление и не дать системе поставить его снова, пока Microsoft не выпустит исправление.
Есть два рабочих подхода: поставить обновления на паузу (до 35 дней) или скрыть конкретное обновление, чтобы Windows Update его игнорировал.
Раньше Microsoft официально распространяла графическую утилиту
wushowhide.diagcab, которая позволяет скрывать и возвращать отдельные обновления. Сейчас страница KB3073930 удалена, но сам файл все еще можно найти и использовать.После запуска утилита показывает список доступных обновлений, достаточно выбрать проблемное и скрыть его. Windows Update перестанет его предлагать.
Посмотреть список доступных обновлений:
Get-WindowsUpdate
Скрыть конкретное обновление по номеру KB:
Hide-WindowsUpdate -KBArticleID KB5029244
С драйверами чуть сложнее: у них часто нет привычного KB-номера. Сначала получаем их идентификаторы:
$updates = Get-WindowsUpdate -WindowsUpdate -UpdateType Driver
$updates | Select Title, Description -Expand Identity
После этого скрываем нужный драйвер по его ID:
Hide-WindowsUpdate -UpdateID "a1c4d2f8-7e91-4f0b-9e3a-8c2b7e9d1234"
В итоге система продолжит получать остальные обновления, но проблемное больше не всплывет. Удобный способ переждать баги без полного отключения Windows Update.
#windows #update
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3
Когда оперативной памяти начинает не хватать, система либо активно уходит в swap и тормозит, либо ловит OOM. Увеличивать RAM не всегда возможно, особенно на VPS, ноутбуках или старых серверах. Тут на помощь приходят
zram и zswap - два механизма сжатия памяти в linux.ZRAM - это сжатый swap прямо в оперативной памяти. Ядро создает блочное устройство (/dev/zram0), данные в нем хранятся в сжатом виде, обычно с коэффициентом 2–3x.swap без диска (очень быстро);
отлично работает на SSD-less системах;
спасает от резких OOM.
съедает часть CPU на сжатие;
занимает RAM (но эффективнее обычного swap).
Быстрая настройка:
apt install zram-tools
Или вручную:
modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 4G > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0
ZSWAP - это не отдельный swap, а кэш перед обычным swap. Сначала страницы памяти сжимаются и держатся в RAM, и только потом (если нужно) пишутся на диск.
прозрачный для системы;
не требует отдельного устройства;
снижает нагрузку на диск.
нужен обычный swap;
меньше контроля, чем у zram.
Включается через параметры ядра:
zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20
Проверка:
cat /sys/module/zswap/parameters/enabled
Ноутбук, VPS, бездисковая система - zram
Сервер с SSD и swap - zswap
Можно и вместе (zram как swap + zswap для дискового swap)
#linux #memory
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤3👍1
Fail2Ban часто вспоминают только в контексте защиты SSH от брутфорса. Но на практике его польза гораздо шире: он отлично подходит для защиты веб-сервисов, почты и API, где логов много, а автоматических атак еще больше.
/wp-login.php, /admin, /phpmyadmin.Пример jail:
[nginx-404]
enabled = true
filter = nginx-404
logpath = /var/log/nginx/access.log
maxretry = 20
findtime = 60
bantime = 1h
Фильтр (
/etc/fail2ban/filter.d/nginx-404.conf):
failregex = ^<HOST> .* "GET .* HTTP/.*" 404
В результате IP, который активно сканирует сайт, улетает в бан автоматически.
Готовые jail уже есть:
postfix
postfix-sasl
dovecot
Пример включения:
[postfix-sasl]
enabled = true
port = smtp,submission,imap,imaps
logpath = /var/log/mail.log
maxretry = 5
Это резко снижает шум и нагрузку на почтовый сервер.
Пример: баним за 10 ошибок 401 за минуту:
[api-auth]
enabled = true
filter = api-auth
logpath = /var/log/app/api.log
findtime = 60
maxretry = 10
bantime = 30m
Фильтр:
failregex = ^.* <HOST> .* 401 Unauthorized
iptables / nftables;
firewalld;
cloud-firewalls (через actions);
отправлять алерты в телегу.
#linux #fail2ban
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2
Чек-лист действий, который можно использовать, когда есть основания считать, что сервер был скомпрометирован и на нем исполняется вредоносный код. Чаще всего это нужно не для починить здесь и сейчас, а для расследования: понять вектор атаки и масштаб проблемы. Если факт взлома подтвержден - правильное решение почти всегда одно: полная переустановка сервера с переносом только проверенных данных.
её эксплуатацию,
загрузку или запуск web-shell,
подозрительные запросы к конкретным файлам.
Часто уязвимость привязана к одному файлу, тогда имеет смысл искать все обращения именно к нему и цепочку последующих запросов.
find /var/www/site -type f -mtime -30 ! -mtime -1 -printf '%TY-%Tm-%Td %TT %p\n' | sort -r
Команда выводит файлы, измененные за последние 30 дней (кроме сегодняшнего), и сортирует их от новых к старым.
Если вывод большой, то сохраняйте в файл и анализируйте отдельно. В таком виде команда реально полезна.
системные логи,
логи аутентификации SSH,
cron, at, systemd timers.
Отдельный плюс - если логи отправляются на внешний log-server: злоумышленнику сложнее их подчистить.
Где именно искать запланированные задачи - это тема отдельного разбора, но пропускать ее нельзя.
cat ~/.bash_history
cat ~/.mysql_history
sudo -u postgres psql
\s
Да, историю могут чистить, но если этого не сделали, то есть шанс увидеть и ручную активность атакующего.
dpkg --verify
rpm -Va
Любые неожиданные изменения в системных бинарниках - серьезный красный флаг.
системных пользователей и их shell,
authorized_keys,
домашние каталоги пользователей, от которых работают сервисы (web, app, db),
временные директории (
/tmp, /var/tmp).Часто зловреды прячутся именно там.
ss -tulnp | column -t
ss -ntu
Неожиданные исходящие соединения - это один из самых надежных индикаторов компрометации.
ps axf
Майнеры, странные бинарники и процессы без имени часто палятся именно здесь.
#linux #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Бывает неприятная ситуация: диск постоянно нагружен чтением, latency растет, сервисы подтормаживают, а по iotop, pidstat и lsof - тишина. Никакой очевидный процесс диск не ест, но I/O живет своей жизнью. В таких случаях на помощь приходит
blktrace.blktrace работает на уровне блочного устройства, а не процессов. Он показывает реальные операции чтения и записи, которые уходят в диск: кто, куда и с какими смещениями обращается. Это особенно полезно, когда:чтение идет из page cache/readahead,
нагрузка создается kernel-потоками,
виноват не процесс, а ФС, LVM, RAID, snapshot или backup-агент.
apt install blktrace
blktrace -d /dev/sda -o /tmp/trace
Даем системе поработать 10–30 секунд и останавливаем. Далее анализируем:
blkparse /tmp/trace.* | less
В выводе видно:
тип операции (Read/Write),
сектор и размер,
PID и имя процесса (если применимо),
временные метки.
Если нужен быстрый срез, кто больше всего читает:
blkparse /tmp/trace.* | grep " R " | awk '{print $6}' | sort | uniq -c | sort -nr | head
btt -i /tmp/trace.*
Он строит статистику задержек и нагрузки по времени, удобно, когда ищете периодическую активность.
#linux #storage
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Если в инфраструктуре десятки или сотни Windows-машин, смотреть логи на каждой вручную - тупиковый путь. Для централизованного сбора событий microsoft давно встроила в систему механизм Windows Event Forwarding (WEF) и он работает без агентов и сторонних SIEM.
WEF позволяет автоматически отправлять события с клиентов на сервер-коллектор через WinRM (HTTP/HTTPS).
Поддерживаются два режима:
wecutil qc
Это включает службу Windows Event Collector и создает журнал Forwarded Events.
Проверяем WinRM:
winrm quickconfig
Открываем Event Viewer → Subscriptions → Create Subscription.
Выбираем:
Пример фильтра:
собирать события входа (Event ID 4624) и неудачных попыток (4625) из Security.
Computer Configuration → Administrative Templates → Windows Components → Event Forwarding → Configure target Subscription Manager
Указываем:
Server=http://wef-server:5985/wsman/SubscriptionManager/WEC
После применения политики клиенты начнут отправлять события автоматически.
#windows #wef
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Довольно классическая ситуация: снаружи сайт работает, а из локальной сети по публичному IP или домену не открывается. Пингуется, но HTTPS не отвечает. Или вообще таймаут. Виновник часто один - Hairpin NAT (он же NAT loopback).
Допустим:
• Сервер внутри сети:
192.168.1.10• Публичный IP роутера:
203.x.x.x• На роутере настроен проброс
443 → 192.168.1.10Снаружи все ок. Но когда клиент внутри сети обращается к 203.x.x.x, пакет:
1. Уходит на роутер
2. Роутер должен отправить его обратно внутрь
3. Сервер отвечает напрямую клиенту
И тут соединение ломается, потому что NAT не переписывает обратный трафик корректно. В итоге асимметрия маршрута и разрыв сессии.
Это механизм, при котором роутер позволяет внутренним клиентам обращаться к внутренним сервисам через внешний IP, корректно делая двойной NAT.
Если функция отключена, то доступ изнутри по внешнему адресу работать не будет.
• Домашние роутеры
• MikroTik
• Kubernetes NodePort
• Docker с опубликованными портами
• Облачные VPC
Во многих роутерах есть отдельная опция: NAT Loopback / Hairpin NAT / Reflection
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.1.10 -j MASQUERADE
Это заставляет сервер отвечать обратно через роутер.
site.networkadmin.ru → 192.168.1.10
А наружу оставить публичный IP. Это избавляет от NAT-костылей и работает стабильнее.
#network #nat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2
В репозиториях большинства linux-дистрибутивов есть небольшая, но очень полезная утилита -
progress. Она показывает процент выполнения для операций coreutils: cp, mv, dd, tar, gzip/gunzip, cat и других.По смыслу ее часто сравнивают с
pv, но принцип работы разный. pv получает данные из pipe - значит, поток нужно заранее направить через него.progress работает иначе: он сканирует /proc, находит поддерживаемые процессы, затем через fd и fdinfo отслеживает изменения открытых файлов и вычисляет прогресс.Главный плюс - подключиться можно в любой момент, даже если процесс уже запущен. Например, вы распаковываете огромный SQL-дамп и хотите понять, сколько еще ждать.
dd if=/dev/urandom of=testfile bs=1M count=2048
(Для dd процент может не отображаться, если конечный размер неизвестен, будет показываться только скорость.)
Сжимаем файл:
gzip testfile
В другой консоли смотрим прогресс:
watch -n 1 progress -q
Вывод будет примерно такой:
[34209] gzip /tmp/testfile
6.5% (132.2 MiB / 2 GiB)
Без watch утилита покажет текущее состояние и завершится, а для живого мониторинга лучше обновлять раз в секунду.
Аналогично при распаковке:
gunzip testfile.gz
Во второй консоли:
watch -n 1 progress -q
[35685] gzip /tmp/testfile.gz
76.1% (1.5 GiB / 2.0 GiB)
progress - крошечная утилита (~31 КБ), написанная на C, с единственной зависимостью - ncurses. Устанавливается просто:
apt install progress
dnf install progress
Минимум веса и максимум пользы.
#linux #progress
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤1🔥1
Обычно с Ansible работают в режиме push: управляющая машина подключается по SSH и применяет playbook к целевым хостам. Но есть и обратная модель - ansible-pull, когда сервер сам забирает конфигурацию и применяет ее локально.
Это удобно там, где:
хосты находятся за NAT или в изолированной сети;
нет постоянного доступа с управляющего узла;
инфраструктура динамическая (VPS, авто-масштабирование).
Как это работает
Сервер:
Клонирует репозиторий (обычно Git)
Запускает playbook локально
Повторяет процесс по cron/systemd timer
ansible-pull -U https://git.networkadminru/infra.git site.yml
Где:
-U - URL репозиторияsite.yml - основной playbookПо сути, это self-configuring node.
*/15 * * * * ansible-pull -U https://git.networkadminru/infra.git site.yml
И сервер каждые 15 минут сам проверяет обновления конфигурации.
Edge-серверы и филиалы;
Облака с автоскейлингом;
Zero-trust сети;
Immutable-подход с периодическим re-apply.
Нет необходимости держать открытый SSH;
Хорошо масштабируется;
Минимальная точка отказа;
Можно использовать Git как single source of truth.
Сложнее централизованный контроль;
Нужно аккуратно работать с секретами;
Логи выполнения нужно куда-то отправлять.
Классический Ansible: удобен для администрирования и ad-hoc задач
Ansible Pull: хорош для распределенных и автономных систем
Иногда разумно комбинировать оба подхода.
#ansible #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Служба SSH есть почти на каждом сервере: виртуальном или железном. Доступ по SSH - это основа администрирования. В идеале его стоит закрывать от публичной сети, но на практике это не всегда возможно.
Основные параметры настраиваются в
/etc/ssh/sshd_config. Ниже указаны моменты, на которые стоит обратить внимание.
PasswordAuthentication yes
Можно оставить ее включенной как резервный вариант. Если пароль сложный и несловарный - реального риска перебора нет.
Но если отключить парольную аутентификацию, почти весь бот-скан исчезает из логов.
PubkeyAuthentication yes
Лучше использовать ключи ed25519 - они короче, быстрее и безопаснее RSA в большинстве практических сценариев.
PermitRootLogin no
Если вы администрируете сервер один - работа напрямую под root упрощает жизнь.
Если команда, то лучше отдельные пользователи + sudo + аудит действий.
Если сомневаетесь, лучше временно отключите вход root и работайте через sudo.
AllowGroups sshgroup
AllowUsers user01 user02
Я чаще применяю это для SFTP-доступа, создавая отдельную группу под файловый обмен.
Port 22
Смена порта - это не защита, а лишь снижение шума. Боты все равно найдут сервис, особенно если порт открыт публично и индексируется сканерами. Но хуже от смены обычно не становится.
MaxAuthTries 3
Три неверных ввода - соединение рвется.
MaxSessions 1
Для обычного администрирования одной сессии достаточно.
Пример для группы sftpusers с chroot:
Subsystem sftp internal-sftp -u 002
Match User sftpusers
ChrootDirectory /var/www
ForceCommand internal-sftp -u 002
Пользователи группы будут ограничены SFTP-доступом к
/var/www с umask 002.Главное - это осознанная настройка, а не конфиг по умолчанию.
#linux #ssh
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤3
Если вам нужен простой, быстрый и безопасный инструмент для резервного копирования без громоздких серверов и агентов, то обратите внимание на restic. Это современный backup-инструмент с встроенным шифрованием, дедупликацией и поддержкой десятков хранилищ.
Почему restic удобен
Шифрование из коробки (AES-256);
Дедупликация на уровне блоков;
Инкрементальные бэкапы;
Работа с локальными дисками, SFTP, S3, Backblaze, MinIO и др.;
Один бинарник - без сервера и БД;
И главное - максимально простой workflow.
restic init --repo /backup
Или через переменные окружения:
export RESTIC_REPOSITORY=/backup
export RESTIC_PASSWORD=StrongPassword
restic backup /etc /var/www
restic автоматически:
разобьет данные на чанки,
зашифрует их,
выполнит дедупликацию,
сохранит снапшот.
Каждый запуск - это новый снапшот, но без полного копирования данных.
restic snapshots
Восстановление:
restic restore <snapshot_id> --target /restore
Можно восстанавливать отдельные файлы или каталоги.
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
Это безопасно удалит устаревшие данные с учетом дедупликации.
Храните пароль вне сервера (например, в Vault или менеджер секретов);
Используйте restic check для проверки целостности;
Настройте cron + мониторинг exit-кодов;
Тестируйте восстановление (бэкап без restore - это иллюзия безопасности).
#backup #restic
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🤔1
Есть одно малоизвестное и бесплатное решение для резервного копирования Windows (включая серверные версии) - Hasleo Backup Suite Free, но при этом функциональность на уровне многих коммерческих продуктов.
✅ Резервное копирование всей системы, диска, раздела или отдельных файлов и папок✅ Клонирование системы и дисков✅ Типы бэкапов: полный, инкрементальный, дифференциальный✅ Расписание, политики хранения, автоочистка старых копий✅ Universal Restore (восстановление на другое железо)✅ Шифрование и проверка целостности бэкапов✅ Создание загрузочного носителя на базе WinPE✅ Подробное логирование
Функционально - все, что ожидаешь от нормального backup-решения. Без перегруза и маркетинговых фич ради фич. Русский перевод в целом аккуратный, без явных ляпов. Но есть нюанс: программа создает каталоги бэкапов на русском, например:
Бэкап системы 20260330181411И вот это уже спорный момент: кириллица + пробелы в именах директорий - не всегда хорошо Но в таком случае лучше использовать английскую версию интерфейса.
Все прошло удивительно гладко: быстро, без танцев с драйверами и неожиданными ошибками. Загрузочный носитель показался даже более удобным и шустрым.
Если нужен бесплатный инструмент для резервного копирования рабочих станций или небольших серверов - это вполне рабочий вариант.
#backup #windows
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤1
Пароли в txt, доступы в вики - классика, которая рано или поздно заканчивается утечкой. Если инфраструктура растет, без централизованного менеджера секретов уже не обойтись.
Один из самых практичных вариантов - Bitwarden или его легкая self-hosted реализация Vaultwarden.
Официальный продукт;
Есть облачная версия;
Есть self-hosted;
Поддержка, enterprise-функции.
Open-source реализация сервера Bitwarden;
Легкий (часто запускается в одном Docker-контейнере);
Минимальные требования;
Полная совместимость с официальными клиентами.
Для небольших и средних инфраструктур Vaultwarden часто идеальный вариант.
Централизованное хранение паролей
Шифрование на стороне клиента (zero-knowledge)
Разграничение доступа по организациям и коллекциям
Поддержка 2FA
Аудит доступа
Можно хранить:
SSH-пароли
Учетки админов
Доступы к сетевому оборудованию
API-токены
Пароли сервисных аккаунтов
docker run -d \
--name vaultwarden \
-v /vw-data:/data \
-p 8080:80 \
vaultwarden/server:latest
И все, дальше подключаемся через браузер или официальные клиенты Bitwarden.
В продакшене, конечно:
HTTPS через reverse proxy;
регулярные бэкапы /data;
ограничение доступа по сети;
включенная админ-панель с отдельным токеном.
#security #vaultwarden
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4😁2
Большинство используют tcpdump как "посмотреть весь трафик на 80 порт". Но настоящая сила в BPF-фильтрах. Правильный фильтр = меньше шума, быстрее диагностика и меньше нагрузки на сервер. Небольшая шпаргалка фильтров, которые реально пригождаются.
tcpdump -i eth0 host 10.10.10.5 and port 443
Когда нужно понять, что происходит между двумя узлами.
Исходящий:
tcpdump -i eth0 src host 192.168.1.10
Входящий:
tcpdump -i eth0 dst host 192.168.1.10
tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
Подойдет для: выявления сканирования, анализа всплеска подключений, диагностики DoS
Только SYN без ACK:
tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn'
tcpdump -i eth0 not port 22
Или исключить конкретную подсеть:
tcpdump -i eth0 not net 10.0.0.0/8
tcpdump -i eth0 'tcp[tcpflags] & tcp-rst != 0'
Помогает понять, кто рвет соединения: сервер, клиент или firewall.
tcpdump -nn -i eth0 tcp
Дальше анализ через Wireshark или tcptrace.
tcpdump -i eth0 -A -s 0 'tcp port 80'
-A - показать ASCII-s 0 - не обрезать пакетыМожно сразу фильтровать по методу:
tcpdump -i eth0 -A 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]>>4)<<2)) != 0)'
(когда нужно видеть payload, а не только заголовки)
tcpdump -i eth0 -w dump.pcap
С ограничением по размеру:
tcpdump -i eth0 -C 100 -W 5 -w dump.pcap
Это создаст ротацию файлов по 100MB (до 5 файлов).
tcpdump -i eth0 port 53
Только большие ответы:
tcpdump -i eth0 'udp port 53 and greater 512'
Часто помогает при подозрении на туннелирование через DNS.
#linux #tcpdump
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤2
На всех linux-серверах, которые необходимо настроить или с которыми предстоит плотно поработать, первым делом стоит задуматься про историю команд. Т.к я часто пользуюсь history, поэтому важно, чтобы команды: сохранялись сразу, хранились долго, были с таймстампами и не засорялись мусором. Обычно добавляю все в
~/.bashrc.
PROMPT_COMMAND='history -a'
history -a сохраняет команды текущей сессии в файл перед каждым выводом приглашения.
export HISTTIMEFORMAT='%F %T '
Формат будет таким:
2026-03-31 12:20:30 apt install nginx
export HISTSIZE=10000
Теперь в лимит не упретесь 🙂
export HISTIGNORE="ls:history:w:htop:pwd:top:iftop"
Список можно адаптировать под себя.
export HISTCONTROL=ignorespace
Теперь команда, введенная с пробела, не будет сохранена.
source ~/.bashrc
export | grep -i hist
Если хотите применить настройки ко всем пользователям, для этого создайте файл, например:
/etc/profile.d/history.sh
Скрипты оттуда выполняются при запуске shell.
Стандартный способ -
Ctrl + R.Нажимаете и начинаете вводить команду. Повторное
Ctrl + R - следующий результат.Я чаще делаю так:
history | grep 'apt install'
Сразу видно все и можно быстро скопировать нужную строку.
#linux #terminal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Если нужно оперативно прикинуть пропускную способность канала между двумя Linux-машинами, можно обойтись без установки
iperf. Достаточно netcat, который в большинстве дистрибутивов уже есть.Допустим, есть сервер 10.25.1.157.
На нем запускаем слушатель:
nc -lvp 5201 > /dev/null
На второй машине отправляем 100 МБ нулевых данных (10 блоков по 10 МБ):
dd if=/dev/zero bs=10M count=10 | nc 10.25.1.157 5201
dd покажет скорость передачи - это и будет приблизительная оценка ширины канала.
Если сравнить результаты
netcat и iperf3, получается интересная картина:До 1 Gbit/sec показатели практически совпадают (разница в пределах погрешности).
Для обычных VPS и типичных серверных подключений - способ вполне рабочий.
Для быстрой диагностики, более чем достаточно.
Можно смело использовать
netcat, если нужно быстро понять: канал живой и дает ли он заявленную скорость.При тестах в виртуальной среде:
iperf3 показывал около 15 Gbit/sec
netcat - примерно 4 Gbit/sec
при этом гипервизор заявлял бридж на 10 Gbit/sec
Разброс серьезный. Почему так происходит:
netcat не оптимизирован под high-performance тестированиенет тонкой настройки TCP-параметров
влияет размер буферов
влияет CPU и обработка в user-space
виртуальная сеть дает свою специфику
В таких сценариях уже сложно сказать, кто ближе к истине. Корректный замер реальной скорости требует учета множества факторов: MTU, offload, congestion control, NUMA, CPU pinning и т.д.
#networking #netcat
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔2
В Ansible многие используют facts только для базовых вещей:
ansible_os_family, ansible_hostname, ansible_default_ipv4. Но механизм фактов куда мощнее, если копнуть глубже, можно строить динамичную и умную автоматизацию.
- hosts: all
gather_facts: false
А если нужны только сетевые:
- hosts: all
gather_facts: true
gather_subset:
- network
Это особенно заметно в больших инфраструктурах.
- name: Install qemu tools
package:
name: qemu-guest-agent
state: present
when: ansible_virtualization_type == "kvm"```yaml
Или автоматический выбор пакетов по версии ОС:
```yaml
when: ansible_distribution_major_version | int >= 9
Создаем на хосте файл:
/etc/ansible/facts.d/app.fact
Пример содержимого (JSON):
{
"role": "backend",
"env": "prod"
}
После этого факты будут доступны как:
ansible_local.app.role
ansible_local.app.env
Теперь сервер сам знает, кто он, а плейбук просто реагирует.
- set_fact:
is_prod: "{{ 'prod' in inventory_hostname }}"
И дальше использовать:
when: is_prod
Важно помнить: set_fact живет в рамках хоста и текущего play.
- name: Get DB IP
command: hostname -I
register: db_ip
delegate_to: db01
run_once: true
Теперь можно передать IP в шаблон для backend-серверов.
fact_caching = jsonfile
fact_caching_connection = /tmp/ansible_facts_cache
fact_caching_timeout = 86400
если есть второй диск, то настраиваем RAID
если RAM > 16GB, то увеличиваем worker-пулы
если это VM, то отключаем tuned-профили для bare metal
Пример:
when: ansible_memtotal_mb > 16000
#ansible #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1