Home » Топ-10 скриптов автоматизаций, которые должны быть в каждой домашней лаборатории в 2025 году

Топ-10 скриптов автоматизаций, которые должны быть в каждой домашней лаборатории в 2025 году

от virtualizationhowto
0 Комментарии 489 просмотров 13 мин на чтение

Если вы хотите перевести свою домашнюю лабораторию на качественно новый уровень, вам помогут автоматизации. Чем больше процессов в вашем окружении вы можете настроить на самоуправление, тем больше времени у вас остается на создание и эксперименты с другими крутыми вещами. Если вы управляете контейнерами, виртуальными машинами или кластером Ceph, существует несколько скриптов автоматизации для домашней лаборатории, которые помогут поддерживать всё в рабочем и стабильном состоянии. Давайте рассмотрим десять скриптов автоматизации, которые должны быть в каждой домашней лаборатории в 2025 году.

Должны ли скрипты быть сложными?

Короткий ответ: нет, не должны! Вы увидите, что приведенные ниже скрипты в основном состоят из очень небольшого количества строк кода на Bash. Вы можете начать писать скрипты, просто поместив обычные команды Bash, которые вы вводили бы вручную, в файл .sh и выполнив его.

А теперь перейдем к скриптам!

1. Скрипт очистки Docker

Я часто использую Docker-контейнеры в моей домашней лаборатории, но частые эксперименты с множеством контейнеров создают беспорядок на Docker-хостах. Со временем вы будете накапливать устаревшие образы от остановленных контейнеров, зависшие тома и неиспользуемые сети. Если вы используете Docker-контейнеры на нескольких хостах или у вас работает Swarm-кластер, эти неиспользуемые данные будут суммироваться и быстро съедать дисковое пространство.

Скрипт очистки Docker для всех ваших docker-хостов
Скрипт очистки Docker для всех ваших docker-хостов

Простой скрипт очистки, который может вернуть тонны пространства, может выглядеть примерно так:

Если вы хотите менее агрессивную версию, вы можете использовать что-то вроде приведенной ниже, которая не будет удалять образы из остановленных контейнеров, которые вы, возможно, захотите перезапустить позже:

Вы можете запускать любой из этих скриптов вручную или настроить его выполнение по расписанию cron еженедельно. Если вы используете Ansible или конвейеры GitLab (что я очень рекомендую), вы можете запускать эту команду перед выполнением обновлений.

2. Автоматизация резервного копирования Proxmox

Если вы запускаете Proxmox Backup Server (PBS) (а вы должны это делать, если у вас есть Proxmox), вы, вероятно, уже знакомы с тем, насколько хорошо он работает. Но даже без Proxmox Backup Server вы можете использовать скрипты для создания резервных копий. Вместо ручного создания снимков или запуска заданий резервного копирования в графическом интерфейсе Proxmox вы можете использовать скрипт, который позаботится об этом.

Proxmox backup server
Proxmox backup server

Взгляните на следующие скрипты автоматизации для домашней лаборатории с Proxmox Backup Server:

Без Proxmox Backup Server:

3. Скрипт проверки состояния Ceph или MicroCeph

Если вы углубились в запуск Ceph в Proxmox или Microceph, как это сделал я со своими узлами Kubernetes и Docker Swarm, вы хотите иметь хорошее общее представление о состоянии вашего программно-определяемого хранилища. Следующий скрипт проверяет состояние кластера и предупреждает вас, если в вашем окружении Ceph что-то происходит.

Скрипты автоматизации проверки здоровья Ceph для домашней лаборатории
Скрипты автоматизации проверки здоровья Ceph для домашней лаборатории

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

Вы можете привязать это к Discord, Teams или любому вебхуку, который вы хотите использовать для оповещений. В MicroCeph это также можно выполнить из crontab на одном узле для мониторинга всего кластера.

4. Автоматический мониторинг истечения срока действия SSL-сертификатов

Даже если вы используете сертификаты Let’s Encrypt для своей домашней лаборатории (и вам стоит это делать для защиты сервисов), автоматическое продление иногда может дать сбой или что-то пойти не так в процессе. Скрипт проверки срока действия сертификата может помочь вам следить за ситуацией до того, как ваши сервисы перестанут работать из-за ошибок сертификатов.

Генерация сертификатов lets encrypt
Генерация сертификатов lets encrypt

Следующий скрипт помогает вам обнаружить сбои автоматического продления до истечения срока действия сертификата. Вы можете запускать его ежедневно с помощью задания CRON или в небольшом Docker-контейнере.

5. Скрипт инвентаризации домашней лаборатории

Вам не нужно сложное корпоративное программное обеспечение для создания очень подробной инвентаризации ваших сетей. Все, что вам нужно, это установленный nmap, и тогда вы можете запустить скрипт инвентаризации, который вызывает nmap для инвентаризации вашей сети. Он будет сообщать имена хостов, IP-адреса и открытые порты.

Запуск скриптов автоматизации nmap для домашней лаборатории
Запуск скриптов автоматизации nmap для домашней лаборатории

Вы можете решить, как обрабатывать вывод. Вы можете выводить данные в JSON, CSV, TXT или другой формат. Если вы используете NetBox или phpIPAM, тот же скрипт может отправлять обновления напрямую в их API.

Просто замените в скрипте на ваш диапазон сети.

6. Скрипт автоматического обновления контейнеров

Я настоятельно рекомендую использовать что-то вроде Watchtower для обновления ваших контейнеров. Вы также можете использовать Portainer, если запускаете его, или Shepherd для Docker Swarm. Однако, опять же, вам не нужно специализированное решение для этого. Вы можете запускать обновления контейнеров самостоятельно, используя скрипт BASH. Взгляните на скрипт ниже.

Конфигурация Watchtower для Docker
Конфигурация Watchtower для Docker

Следующий скрипт:

  • Обновляет только контейнеры, которые действительно изменились
  • Автоматически очищает старые образы
  • Может уведомлять о произошедших обновлениях

Запускайте этот скрипт каждую ночь или еженедельно, в зависимости от того, как часто ваши контейнеры получают обновления. Это простой способ оставаться в актуальном состоянии без ручного вмешательства. В Docker Swarm или Portainer вы можете запускать это через вебхук, чтобы обеспечить безопасное rolling-обновление.

7. Скрипт очистки снимков

Этот скрипт для пользователей VMware vSphere. Снимками часто злоупотребляют. Хотя они отлично подходят для использования, когда они нужны, их часто оставляют на неопределенный срок, что в целом снижает производительность. Хотя vSphere теперь имеет много встроенных интеллектуальных функций в vCenter для планирования постепенного удаления снимков, вы также можете запланировать выполнение этого с помощью скрипта.

8. Плейбук управления обновлениями Ansible

Патчинг нескольких Linux-систем не должен быть рутиной. Вы можете использовать Ansible для автоматизации этого процесса без каких-либо проблем. Даже если у вас всего 3-4 Linux-виртуальные машины, это может сэкономить вам кучу времени.

Ansible можно использовать для скриптов автоматизации домашней лаборатории
Ansible можно использовать для скриптов автоматизации домашней лаборатории

Сначала простой файл инвентаризации (что-то вроде ~/homelab/inventory.ini):

Следующий скрипт позволит вам обновлять системы как на базе Debian, так и на базе RHEL. Он проверяет, не требуется ли перезагрузка, и предоставляет вам отчет о том, что произошло с обновлениями. Вы можете запланировать его еженедельное выполнение с помощью CRON, и вам больше не придется вручную подключаться к вашим машинам и запускать обновления!

9. Скрипт плавного отключения, запускаемый от ИБП

Если ваша домашняя лаборатория работает от ИБП (что является отличной идеей), вы можете запускать автоматические отключения, чтобы предотвратить повреждение данных, когда сервер просто «умирает» при разрядке батареи ИБП. Network UPS Tools (NUT Server) может запускать скрипт для отключения ваших систем в правильном порядке и помочь защитить ваши данные.

Network ups tools
Network ups tools

Сначала установите NUT:

Далее следует скрипт отключения. Вы можете создать его и сохранить как /usr/local/bin/ups-shutdown.sh.

Настройте NUT для его вызова (/etc/nut/upsmon.conf):

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

10. Самовосстанавливающийся монитор служб

Службы могут аварийно завершаться, а контейнеры останавливаться, когда вы меньше всего этого ожидаете. Самовосстанавливающийся монитор служб с помощью скрипта может проверять, действительно ли службы работают и отвечают, а затем автоматически перезапускать их, чтобы «самостоятельно исправить» проблему без необходимости постоянного присмотра с вашей стороны.

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

Затем вы можете запланировать его выполнение с помощью CRON каждые 5 минут, как показано ниже:

Хорошая вещь в этом скрипте мониторинга служб заключается в том, что он фактически гарантирует, что службы отвечают, а не просто работают. Он также уведомит, если восстановление не удалось, так что вы будете знать, нужно ли вам вручную вмешаться и запустить всё заново.

Создайте себе библиотеку скриптов для домашней лаборатории

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

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

Подводя итоги

Надеюсь, эти 10 практичных скриптов автоматизации, которые мы здесь выделили, дадут вам некоторые представления о том, насколько мощными могут быть автоматизация и скрипты в вашей домашней лаборатории. Начните с малого — с проблемы, задачи или просто рутинного действия, которое вы хотите автоматизировать, а затем работайте над скриптом для этого. Я не являюсь большим поклонником использования ИИ для создания скриптов, но он может значительно ускорить процесс.

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

Даже просто подбор, перевод и оформление статей требуют времени. А самостоятельный обзор устройств требует еще и финансовых вложений. Если Вы хотите больше обзоров, Вы можете помочь автору.

Вам может понравиться

Оставить комментарий