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
| Alan | Tür | Gerekli/varsayılan | Anlamı |
|---|---|---|---|
name | dize | Gerekli; 3–100 karakter | Kararlı dahili tarif adı |
display_name | dize veya null | İsteğe bağlı; 1–100 karakter | İnsana bakan isim |
description | dize | "" | Amaçlanan sonuç ve sınır |
base_image | dize | debian-trixie | Dağıtım/derleme hedefi; geçerli konsol listesini kullan |
task | dize veya null | İsteğe bağlı | Operasyonel hedef |
executor | dize veya null | İsteğe bağlı | Teknolojinin görevi gerçekleştirmesi bekleniyor |
use_case | dize | General | Birincil kullanım durumu |
hardware | nesne | Aşağıda gösterilen varsayılanlar | Dağıtım gereksinimleri |
os | nesne | Boş/varsayılan nesne | İşletim sistemi paketleri, kullanıcılar, hizmetler, güvenlik, masaüstü, yükleyici ve komut dosyaları |
scenarios | dizi | [] | Topolojileri ve hedefleri test edin |
publish_to | dize dizisi | ["local"] | İstenen çıktı hedefleri |
delivery | nesne | {} | Bildirilen ek teslimat yapılandırması |
community | boole | false | Topluluk 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:
| Alan | Tür | Amaç |
|---|---|---|
features | dize dizisi | Kayıtlı özellik modülleri |
packages | dize dizisi | Talep edilecek yerel paketler |
excluded_packages | dize dizisi | Özellik genişletildikten sonra mevcut olmaması gereken paketler |
custom_packages | dizi | Desteklenen derleme yolu aracılığıyla paketlenecek kaynak depoları |
package_overrides | dizi | Açık ekleme, kaldırma veya değiştirme işlemleri |
extra_repos | dize dizisi | Ek depolar; güven ve anahtar yönetimi hâlâ incelenmeyi gerektiriyor |
services | dizi | Adlandırılmış hizmet etkinleştirme ve yapılandırması |
users | dizi | Resim-yerel hesaplar ve gruplar |
security | nesne | Bildirilen sağlamlaştırma, şifreleme, denetim, SELinux ve fail2ban seçenekleri |
networking | nesne | Arayüz ve ağ amacı |
desktop_settings | nesne | Masaüstü görünümü ve davranışı |
branding | nesne | Dağıtım kimliği ve varlıkları |
runtime | nesne | Başlatma/hizmet/paket yöneticisi kimliği |
boot | nesne | Çekirdek bağımsız değişkenleri ve GRUB seçenekleri |
installer | nesne | Diske yükleme yapılandırması |
persistence | nesne | Canlı kalıcılık ve bölge politikası |
integrity | nesne | İstenen dm-verity, Güvenli Önyükleme ve IMA/EVM ayarları |
file_attachments | dizi | Daha önce yüklenen dosyalar file_id |
startup_scripts | dizi | Sınırlı sistem ve tek seferlik komut dosyaları |
time_zone | dize veya null | Resim 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ışı
- JSON’u geçerli tarif düzenleyici, API veya MCP aracılığıyla doğrulayın
validate_recipearacı. - İade edilen normalleştirilmiş tarifi orijinal taleple karşılaştırın.
- Bırakılan bilinmeyen alanları başarılı olarak değil, tarifte bir kusur olarak değerlendirin konfigürasyon.
- Yalnızca açık gereksinimler sunulduktan sonra oluşturun.
- 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.