Skip to Content
ReferenceRecept séma

Recept séma

Az OpenFactory receptek snake_case JSON-t használnak. A kanonikus formát kis felső szintű burkot, os objektumot az operációs rendszer beállításához és scenarios tömböt a build utáni ellenőrzéshez tartalmaz.

A validáció azt mutatja, hogy a felismert mezők elfogadható alakúak. Nem bizonyítja, hogy minden csomag létezik, minden kért viselkedés szerepel, vagy hogy a kép és a tesztek sikeresek lesznek. Az ismeretlen mezők a visszafelé kompatibilitás miatt figyelmen kívül hagyhatók; mindig ellenőrizze a termék által visszaadott normalizált receptet.

Kanonikus burkolat

{ "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"] }

Ne használjon camelCase mezőket, mint a baseImage vagy a startupScripts. A kompatibilitási validátor elfogad néhány régebbi lapos receptet, de a normalizált kimenet az OS mezőket az os alá ágyazza. Az új integrációk a kanonikus formátumot küldjék.

Felső szintű mezők

MezőTípusKötelező/alapértelmezettJelentés
namestringKötelező; 3–100 karakterStabil belső receptnév
display_namestring vagy nullOpcionális; 1–100 karakterEmbernek szóló név
descriptionstring""Tervezett eredmény és határ
base_imagestringdebian-trixieDisztribúció/build cél; használja a konzol aktuális listáját
taskstring vagy nullOpcionálisOperatív cél
executorstring vagy nullOpcionálisA feladatot végző technológia
use_casestringGeneralElsődleges használati eset
hardwareobjectAlapértelmezések lentTelepítési követelmények
osobjectÜres/alapértelmezett objektumOS csomagok, felhasználók, szolgáltatások, biztonság, asztal, installer és szkriptek
scenariosarray[]Teszt topológiák és célok
publish_tostring array["local"]Kért kimeneti célok
deliveryobject{}További deklarált kézbesítési beállítás
communitybooleanfalseKözösségi marketplace láthatóság kérése; a publikálási szabály továbbra is érvényes

Célfüggő haladó mezők léteznek forrás ISO remasterhez, Proxmox vendég payloadokhoz, policy származáshoz és kézbesítési integrációkhoz. Használja a telepített verzió szerkesztőjét vagy API szerződését a régi példa másolása helyett.

Hardware

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

A platform értéke pc, phone vagy raspberry_pi; a támogatott eszközértékek célfüggők. Az architecture értéke x86_64 vagy aarch64. A GPU értékek támogatott szállítót vagy kombinációt neveznek meg. Ezek deklarált követelmények, nem bizonyíték arra, hogy az eredmény képet megfelelő fizikai hardveren tesztelték.

OS objektum

Gyakori os mezők:

MezőTípusCél
featuresstring arrayRegisztrált funkciómodulok
packagesstring arrayKért natív csomagok
excluded_packagesstring arrayCsomagok, amelyek a funkcióbővítés után hiányozniuk kell
custom_packagesarrayForrás repók csomagolása a támogatott build útvonalon
package_overridesarrayExplicit add, remove vagy replace műveletek
extra_reposstring arrayTovábbi repók; a bizalom és kulcskezelés továbbra is felülvizsgálatot igényel
servicesarrayElnevezett szolgáltatás engedélyezés és konfiguráció
usersarrayKépen lokális fiókok és csoportok
securityobjectDeklarált hardening, titkosítás, audit, SELinux és fail2ban választások
networkingobjectInterfész és hálózati szándék
desktop_settingsobjectAsztal megjelenése és viselkedése
brandingobjectDisztribúció identitás és eszközök
runtimeobjectInit/szolgáltatás/csomagkezelő identitás
bootobjectKernel argumentumok és GRUB választások
installerobjectInstall-to-disk konfiguráció
persistenceobjectLive perzisztencia és zónapolitika
integrityobjectKért dm-verity, Secure Boot és IMA/EVM beállítások
file_attachmentsarrayKorábban feltöltött fájlok file_id alapján
startup_scriptsarrayKorlátozott systemd one-shot szkriptek
time_zonestring vagy nullKép időzóna beállítása

Az integrity vagy security mező jelenléte konfigurációs szándék. Nem bizonyíték arra, hogy a mechanizmus létrejött, futásidőben érvényesült, vagy megfelel egy compliance rendszernek. Kérjen illeszkedő build és teszt bizonyítékot.

Felhasználók

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

A felhasználó- és csoportnevek biztonságos Linux fiók karakterekre és hosszra korlátozódnak. Ha a password nincs beállítva, jelszóval zárolt fiók jön létre kulcs-only vagy telepítéskori hitelesítő adat folyamatokhoz. Kerülje a plain text hitelesítő adatokat mentett receptekben.

Szolgáltatások

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

A config szolgáltatásfüggő. Egy szintaktikailag érvényes kulcsot figyelmen kívül hagyhat egy olyan generátor, amely nem implementálja. Ellenőrizze a normalizált receptet, a generált konfigurációt és a vendég viselkedését.

Biztonság és installer

{ "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" } } }

Az installer típusok célfüggők (calamares, anaconda vagy elster-mobile). Az installer bekapcsolása után egyszer használatos lemezre telepítő teszt következzen; egy ikon a live asztalon nem bizonyítja, hogy a telepítés működik.

Startup Scripts

{ "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" } ] } }

Legfeljebb 32 startup script fogadható el. A parancsok nem lehetnek üresek, és nem tartalmazhatnak NUL bájtokat. Root jogú shell kódként kezelje őket, hacsak a run_as mást nem mond; ellenőrizze az idempotenciát, az idézőjelezést, a hálózati hibát és a titkok kitettségét.

Forgatókönyvek és assertions

{ "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} } ] } ] } ] }

A forgatókönyv definiálhat topology-t VM-ekkel és hálózatokkal, benchmark formátumú teszteket és CIS beállításokat is. A hiányzó topológia az alapértelmezett egy VM-es útvonalat jelenti. Az assertions ember által olvasható description-t és típusspecifikus paramétereket igényel. Az ismeretlen assertion típusok túlélhetik a séma feldolgozást; erősítse meg a runner támogatását, mielőtt bizonyítékként kezelné őket.

Teljes minimális példa

{ "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"] }

Validációs folyamat

  1. Validálja a JSON-t az aktuális recept szerkesztőben, API-n vagy MCP validate_recipe eszközön.
  2. Hasonlítsa össze a visszakapott normalizált receptet az eredeti kéréssel.
  3. Az eldobott ismeretlen mezőket recept hibának tekintse, ne sikeres konfigurációnak.
  4. Csak akkor buildeljen, ha az explicit követelmények szerepelnek.
  5. Vizsgálja meg a generált bizonyítékot, és futtassa az assertions-t az eredmény vendégen.

Lásd az Első build oldalt hiba és letöltés helyreállítási útmutatóért.