Înțelegerea rețetelor
BuildRecipe este specificația normalizată pe care OpenFactory o trimite în pipeline-ul de image. Chat-ul poate ajuta la redactare, dar build-ul îl definesc rețeta, snapshot-urile surselor, fișierele generate și dovezile testelor.
Model mental
Rețeta canonică are patru straturi principale:
- Identitate și țintă: nume, descriere, base image și intenție hardware.
- Sistem de operare: funcții, pachete, servicii, utilizatori, securitate, desktop, installer, atașamente și scripturi startup sub
os. - Verificare: unul sau mai multe scenarii cu teste integrate și assertion personalizate.
- Intenție de livrare: destinații de publicare cerute și setări opționale de livrare.
{
"name": "debian-web-check",
"display_name": "Debian Web Check",
"description": "Small Debian image with explicit smoke tests.",
"base_image": "debian-trixie",
"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"],
"services": [
{
"name": "ssh",
"enabled": true,
"config": {"port": 22, "disable_password_auth": true}
}
],
"security": {
"hardening_level": "standard",
"audit_logging": true
}
},
"scenarios": [
{
"id": "primary-smoke",
"name": "Primary image smoke test",
"enabled": true,
"tests": ["boot", "login", "packages"]
}
],
"publish_to": ["local"]
}Folosiți snake_case. Integrările noi nu ar trebui să trimită forme legacy precum baseImage, features la nivel superior sau startupScripts.
Trei verificări, trei răspunsuri diferite
Validarea schemei
Validarea răspunde: „Datele recunoscute au o formă acceptabilă?” Nu dovedește că pachetele există sau că comportamentul funcționează. Unele câmpuri necunoscute sunt ignorate pentru compatibilitate, deci un succes la validare poate totuși omite o cerere importantă.
Comparați mereu rețeta normalizată returnată cu chat-ul original și cerințele. Lipsa desktop-ului, aplicației, installer-ului, atașamentului sau testului este un defect al rețetei chiar dacă validarea spune valid.
Dovada build-ului
Un build reușit răspunde: „Pipeline-ul a produs un artefact?” Nu dovedește că fiecare funcție intenționată a ajuns în image. Inspectați inventarul pachetelor, proveniența surselor, avertismentele și dovezile din faza de build.
Verificarea oaspetelui
Testele oaspete răspund la întrebări runtime înguste: dacă VM-ul a pornit, un serviciu este activ, un port ascultă, un fișier are conținutul așteptat sau o aplicație s-a lansat. O assertion trecută susține doar comportamentul pe care l-a observat efectiv.
Setările de securitate exprimă intenție
Valorile acceptate pentru hardening_level sunt minimal, standard și strict, dar aceste etichete nu sunt profile de conformitate portabile. Generatorii țintă le pot interpreta diferit. Dacă aveți nevoie de un benchmark, selectați benchmark-ul exact aplicabil și păstrați rezultatele pe control; nu deduceți conformitatea CIS din strict.
La fel, disk_encryption, audit_logging, SELinux, fail2ban, Secure Boot, dm-verity și setările installer-ului necesită teste potrivite de artefact și runtime.
Chat și proprietatea rețetei
Când validați sau editați o rețetă redactată în chat, conversația existentă rămâne parte din contextul de redactare. Validarea ar trebui să rafineze rețeta curentă, nu să o înlocuiască în tăcere cu un implicit generic. Totuși, rețeta normalizată este ultimul punct de control înainte de build.
Pentru fiecare cerință materială:
- găsiți câmpul normalizat corespunzător;
- confirmați valoarea și domeniul țintă;
- adăugați o assertion unde dovada runtime este posibilă; și
- păstrați munca doar la deploy ca avertisment explicit, nu ca și cum s-ar fi întâmplat în timpul build-ului de image.
Listă de verificare la revizuire
- Sunt corecte base image și arhitectura?
- Sunt prezente toate funcțiile desktop și aplicație cerute?
- Sursele externe sunt fixate și licențiate pentru utilizarea intenționată?
- Lipsesc secretele din câmpurile rețetei salvate și scripturi?
- Installer-ul este configurat și testat pe un disc de unică folosință dacă s-a cerut?
- Scenariile testează criteriile reale de acceptare?
- Cerințele neacceptate sau de la momentul deploy-ului sunt menționate explicit?
Consultați Schema rețetei pentru referința câmpurilor și Primul build pentru fluxul de build și descărcare.