Blueforce-Linux/docs/04-GOLDEN-IMAGE-AND-PROVISIONING.md

7.2 KiB
Raw Blame History

04 — Golden Image ve Provisioning

Kısa özet: Saha imajının nasıl üretildiği ve cihaza nasıl basıldığı: autoinstall-tabanlı Ubuntu zemini + ilk açılışta kimlik enjeksiyonu. Hedef akış: USB → Ubuntu → tek script → bayi no → READY.

  • Dosya: docs/04-GOLDEN-IMAGE-AND-PROVISIONING.md
  • İlgili kararlar: 24-DECISION-LOG.md#K-09 (golden image yöntemi), K-01 (OS), K-11 (update kapalı), K-12 (kimlik imajda değil, ilk boot'ta)
  • Durum: [ ] Taslak

1. Amaç

Heterojen 700 saha PC'sinde aynı zemini tekrarlanabilir şekilde kurmak: imajın ne içerdiği, ne içermediği (cihaz kimliği), hangi araçla üretildiği ve sahada hangi akışla basıldığı.

2. Kapsam

  • Kapsam içi: yöntem seçimi (karşılaştırma tablosu), imaj içeriği, autoinstall rolü, USB basım akışı, kimlik enjeksiyonu, LAB test matrisi.
  • Kapsam dışı: kurucu modül detayları (05), BIOS ayarı detayı (03), rollout lojistiği (18-RECOVERY/18-ROLLOUT).

3. Kararlar

KARAR:    Golden image = Ubuntu Server 26.04.1+ minimal + `unattended-upgrades` kapalı + `blueforce-install.sh` tek kurucu (bayi no → READY); imaj, preseed/autoinstall dosyasıyla üretilir, cihaz-spesifik kimlik (`bf-<no>`) imajda DEĞİL ilk açılışta verilir.
GEREKÇE:  Donanım heterojenliği bilinmediği için bit-kopya klon (Clonezilla) tek imajda kırılgandır; autoinstall + idempotent kurulum scripti her donanım profilinde aynı zemini kurar, kimlik ilk boot'ta enjekte edilir. Hedef akış: USB → Ubuntu → tek script → bayi no → READY.
ALTERNATİF: Clonezilla bit-kopya (hızlı ama donanım-fragil → yedek yöntem olarak tutulur); Packer/custom ISO (ek derleme hattı yükü → elendi); cloud-init (autoinstall'a göre saha-USB akışına daha az uygun → elendi).
RİSK:     İlk imaj heterojen donanımda sürücü eksiltebilir; azaltma: önce `bf-hardware-inventory.sh` taraması (18-ROLLOUT), LAB'da her profilde test.
MALİYET:  Ücretsiz.
LİSANS:   Ubuntu autoinstall/subiquity (ücretsiz, Ubuntu lisans seti içinde) — https://releases.ubuntu.com/26.04/ (doğrulanma: 2026-09-15). NOT: resmi autoinstall sözdizimi LAB çıktısıyla kesinleşir.

4. Neden Bu Karar?

Bit-kopya klon, kaynak makinenin sürücü setini dondurur; farklı anakart/ağ kartı olan sahada açılmayan cihaz üretir. Autoinstall her makinede donanıma göre kurulum yapar, ardından aynı kurucu script aynı zemini kurar — sonuç donanımdan bağımsız deterministik zemin + ilk boot'ta enjekte edilen benzersiz kimliktir. Custom ISO/Packer ek derleme hattı (imzalı ISO, build sunucusu, sürüm takibi) getirir; sadelik kuralını bozar.

5. Alternatifler

Yöntem Artı Eksi Sonuç
Ubuntu autoinstall (user-data) Resmi yol, donanım-bağımsız, USB'den katılımsız Sözdizimi LAB'da doğrulanmalı Seçildi
Clonezilla bit-kopya Çok hızlı klon, basit Donanım-fragil, kimlik çakışması riski Yedek yöntem
cloud-init (NoCloud USB) Esnek ilk-boot yapılandırma Saha-USB akışına autoinstall kadar uygun değil, ek katman Elendi
Custom ISO (cubic/live-build) Her şey gömülü tek ISO Derleme hattı + imza + sürüm yükü Elendi
Packer + QEMU build Tekrarlanabilir build Ek altyapı, öğrenme eğrisi, 700 PC için aşırı Elendi
Ansible-only (kurulu OS üstüne) İmaja gerek yok Temel OS kurulumu yine manuel/USB gerektirir Tamamlayıcı (kurucu sonrası filo)

6. Avantajlar

  • İmaj kimliksizdir: tek USB tüm sahada kullanılır, yanlış kimlikli cihaz çıkmaz.
  • Kurucu idempotent olduğu için yarım kalan kurulum kaldığı yerden tamamlanır.
  • Yedek yöntem (Clonezilla) hazırda bekler; autoinstall bir profilde takılırsa sahada blokaj olmaz.

7. Dezavantajlar

  • Autoinstall sözdizimi Faz 1'de resmi-doğrulamalı değil; LAB çıktısı beklenir.
  • İlk kurulum Clonezilla'ya göre daha yavaştır (paket kurulumu her cihazda tekrarlanır).

8. Riskler

Risk Olasılık Etki Azaltma
Heterojen donanımda sürücü eksikliği Orta Orta Envanter taraması + LAB profil matrisi
Autoinstall sözdizimi sürüm farkı Orta Düşük LAB 26.04.1 çıktısı dondurulur, dosyası repo'da sürümlenir
USB medyası bozuk/eskimiş Düşük Düşük Çift USB + SHA256 doğrulama

9. Uygulama Planı

  1. İmaj içeriği (kimliksiz zemin):
    • Ubuntu Server 26.04.1+ minimal (GUI yok).
    • unattended-upgrades kapalı (03 §9 adım 6).
    • blueforce-install.sh + modüller USB'de /opt/blueforce-installer/ altında (veya ilk boot'ta merkezi depodan çekilir — LAB'da netleşir).
    • Bootstrap SSH anahtarı (ilk Ansible run'ında rotasyon, K-13).
  2. Saha akışı (hedef: teknisyen başına <15 dk aktif iş):
USB tak → Ubuntu Server kur (autoinstall, katılımsız)
  → ilk açılışta: sudo ./blueforce-install.sh --dealer-id <8hane>
  → script bitince: bf-status → READY
  → USB çıkar, cihaz sahaya alınır
# sahada tek komut (kimlik ilk kez burada verilir)
sudo ./blueforce-install.sh --dealer-id 12010193
  1. Kimlik enjeksiyonu ilk boot'ta olur: hostname + WireGuard peer + envanter kaydı kurucu tarafından yazılır; imajda hiçbir bf-<no> artığı bulunmaz (final-check denetler).
  2. LAB test matrisi: envanterde çıkan her donanım profili × (kurulum + güç-kesintisi + bf-gui-on/off + final-check) — matris dolmadan WAVE açılmaz.

10. Test Planı

Test Beklenen sonuç Ortam
Aynı USB ile 2 farklı donanım profili İkisi de READY LAB(2)
İmajda kimlik artığı taraması (bf-*, peer key) Hiçbir cihaz-spesifik değer yok LAB(2)
Yarım kesilen kurulumun tekrarı İkinci koşu tamamlar, exit 0 LAB(2)
Clonezilla yedek yöntemi Autoinstall takılan profilde READY LAB(2)

11. Rollback

  1. Bozuk imaj: önceki USB sürümüne dönüş (USB'ler sürüm etiketli saklanır).
  2. Kurulum sonrası hata: kurucu idempotent yeniden koşar; düzelmezse 17-RECOVERY LEVEL 9 (imajdan temiz kurulum).
  3. Autoinstall dosyası hatalıysa düzeltme repo PR'ı ile sürümlenir, SHA256 yeniden yayımlanır.

12. Kontrol Listesi

  • Autoinstall dosyası repo'da sürümlü + LAB çıktısıyla doğrulanmış.
  • USB SHA256 değeri yayımlanmış ve sahada doğrulanıyor.
  • İmajda kimlik artığı yok (otomatik tarama).
  • Her donanım profili LAB matrisinde READY almış.
  • Clonezilla yedek prosedürü yazılı ve test edilmiş.

13. Açık Sorular

  • Kurucu USB'de mi taşınacak, ilk boot'ta merkezden mi çekilecek (saha interneti varsayımı) (sahibi: Faz 3).
  • Autoinstall kesin direktif seti — LAB 26.04.1 çıktısı (sahibi: Faz 3, bu dosyanın yazarı).
  • USB hazırlama standardı (Ventoy vs dd vs Balena) (sahibi: Faz 3).

Ek: Provisioning Akışı

flowchart LR
    USB["USB<br/>(autoinstall + kurucu)"] --> KUR["Ubuntu Server 26.04.1<br/>katılımsız kurulum"]
    KUR --> TEK["sudo ./blueforce-install.sh<br/>--dealer-id <8hane>"]
    TEK --> KIMLIK["Kimlik enjeksiyonu<br/>bf-<no> + peer + envanter"]
    KIMLIK --> HAZIR["bf-status → READY"]
    HAZIR --> SAHA["Sahaya alım"]