Skip to Content
Getting StartedRecepten begrijpen

Recepten begrijpen

Een BuildRecipe is de genormaliseerde specificatie die OpenFactory naar de image-pipeline stuurt. Chat kan helpen bij het opstellen, maar het recept, source snapshots, gegenereerde bestanden en testbewijs bepalen wat een build is.

Het mentale model

Het canonieke recept heeft vier hoofdlagen:

  1. Identiteit en doel: naam, beschrijving, base image en hardware-intentie.
  2. Besturingssysteem: features, pakketten, services, gebruikers, beveiliging, desktop, installer, attachments en startup scripts onder os.
  3. Verificatie: een of meer scenario’s met ingebouwde tests en custom assertions.
  4. Leveringsintentie: gevraagde publicatiedoelen en optionele leveringsinstellingen.
{ "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"] }

Gebruik snake_case. Nieuwe integraties mogen geen legacy-vormen sturen zoals baseImage, top-level features of startupScripts.

Drie controles, drie verschillende antwoorden

Schemavalidatie

Validatie beantwoordt: „Hebben de herkende gegevens een aanvaardbare vorm?” Het bewijst niet dat pakketten bestaan of dat gedrag werkt. Sommige onbekende velden worden uit compatibiliteit genegeerd, dus een geslaagde validatie kan nog steeds een belangrijk verzoek missen.

Vergelijk altijd het teruggegeven genormaliseerde recept met de oorspronkelijke chat en vereisten. Een ontbrekende desktop, applicatie, installer, attachment of test is een receptdefect, ook al zegt validatie valid.

Buildbewijs

Een geslaagde build beantwoordt: „Heeft de pipeline een artefact geproduceerd?” Het bewijst niet dat elke bedoelde feature in de image terechtkwam. Bekijk het pakketoverzicht, source provenance, waarschuwingen en build-stage bewijs.

Gastverificatie

Gasttests beantwoorden smalle runtime-vragen: of de VM opstartte, een service actief is, een poort luistert, een bestand de verwachte inhoud heeft of een applicatie startte. Een geslaagde assertion ondersteunt alleen het gedrag dat daadwerkelijk is waargenomen.

Beveiligingsinstellingen zijn intentie

De geaccepteerde hardening_level-waarden zijn minimal, standard en strict, maar die labels zijn geen draagbare complianceprofielen. Targetgenerators kunnen ze anders interpreteren. Als je een benchmark nodig hebt, kies de exact toepasselijke benchmark en bewaar resultaten per control; leid geen CIS-conformiteit af uit strict.

Op dezelfde manier vereisen disk_encryption, audit_logging, SELinux, fail2ban, Secure Boot, dm-verity en installer-instellingen passende artefact- en runtime-tests.

Chat en eigenaarschap van het recept

Als je een via chat opgesteld recept valideert of bewerkt, blijft het bestaande gesprek onderdeel van de authoringcontext. Validatie moet het huidige recept verfijnen, niet stilletjes vervangen door een generieke standaard. Toch is het genormaliseerde recept het laatste controlepunt vóór de build.

Voor elke wezenlijke vereiste:

  • zoek het bijbehorende genormaliseerde veld;
  • bevestig waarde en doelbereik;
  • voeg een assertion toe waar runtimebewijs mogelijk is; en
  • leg deployment-only werk vast als expliciete waarschuwing in plaats van te doen alsof het tijdens de image-build gebeurde.

Reviewchecklist

  • Kloppen base image en architectuur?
  • Zijn alle gevraagde desktop- en applicatiefeatures aanwezig?
  • Zijn externe bronnen vastgepind en gelicenseerd voor het beoogde gebruik?
  • Ontbreken secrets in opgeslagen receptvelden en scripts?
  • Is de installer geconfigureerd en getest op een wegwerpschijf als dat is gevraagd?
  • Testen scenario’s de echte acceptatiecriteria?
  • Zijn niet-ondersteunde of deployment-time vereisten benoemd?

Zie Receptschema voor de veldreferentie en Je eerste build voor de build- en downloadworkflow.