همهی قطعهها را ساختیم؛ حالا باید این سامانه بدون دخالت دستی زنده بماند. در این بخش پایانی دو حلقهی اتوماسیون را میبندیم: خودکارکردن همگامسازی Mirror و بهروزرسانی امنیتی خودکار روی کلاینتها.
همگامسازی خودکار Mirror
یک اسکریپت ساده، Mirror را بهروز و امضا میکند: وقتی اینترنت هست، آخرین packageها را از بالادست میگیرد؛ و در هر اجرا فهرست مخزن را بازسازی و دوباره امضا میکند. این اسکریپت را با یک systemd timer زمانبندی میکنیم تا روزانه اجرا شود:
# /etc/systemd/system/mirror-sync.timer
[Timer]
OnCalendar=daily
Persistent=true
mirror-sync فعال است و در هر اجرا مخزن را بازسازی و دوباره امضا میکند. Persistent=true یعنی اگر سرور خاموش بوده، اجرای ازدسترفته جبران میشود.بهروزرسانی امنیتی خودکار روی کلاینتها
حالا مهمترین حلقه: کلاینتها باید خودشان وصلههای امنیتی را نصب کنند، آن هم از Mirror محلی. ابزار unattended-upgrades دقیقاً برای همین است. کافی است Mirror محلی را بهعنوان یک origin مجاز معرفی کنیم:
# /etc/apt/apt.conf.d/51obsernetics-mirror
Unattended-Upgrade::Allowed-Origins { "Obsernetics:stable"; };
از این پس، کلاینت بدون هیچ دسترسیای به اینترنت، بهروزرسانیها را از Mirror محلی میگیرد و نصب میکند. در نمونهی زیر، package مربوط به منطقهی زمانی بهطور خودکار از نسخهی قدیمی به نسخهی تازه بهروزرسانی شد؛ کاملاً آفلاین:
unattended-upgrades با origin مجاز o=Obsernetics اجرا میشود و packageها را از Mirror محلی بهروزرسانی میکند. نسخهی tzdata از 2025b به 2026c ارتقا یافت.جمعبندی مجموعه
مجموعه کامل شد. حالا یک Mirror محلی داریم که همهی چیزهایی را که یک زیرساخت به آن نیاز دارد، بدون اینترنت در اختیار میگذارد:
- packageهای سیستمعامل و وصلههای امنیتی (apt و dnf)
- ایمیجهای کانتینر (رجیستری محلی)
- کتابخانههای زبانها (PyPI و npm)
- چارتهای Helm و ایمیجهای سیستم
- و اتوماسیونی که همهی اینها را تازه نگه میدارد و کلاینتها را بهروز میکند
نتیجه این است که قطعی اینترنت دیگر بهمعنای ماندن روی نسخههای آسیبپذیر نیست؛ سرورها و سیستمهای داخلی میتوانند مستقل از اینترنت بینالملل، امن و بهروز بمانند. کد و اسکریپتهای کامل مجموعه در مخزن عمومی در دسترس است:
https://github.com/obsernetics/local-mirror
یک Mirror محلی، تفاوت میان «همهچیز هنگام قطعی اینترنت متوقف میشود» و «سرویسها و بهروزرسانیها بدون وقفه ادامه دارند» است.
بخشهای این مجموعه
- بخش ۱: مفاهیم، معماری و راهاندازی میزبان Mirror
- بخش ۲: Mirror packageهای سیستمعامل (apt و dnf)
- بخش ۳: رجیستری کانتینر محلی
- بخش ۴: packageهای زبانها؛ PyPI و npm
- بخش ۵: چارتهای Helm و ایمیجهای سیستم
- بخش ۶: اتوماسیون همگامسازی و بهروزرسانی خودکار (همین بخش)