No description
Find a file
2019-04-09 18:16:57 +02:00
stages Add io.weldr.ansible 2019-04-09 16:57:25 +02:00
osbuild Add --from and --save options 2019-04-09 12:16:55 +02:00
README.md Add README.md 2019-04-09 18:16:57 +02:00

osbuild

A build system for operating system images, working towards an image build pipeline that's more comprehensible, reproducible, and extendable.

Pipelines

The build process for an image is described by a pipeline. Each stage in a pipeline is a program that, given some configuration, modifies a file system tree. Pipelines are defined as JSON files like this one:

{
  "name": "Example Image",
  "pipeline": [
    {
      "name": "io.weldr.dnf",
      "options": {
        "packages": [ "@core", "httpd" ]
      }
    },
    {
      "name": "io.weldr.systemd",
      "options": {
        "enabled_services": [ "httpd" ]
      }
    },
    {
      "name": "io.weldr.qcow2",
      "options": {
        "target": "output.qcow2"
      }
    }
  ]
}

osbuild runs each of stages in turn, somewhat isolating them into mount and pid namespaces. It injects the options object with a tree key pointing to the file system tree and passes that to the stage via its stdin. Stages may have side effects: the io.weldr.qcow2 stage in the above example packs the tree into a qcow2 image.