# Image Builder Builds Fedora/RHEL/Centos images like Packer but for Red Hat. Default credentials for included images is: username: `ducoterra` password: `osbuild` ## Warning From the [Red Hat Documentation](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html-single/composing_installing_and_managing_rhel_for_edge_images/index): > You cannot build an operating system image that differs from the RHEL image > builder host. For example, you cannot use a RHEL system to build Fedora or > CentOS images. ## Installing ```bash # Install the packages dnf install -y osbuild-composer composer-cli # Start/enable the service systemctl enable --now osbuild-composer.socket # Optional: add your user to the weldr group sudo usermod -aG weldr $USER # Optional: cockpit dependency dnf install -y cockpit-composer # Optional: allow security profiles dnf install openscap-scanner scap-security-guide ``` ## Building Images 1. Create a toml file describing your image See `fedora42-base.toml` for an example. 2. Push the toml to composer ```bash composer-cli blueprints push active/software_osbuild/fedora42-base.toml # List blueprints composer-cli blueprints list ``` 3. Generate the image ```bash # List image types composer-cli compose types # Build the image composer-cli compose start fedora42-base qcow2 # Check status watch composer-cli compose status # Download logs if error cd /tmp && composer-cli compose logs 52963ac9-b680-4def-baaf-252845f0e3fe # Delete failed images composer-cli compose list failed -j | jq '.[].body.failed.[]?.id' | xargs -I '%' composer-cli compose delete '%' # Delete successful images composer-cli compose list finished -j | jq '.[].body.finished.[]?.id' | xargs -I '%' composer-cli compose delete '%' ``` 4. Run the image ```bash # List your images composer-cli compose list finished # Download the image composer-cli compose image --filename active/software_osbuild/secrets/fedora43-base.qcow2 image-uuid # Test with qemu virt-install \ --name "fedora43-base" \ --boot uefi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no \ --cpu host-passthrough --vcpus sockets=1,cores=8,threads=2 \ --ram=8192 \ --os-variant=fedora41 \ --network bridge:virbr0 \ --graphics none \ --console pty,target.type=virtio \ --import --disk "path=active/software_osbuild/secrets/fedora43-base.qcow2,bus=virtio" ``` ### Image Build and Watch One Liner ```bash composer-cli blueprints push active/software_osbuild/fedora43-base.toml && \ composer-cli compose start fedora43-base qcow2 && \ watch composer-cli compose status ```