Currently the provisioning manifests (scriptbox/config/*.yml) only drive in-place provisioning of a running VM (bash/PowerShell installers via generate_install_script.rb, and now a Chef data bag via generate_chef_databag.rb). There's no path from the same source of truth to an actual built image/artifact - this was deposited as a speculative idea in #27, not yet scoped as real work.
Idea: a new buildbox area (separate from configbox, per #27) that reuses the existing manifest compiler pipeline (flatten/resolve!/dedup! in resolve_order.rb) the same way generate_chef_databag.rb does, but emits build recipes instead of a data bag - Dockerfile, BuildKit, and Packer - so the same manifest that installs zsh+golang-go+dotnet-sdk-10.0 etc. into a live VM can also produce a container image or a machine image with the same package set.
Related: #27 (where this was first deposited), #17 (same "derive from the source of truth" pattern, for CM tools), #16 (tag filtering, useful for scoping a build).
Currently the provisioning manifests (
scriptbox/config/*.yml) only drive in-place provisioning of a running VM (bash/PowerShell installers viagenerate_install_script.rb, and now a Chef data bag viagenerate_chef_databag.rb). There's no path from the same source of truth to an actual built image/artifact - this was deposited as a speculative idea in #27, not yet scoped as real work.Idea: a new
buildboxarea (separate fromconfigbox, per #27) that reuses the existing manifest compiler pipeline (flatten/resolve!/dedup!inresolve_order.rb) the same waygenerate_chef_databag.rbdoes, but emits build recipes instead of a data bag - Dockerfile, BuildKit, and Packer - so the same manifest that installszsh+golang-go+dotnet-sdk-10.0etc. into a live VM can also produce a container image or a machine image with the same package set.generate_dockerfile.rbemitting aRUNper resolved step (or consolidated per-areaRUNgroups, mirroringgenerate_chef_databag.rb's ownconsolidate_apt)docker buildx build" (BuildKit is Docker's default builder already) vs. a real LLB-graph generator - likely the former unless there's a concrete reason to hand-build the LLB graphgenerate_packer_template.rb(.pkr.hclemission) usingshell/fileprovisioner blocks, reusing the bash installer output fromgenerate_install_script.rbrather than re-deriving package commands a third waycompiled_lang) - likely wants Source of truth: tag package entries for --select/--exclude filtering #16's--select/--excludefiltering so a build only includes what an image actually needsfile:/append:/apt_repository:steps need Dockerfile/Packer equivalents too (COPY/heredocRUN,RUN echo >>,RUN add-apt-repository)docker build/packer buildoutput onlyubuntu2204.yml->ubuntu:22.04?) not defined anywhere yetRelated: #27 (where this was first deposited), #17 (same "derive from the source of truth" pattern, for CM tools), #16 (tag filtering, useful for scoping a build).