Регулярные бэкапы — то, о чем вспоминают, когда уже поздно.
Вот базовый пример скрипта, который архивирует директорию в tar.gz с таймстэмпом в имени и складывает в заданное место:
import shutil
import time
def backup_directory(source, destination):
timestamp = time.strftime("%Y%m%d%H%M%S")
backup_file = f"{destination}/backup_{timestamp}.tar.gz"
# shutil.make_archive ожидает путь без расширения
shutil.make_archive(backup_file.replace(".tar.gz", ""), "gztar", source)
print(f"Backup completed: {backup_file}")
backup_directory("/path/to/important/data", "/path/to/backup/location")
Что делает скрипт:
• Берёт путь к исходной директории source и каталогу для бэкапов destination.
• Генерирует имя файла по текущему времени, чтобы каждый бэкап был уникальным.
• Создаёт архив в формате tar.gz с помощью shutil.make_archive.
• Печатает путь к созданному бэкапу.
Как использовать в продакшене:
• Положить скрипт в репозиторий инфраструктуры или ansible/helm-роль.
• Прописать запуск через cron, systemd timer или CI-пайплайн.
• Добавить логирование в файл и алерт при ошибке
Минимальная доработка под боевое окружение:
• Проверка существования директорий.
• Конфиг через переменные окружения или .env.
• Отправка бэкапа в S3 / объектное хранилище / удалённый сервер.
Такой небольшой скрипт закрывает базовую задачу резервного копирования важных директорий без лишних зависимостей.
🔹 Программирование на языке Python
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Когда вы разворачиваете Kubernetes кластер вручную, нужно на каждый узел установить куча компонентов: kubeadm, kubelet, kubectl, добавить репозитории, настроить сеть, включить необходимые модули ядра.
На одном узле это полчаса работы. На десяти узлах — это часы монотонной, однообразной работы, где легко что-то забыть или неправильно сделать.
Подготовили для вас такой плейбук:
- name: Configure Kubernetes node
hosts: nodes
become: yes
tasks:
- name: Install kubeadm, kubelet, and kubectl
apt:
name: "{{ item }}"
state: present
loop:
- kubeadm
- kubelet
- kubectl
hosts: nodes — плейбук выполняется на всех серверах, которые помечены как узлы (nodes) в вашем инвентаре Ansible.become: yes — нужны права администратора для установки пакетов и системных изменений.apt: — модуль для управления пакетами в Debian/Ubuntu. Установит из стандартных репозиториев.loop: — устанавливает три компонента:• kubeadm — инструмент для инициализации и управления кластером
• kubelet — агент, который запускает контейнеры на узле
• kubectl — команда для управления Kubernetes кластером
state: present — пакеты должны быть установлены.После установки этих компонентов узел будет готов присоединиться к кластеру Kubernetes.
🔹 Математика для разработки AI-моделей
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 Вышла FreeBSD 15.0
Вышел стабильный релиз FreeBSD 15.0. Образы уже доступны для amd64, aarch64, armv7, powerpc64, powerpc64le и riscv64, а также в форматах для виртуализации и облаков
Главное: 15.x окончательно про 64‑битные системы. Поддержка 32‑битных платформ в ядре прекращена, но до конца жизни 16.x останется возможность собирать 32‑битные приложения и запускать их через COMPAT_FREEBSD32 в 64‑битном окружении.
Теперь базовую систему можно ставить и обновлять через пакетный менеджер pkg, а классический монолитный подход через freebsd-update помечен как устаревающий и планируется к удалению к 16 версии.
Часть старых компонентов объявлена устаревшими или удалена: gvinum, ftpd, shar, fdisk, syscons и ряд старых драйверов
➡️ Анонс релиза
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#пульс_индустрии
Вышел стабильный релиз FreeBSD 15.0. Образы уже доступны для amd64, aarch64, armv7, powerpc64, powerpc64le и riscv64, а также в форматах для виртуализации и облаков
Главное: 15.x окончательно про 64‑битные системы. Поддержка 32‑битных платформ в ядре прекращена, но до конца жизни 16.x останется возможность собирать 32‑битные приложения и запускать их через COMPAT_FREEBSD32 в 64‑битном окружении.
Теперь базовую систему можно ставить и обновлять через пакетный менеджер pkg, а классический монолитный подход через freebsd-update помечен как устаревающий и планируется к удалению к 16 версии.
Часть старых компонентов объявлена устаревшими или удалена: gvinum, ftpd, shar, fdisk, syscons и ряд старых драйверов
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
MLOps — это не только Docker и K8s
Чтобы эффективно деплоить и мониторить модели, нужно понимать природу данных и метрик. DevOps, знающий математику ML, стоит на рынке x1.5.
Присоединяйтесь к курсу «Математика для разработки AI-моделей». Мы добавили живые вебинары.
Что прокачаем:
— понимание матричных операций (нагрузка на железо);
— логику линейной регрессии (как модель учится);
— SVD и сжатие данных (оптимизация хранения и передачи).
Первый вебинар уже в записи.
Регистрация до 9 декабря:
https://clc.to/LojFzw
Чтобы эффективно деплоить и мониторить модели, нужно понимать природу данных и метрик. DevOps, знающий математику ML, стоит на рынке x1.5.
Присоединяйтесь к курсу «Математика для разработки AI-моделей». Мы добавили живые вебинары.
Что прокачаем:
— понимание матричных операций (нагрузка на железо);
— логику линейной регрессии (как модель учится);
— SVD и сжатие данных (оптимизация хранения и передачи).
Первый вебинар уже в записи.
Регистрация до 9 декабря:
https://clc.to/LojFzw
На MacBook Pro 2019 с чипом T2 ставить Linux непросто. Но Fedora 42 запускается полностью, с Wi-Fi, звуком и тачпадом, если подготовиться заранее.
Если кратко, то раз-раз и готово, а подробности в статье.
🔹 ML для старта в Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚1
🐳 Почему секреты в Dockerfile остаются навсегда
Хардкодить ключи и пароли в Dockerfile кажется быстрым решением, но в контейнерном мире это почти гарантированная утечка. Даже если потом удалить секрет, он уже может остаться в слоях образа, логах, кэше сборки и сторонних регистрах.
Docker строит образ послойно, и каждый слой можно просмотреть через docker history или инструменты анализа образов.
Если на каком то шаге в Dockerfile задать ENV с токеном или скопировать файл с секретами, этот слой останется в истории образа даже после последующих RUN rm и похожих команд. В результате любой, кто получил образ или доступ к реестру, может восстановить эти данные.
Надежное правило для повседневной работы простое — в Dockerfile никогда не должно быть токенов, паролей и ключей. Секреты передаются только в рантайме через env file или встроенные механизмы секретов платформы, а процесс сборки остается максимально слепым к конфиденциальным данным.
🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#root@prompt
Хардкодить ключи и пароли в Dockerfile кажется быстрым решением, но в контейнерном мире это почти гарантированная утечка. Даже если потом удалить секрет, он уже может остаться в слоях образа, логах, кэше сборки и сторонних регистрах.
Docker строит образ послойно, и каждый слой можно просмотреть через docker history или инструменты анализа образов.
Если на каком то шаге в Dockerfile задать ENV с токеном или скопировать файл с секретами, этот слой останется в истории образа даже после последующих RUN rm и похожих команд. В результате любой, кто получил образ или доступ к реестру, может восстановить эти данные.
Надежное правило для повседневной работы простое — в Dockerfile никогда не должно быть токенов, паролей и ключей. Секреты передаются только в рантайме через env file или встроенные механизмы секретов платформы, а процесс сборки остается максимально слепым к конфиденциальным данным.
🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня Let’s Encrypt выдаёт сертификаты на 90 дней, но постепенно этот срок урежут до 45 дней для всех публично доверенных сертификатов.
Меняется не только срок действия сертификата, но и период повторного использования авторизации домена: сейчас домен‑валидация может переиспользоваться 30 дней, к 2028 году это окно сократят до 7 часов. То есть подтверждать контроль над доменом придётся намного чаще.
Если у вас автоматизированный выпуск и продление сертификатов, скорее всего менять ничего не придётся, но автоматизация должна выдерживать более частые обновления.
🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
📰 Новости первой недели декабря
Новый Год всё ближе, а мы с новостями.
— Solus 4.8
— Опасное «обновление» винды
— MiniOS v5.1.0
— Linux 6.18
— Let's Encrypt будет выпускать сертификаты на 45 дней
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#дайджест_недели
Новый Год всё ближе, а мы с новостями.
— Solus 4.8
— Опасное «обновление» винды
— MiniOS v5.1.0
— Linux 6.18
— Let's Encrypt будет выпускать сертификаты на 45 дней
🔹 Специалист по ИИ
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#дайджест_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👍2🤩2
🖇 Как быстро узнать публичный IP сервера
Узнать публичный айпи можно за одну строку:
Эта команда отправляет запрос к сервису ifconfig.me, который возвращает текущий внешний IP вашего сервера. Ключ -s отключает лишний вывод, чтобы показать только сам IP.
🔹 Программирование на языке Python
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека devops'a
#root@prompt
Узнать публичный айпи можно за одну строку:
curl -s ifconfig.me
Эта команда отправляет запрос к сервису ifconfig.me, который возвращает текущий внешний IP вашего сервера. Ключ -s отключает лишний вывод, чтобы показать только сам IP.
🔹 Программирование на языке Python
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Чтобы не собирать вручную десятки однотипных команд для облачной CLI, мы в MWS Cloud Platform сделали генератор: он берёт OpenAPI-спеки и сам создаёт готовый инструмент для управления облаком.
В статье кратко:
— почему выбрали Go + Cobra и кодогенерацию;
— как из путей и методов рождаются mws <service> <component> <op>;
— профили, автообновление, удобный вывод;
— что получилось в итоге и зачем это бизнесу.
Читать статью
В статье кратко:
— почему выбрали Go + Cobra и кодогенерацию;
— как из путей и методов рождаются mws <service> <component> <op>;
— профили, автообновление, удобный вывод;
— что получилось в итоге и зачем это бизнесу.
Читать статью
Вот несколько вещей, которые стоит сделать уже сейчас, чтобы не ловить прод ночью без HTTPS.
Для локального PEM‑файла:
openssl x509 -enddate -noout -in /path/to/cert.pem
Для сертификата, который уже стоит на сервере (через SNI):
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -enddate
Удобно обернуть это в скрипт и повесить на мониторинг, который будет ругаться, если до истечения меньше, скажем, 7 дней.
Если вы используете certbot, базовый cron может выглядеть так:
0 2 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"
• Запускайте чаще, чем раз в 30 дней: certbot сам решит, нужно ли обновлять, но у него будет больше попыток.
• post-hook важен: Nginx (или другой веб‑сервер) должен перечитать новый сертификат.
Для тех, кто предпочитает acme.sh за лёгкость и поддержку разных провайдеров DNS:
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
Обратите внимание
• acme.sh сам следит за сроком и обновляет вовремя.
• После выпуска не забудьте один раз прописать перезагрузку сервиса, например:
/home/user/.acme.sh/acme.sh --install-cert -d example.com
--key-file /etc/ssl/example.com.key
--fullchain-file /etc/ssl/example.com.fullchain.pem
--reloadcmd "systemctl reload nginx"
Даже при настроенном cron бывает, что что‑то ломается: права, DNS, лимиты CA. Хорошая практика
• В мониторинг (Prometheus, Zabbix, Grafana Agent, любой другой) добавить проверку срока сертификата.
• Завести оповещение, если осталось меньше N дней или срок истёк.
Избегайте жёстких «обновлять раз в 60 дней»
При 45‑дневных сертификатах такая логика приведёт к просрочке. Без ARI или «умных» клиентов используйте правило: обновлять примерно на 2/3 срока жизни сертификата. Для 45 дней это где‑то на 30‑й день.
Если у вас уже есть боевой контур на Let’s Encrypt, самое важное сейчас — убедиться, что:
• продление полностью автоматизировано
• веб‑сервер корректно перечитывает новые сертификаты
• есть мониторинг и алерты на срок действия
Тогда переход на более короткий срок будет почти незаметен для вас и ваших пользователей.
🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩4