Mirror محلی packageها برای قطعی اینترنت، بخش ۶: اتوماسیون همگام‌سازی و به‌روزرسانی خودکار

همه‌ی قطعه‌ها را ساختیم؛ حالا باید این سامانه بدون دخالت دستی زنده بماند. در این بخش پایانی دو حلقه‌ی اتوماسیون را می‌بندیم: خودکارکردن همگام‌سازی Mirror و به‌روزرسانی امنیتی خودکار روی کلاینت‌ها.

همگام‌سازی خودکار Mirror

یک اسکریپت ساده، Mirror را به‌روز و امضا می‌کند: وقتی اینترنت هست، آخرین packageها را از بالادست می‌گیرد؛ و در هر اجرا فهرست مخزن را بازسازی و دوباره امضا می‌کند. این اسکریپت را با یک systemd timer زمان‌بندی می‌کنیم تا روزانه اجرا شود:

# /etc/systemd/system/mirror-sync.timer
[Timer]
OnCalendar=daily
Persistent=true
زمان‌بندی همگام‌سازی Mirror با systemd timer
timer روزانه‌ی mirror-sync فعال است و در هر اجرا مخزن را بازسازی و دوباره امضا می‌کند. Persistent=true یعنی اگر سرور خاموش بوده، اجرای ازدست‌رفته جبران می‌شود.

به‌روزرسانی امنیتی خودکار روی کلاینت‌ها

حالا مهم‌ترین حلقه: کلاینت‌ها باید خودشان وصله‌های امنیتی را نصب کنند، آن هم از Mirror محلی. ابزار unattended-upgrades دقیقاً برای همین است. کافی است Mirror محلی را به‌عنوان یک origin مجاز معرفی کنیم:

# /etc/apt/apt.conf.d/51obsernetics-mirror
Unattended-Upgrade::Allowed-Origins { "Obsernetics:stable"; };

از این پس، کلاینت بدون هیچ دسترسی‌ای به اینترنت، به‌روزرسانی‌ها را از Mirror محلی می‌گیرد و نصب می‌کند. در نمونه‌ی زیر، package مربوط به منطقه‌ی زمانی به‌طور خودکار از نسخه‌ی قدیمی به نسخه‌ی تازه به‌روزرسانی شد؛ کاملاً آفلاین:

به‌روزرسانی خودکار امنیتی روی کلاینت بدون اینترنت از Mirror محلی
کلاینت بدون اینترنت: unattended-upgrades با origin مجاز o=Obsernetics اجرا می‌شود و packageها را از Mirror محلی به‌روزرسانی می‌کند. نسخه‌ی tzdata از 2025b به 2026c ارتقا یافت.

جمع‌بندی مجموعه

مجموعه کامل شد. حالا یک Mirror محلی داریم که همه‌ی چیزهایی را که یک زیرساخت به آن نیاز دارد، بدون اینترنت در اختیار می‌گذارد:

  • packageهای سیستم‌عامل و وصله‌های امنیتی (apt و dnf)
  • ایمیج‌های کانتینر (رجیستری محلی)
  • کتابخانه‌های زبان‌ها (PyPI و npm)
  • چارت‌های Helm و ایمیج‌های سیستم
  • و اتوماسیونی که همه‌ی این‌ها را تازه نگه می‌دارد و کلاینت‌ها را به‌روز می‌کند

نتیجه این است که قطعی اینترنت دیگر به‌معنای ماندن روی نسخه‌های آسیب‌پذیر نیست؛ سرورها و سیستم‌های داخلی می‌توانند مستقل از اینترنت بین‌الملل، امن و به‌روز بمانند. کد و اسکریپت‌های کامل مجموعه در مخزن عمومی در دسترس است:

https://github.com/obsernetics/local-mirror

یک Mirror محلی، تفاوت میان «همه‌چیز هنگام قطعی اینترنت متوقف می‌شود» و «سرویس‌ها و به‌روزرسانی‌ها بدون وقفه ادامه دارند» است.

بخش‌های این مجموعه

← بازگشت به وبلاگ