No description
Find a file
Michael Vogt 4b8bff8404 cmd: rework argument handling
This commit tweaks the argument handling based on the suggestion
by Achilleas and Ondrej (thanks!). Now it takes
```console
$ image-builder manifest qcow2 ./path/to/blueprint
...
$ image-builder manifest --arch s390x --distro centos-9 qcow2
...
```
If no arch is specified the hostname arch is used. If no distro
is specified in either the blueprint or the commandline it is
auto-detected based on the host.

Note that if the distro from the comandline and the blueprint
diverge an error is raised. We can relax this rule and just
add precedence, e.g. commandline always overrides the blueprint
but ideally we would have a clear use-case here so we start
conservative and can always relax this rule later (the inverse
is much harder).

This means it is no longer copy/paste friendly from `list-images`
by default but instead we can provide a new
`list-images --output=shell` option that outputs in exactly the
format that `image-builder [manifest|build]` need.
2024-12-16 07:54:45 +00:00
.github/workflows HACKING.md: add basic documentation for the development 2024-12-16 07:54:45 +00:00
cmd/image-builder cmd: rework argument handling 2024-12-16 07:54:45 +00:00
internal internal: add new blueprintload package 2024-12-16 07:54:45 +00:00
go.mod pkg: add new manifestgen package 2024-12-16 07:54:45 +00:00
go.sum go.mod: upgrade golang.org/x/crypto 2024-12-12 18:48:50 +00:00
HACKING.md HACKING.md: add basic documentation for the development 2024-12-16 07:54:45 +00:00
README.md README: document install, prerequists and list-images 2024-11-29 10:52:28 +00:00

image-builder CLI

Build images from the commandline in a convenient way.

Installation

This project is under development right now and needs to be run via:

$ go run github.com/osbuild/image-builder-cli/cmd/image-builder@main

or install it into $GOPATH/bin

$ go install github.com/osbuild/image-builder-cli/cmd/image-builder@main

we plan to provide rpm packages as well.

Prerequisites

Make sure to have the required osbuild rpms installed:

$ sudo dnf install osbuild osbuild-depsolve-dnf osbuild-composer

(osbuild-composer is only needed to get the repository definitions and this dependency will go away soon).

Example

To see the list of buildable images run:

$ image-builder list-images
...
centos-9 type:qcow2 arch:x86_64
...
rhel-10.0 type:ami arch:x86_64
...

It is possible to filter:

$ image-builder list-images --filter ami
...
centos-9 type:ami arch:x86_64
...
rhel-8.5 type:ami arch:aarch64
...
rhel-10.0 type:ami arch:aarch64

or be more specific

$ image-builder list-images --filter "arch:x86*" --filter "distro:*centos*"
centos-9 type:ami arch:x86_64
...
centos-9 type:qcow2 arch:x86_64
...

The following filters are currently supported, shell-style globbing is supported:

  • distro: the distro name (e.g. fedora-41)
  • arch: the architecture name (e.g. x86_64)
  • type: the image type name (e.g. qcow2)
  • bootmode: the bootmode (legacy, uefi, hybrid)

The output can also be switched, supported are "text", "json":

$ image-builder list-images --output=json
[
  {
    "distro": {
      "name": "centos-9"
    },
    "arch": {
      "name": "aarch64"
    },
    "image_type": {
      "name": "ami"
    }
  },
...
  {
    "distro": {
      "name": "rhel-10.0"
    },
    "arch": {
      "name": "x86_64"
    },
    "image_type": {
      "name": "wsl"
    }
  }
]

FAQ

Q: Does this require a backend. A: The osbuild binary is used to actually build the images but beyond that no setup is required, i.e. no daemons like osbuild-composer.