7.2 KiB
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ı
- İmaj içeriği (kimliksiz zemin):
- Ubuntu Server 26.04.1+ minimal (GUI yok).
unattended-upgradeskapalı (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).
- 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
- 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). - 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
- Bozuk imaj: önceki USB sürümüne dönüş (USB'ler sürüm etiketli saklanır).
- Kurulum sonrası hata: kurucu idempotent yeniden koşar; düzelmezse 17-RECOVERY LEVEL 9 (imajdan temiz kurulum).
- 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"]