Skip to Content
ReferenceTarif Şeması

Tarif Şeması

OpenFactory tarifleri Snake_case JSON’u kullanır. Kanonik formatın küçük bir boyutu vardır. üst düzey zarf, işletim sistemi yapılandırması için bir os nesnesi ve Derleme sonrası doğrulama için scenarios dizisi.

Doğrulama, tanınan alanların kabul edilebilir şekillere sahip olduğunu kanıtlar. öyle değil her paketin mevcut olduğunu, talep edilen her davranışın temsil edildiğini kanıtlayın veya görüntü ve testler başarılı olacaktır. Bilinmeyen alanlar geriye dönük olarak göz ardı edilebilir uyumluluk, bu nedenle her zaman tarafından döndürülen normalleştirilmiş tarifi inceleyin. ürün.

Kanonik Zarf

{ "name": "debian-web-check", "display_name": "Debian Web Check", "description": "Small Debian image with explicit smoke tests.", "base_image": "debian-trixie", "use_case": "Server evaluation", "hardware": {}, "os": {}, "scenarios": [], "publish_to": ["local"] }

baseImage veya startupScripts gibi camelCase alanlarını kullanmayın. uyumluluk doğrulayıcı bazı eski düz tarifleri kabul eder, ancak normalleştirilmiş çıktı OS alanlarını os’nin altına yerleştirir. Yeni entegrasyonlar standart formatta gönderilmelidir.

Üst Düzey Alanlar

AlanTürGerekli/varsayılanAnlamı
namedizeGerekli; 3–100 karakterKararlı dahili tarif adı
display_namedize veya nullİsteğe bağlı; 1–100 karakterİnsana bakan isim
descriptiondize""Amaçlanan sonuç ve sınır
base_imagedizedebian-trixieDağıtım/derleme hedefi; geçerli konsol listesini kullan
taskdize veya nullİsteğe bağlıOperasyonel hedef
executordize veya nullİsteğe bağlıTeknolojinin görevi gerçekleştirmesi bekleniyor
use_casedizeGeneralBirincil kullanım durumu
hardwarenesneAşağıda gösterilen varsayılanlarDağıtım gereksinimleri
osnesneBoş/varsayılan nesneİşletim sistemi paketleri, kullanıcılar, hizmetler, güvenlik, masaüstü, yükleyici ve komut dosyaları
scenariosdizi[]Topolojileri ve hedefleri test edin
publish_todize dizisi["local"]İstenen çıktı hedefleri
deliverynesne{}Bildirilen ek teslimat yapılandırması
communityboolefalseTopluluk pazarında görünürlük talep edin; yayın politikası hâlâ geçerlidir

Kaynak-ISO yeniden düzenleme, Proxmox konuğu için gelişmiş hedefe özel alanlar mevcuttur yükler, politika kaynağı ve dağıtım entegrasyonları. Düzenleyiciyi veya API’yi kullanın Eski bir örneği kopyalamak yerine dağıtılan sürüm için sözleşme yapın.

Donanım

{ "hardware": { "platform": "pc", "architecture": "x86_64", "gpu": null, "min_cpu_cores": 2, "min_memory_gb": 4, "min_storage_gb": 16, "nic_count": 1 } }

platform pc, phone veya raspberry_pi’dır; desteklenen cihaz değerleri şunlardır: hedefe özgü. architecture x86_64 veya aarch64’dur. GPU değerleri adı a desteklenen satıcı veya satıcı kombinasyonu. Bunlar beyan edilen gereksinimlerdir, değil Ortaya çıkan görüntünün eşleşen fiziksel donanım üzerinde test edildiğinin kanıtı.

İşletim Sistemi Nesnesi

Ortak os alanları şunlardır:

AlanTürAmaç
featuresdize dizisiKayıtlı özellik modülleri
packagesdize dizisiTalep edilecek yerel paketler
excluded_packagesdize dizisiÖzellik genişletildikten sonra mevcut olmaması gereken paketler
custom_packagesdiziDesteklenen derleme yolu aracılığıyla paketlenecek kaynak depoları
package_overridesdiziAçık ekleme, kaldırma veya değiştirme işlemleri
extra_reposdize dizisiEk depolar; güven ve anahtar yönetimi hâlâ incelenmeyi gerektiriyor
servicesdiziAdlandırılmış hizmet etkinleştirme ve yapılandırması
usersdiziResim-yerel hesaplar ve gruplar
securitynesneBildirilen sağlamlaştırma, şifreleme, denetim, SELinux ve fail2ban seçenekleri
networkingnesneArayüz ve ağ amacı
desktop_settingsnesneMasaüstü görünümü ve davranışı
brandingnesneDağıtım kimliği ve varlıkları
runtimenesneBaşlatma/hizmet/paket yöneticisi kimliği
bootnesneÇekirdek bağımsız değişkenleri ve GRUB seçenekleri
installernesneDiske yükleme yapılandırması
persistencenesneCanlı kalıcılık ve bölge politikası
integritynesneİstenen dm-verity, Güvenli Önyükleme ve IMA/EVM ayarları
file_attachmentsdiziDaha önce yüklenen dosyalar file_id
startup_scriptsdiziSınırlı sistem ve tek seferlik komut dosyaları
time_zonedize veya nullResim saat dilimi ayarı

Bir bütünlük veya güvenlik alanının varlığı yapılandırma amacıdır. öyle mekanizmanın çalışma zamanında üretildiğine, uygulandığına veya nitelikli olduğuna dair kanıt yok bir uyum rejimi için. Eşleşen derleme ve test kanıtları gerektir.

Kullanıcılar

{ "os": { "users": [ { "username": "deploy", "full_name": "Deployment Operator", "groups": ["sudo"], "shell": "/bin/bash" } ] } }

Kullanıcı ve grup adları, güvenli Linux hesabı karakterleri ve uzunluğuyla sınırlıdır. password ayarlanmadan bırakılırsa, yalnızca anahtarla veya dağıtım zamanı kimlik bilgisi iş akışları. Kayıtlı dosyalarda düz metin kimlik bilgilerinden kaçının yemek tarifleri.

Hizmetler

{ "os": { "services": [ { "name": "ssh", "enabled": true, "config": { "port": 22, "disable_password_auth": true } } ] } }

config hizmete özeldir. Sözdizimsel olarak geçerli bir anahtar yine de göz ardı edilebilir. bunu uygulamayan bir jeneratör. Oluşturulan normalleştirilmiş tarifi doğrulayın yapılandırma ve konuk davranışı.

Güvenlik ve Yükleyici

{ "os": { "security": { "hardening_level": "standard", "disk_encryption": false, "audit_logging": true, "selinux": false, "fail2ban": true }, "installer": { "enabled": false, "type": "calamares", "desktop_launcher": true, "bootloader": "grub", "delivery": [], "user_setup": "build_time" } } }

Kurulumcu türleri hedefe bağlıdır (calamares, anaconda veya elster-mobile). Bir yükleyicinin etkinleştirilmesinin ardından tek kullanımlık bir disk gelmelidir testi yükleyin; canlı masaüstündeki bir simge, kurulumun çalıştığının kanıtı değildir.

Başlangıç Komut Dosyaları

{ "os": { "startup_scripts": [ { "name": "write-build-marker", "description": "Create a local marker after networking is available.", "command": "install -m 0644 /dev/null /var/lib/example-ready", "packages": [], "run_as": "root", "after": "network.target" } ] } }

En fazla 32 başlangıç komut dosyası kabul edilir. Komutlar boş olmamalıdır ve NUL bayt içerir. run_as söylenmediği sürece bunlara root özellikli kabuk kodu olarak davranın aksi halde; yetersizlik, alıntı yapma, ağ arızası ve gizli ifşa durumlarını gözden geçirin.

Senaryolar ve İddialar

{ "scenarios": [ { "id": "primary-smoke", "name": "Primary image smoke test", "enabled": true, "tests": ["boot", "login", "packages"], "custom_tests": [ { "description": "Confirm SSH is enabled on the configured port.", "assertions": [ { "type": "service_enabled", "description": "The SSH service starts at boot.", "params": {"service": "ssh"} }, { "type": "port_listening", "description": "The guest listens on TCP port 22.", "params": {"port": 22} } ] } ] } ] }

Bir senaryo aynı zamanda VM’ler ve ağlar ile karşılaştırma formatındaki bir topology’i de tanımlayabilir. testler ve CIS ayarları. İhmal edilen bir topoloji varsayılan olarak normal tek VM’ye ayarlanır yol. İddiaların insan tarafından okunabilir bir açıklamaya ve türe özgü parametrelere ihtiyacı vardır. Bilinmeyen iddia türleri şema ayrıştırmasında hayatta kalabilir, bu nedenle koşucuyu onaylayın delil olarak ele almadan önce onları destekler.

Minimal Örneği Tamamlayın

{ "name": "debian-web-check", "display_name": "Debian Web Check", "description": "Debian image with SSH, curl, and explicit smoke tests.", "base_image": "debian-trixie", "use_case": "Server evaluation", "hardware": { "platform": "pc", "architecture": "x86_64", "min_cpu_cores": 2, "min_memory_gb": 4, "min_storage_gb": 16, "nic_count": 1 }, "os": { "features": ["ssh"], "packages": ["curl"], "users": [ { "username": "deploy", "groups": ["sudo"], "shell": "/bin/bash" } ], "services": [ { "name": "ssh", "enabled": true, "config": {"port": 22, "disable_password_auth": true} } ], "security": { "hardening_level": "standard", "audit_logging": true }, "installer": {"enabled": false} }, "scenarios": [ { "id": "primary-smoke", "name": "Primary image smoke test", "enabled": true, "tests": ["boot", "login", "packages"] } ], "publish_to": ["local"] }

Doğrulama İş Akışı

  1. JSON’u geçerli tarif düzenleyici, API veya MCP aracılığıyla doğrulayın validate_recipe aracı.
  2. İade edilen normalleştirilmiş tarifi orijinal taleple karşılaştırın.
  3. Bırakılan bilinmeyen alanları başarılı olarak değil, tarifte bir kusur olarak değerlendirin konfigürasyon.
  4. Yalnızca açık gereksinimler sunulduktan sonra oluşturun.
  5. Oluşturulan kanıtları inceleyin ve ortaya çıkan misafire karşı iddialarda bulunun.

Arıza ve indirme için İlk Derlemeniz’e bakın kurtarma rehberliği.