Sample custom OSBuild manifest¶
Refer to this sample OSBuild manifest as a complete example of the configuration that you perform as part of the Building applications for AutoSD workflow:
- One RPM installed in the default ASIL location.
- One RPM installed in the QM partition.
- One ASIL container.
- One QM container.
version: '2'
mpp-vars:
name: <my-manifest>
use_containers_extra_store: true
use_qm_containers_extra_store: true
use_qm: true
extra_rpms:
- podman
- podman-py
qm_extra_rpms:
- auto-apps
extra_repos:
- baseurl: https://download.copr.fedorainfracloud.org/results/rhcontainerbot/podman-next/epel-9-$arch/
id: podman_next_copr
sources:
org.osbuild.containers-storage:
items:
## Run `podman inspect $image_name` and paste the id of the container image in this section (for each image)
sha256:<your-container-image-ID>: {}
pipelines:
- mpp-import-pipelines:
path: include/build.ipp.yml
- name: qm_rootfs
build: name:build
stages:
- type: org.osbuild.copy
inputs:
tree:
type: org.osbuild.tree
origin: org.osbuild.pipeline
references:
- name:qm_rootfs_base
options:
paths:
- from: input://tree/
to: tree:///
- type: org.osbuild.skopeo
inputs:
images:
type: org.osbuild.containers-storage
origin: org.osbuild.source
references:
# container id retrieved with `podman info $image_name`
sha256:<your-container-image-ID>:
# container name and tag to be used within the autosd image
name: localhost/auto-apps:latest
options:
destination:
type: containers-storage
storage-path:
mpp-eval: containers_extra_store
- type: org.osbuild.skopeo
inputs:
images:
type: org.osbuild.containers
origin: org.osbuild.source
mpp-resolve-images:
images:
- name: localhost/my-client-app:latest
source: <your-container-registry>/my-client-app
tag: latest
- type: org.osbuild.mkdir
options:
paths:
- path: /etc/containers/systemd
exist_ok: true
- type: org.osbuild.copy
inputs:
qm_extra_files_0:
type: org.osbuild.files
origin: org.osbuild.source
mpp-embed:
id: qm_ipc_socket
path: ../files/qm_fs/auto-apps.socket
qm_extra_content_1:
type: org.osbuild.files
origin: org.osbuild.source
mpp-embed:
id: qm_auto_apps_container
path: ../files/qm_fs/auto-apps.container
qm_extra_content_2:
type: org.osbuild.files
origin: org.osbuild.source
mpp-embed:
id: my_client_app_container
path: ../files/qm_fs/my-client-app.container
options:
paths:
- from:
mpp-format-string: input://qm_extra_files_0/{embedded['qm_ipc_socket']}
to: tree:///etc/systemd/system/auto-apps.socket
- from:
mpp-format-string: input://qm_extra_content_1/{embedded['qm_auto_apps_container']}
to: tree:///etc/containers/systemd/auto-apps.container
- from:
mpp-format-string: input://qm_extra_content_2/{embedded['my_client_app_container']}
to: tree:///etc/containers/systemd/my-client-app.container
- type: org.osbuild.systemd
options:
enabled_services:
- auto-apps.socket
- name: rootfs
build: name:build
stages:
- type: org.osbuild.rpm
options:
gpgkeys:
- mpp-eval: distro_gpg_keys
disable_dracut: true
exclude:
docs: true
inputs:
packages:
type: org.osbuild.files
origin: org.osbuild.source
mpp-depsolve:
architecture: $arch
ignore-weak-deps: true
module-platform-id: $distro_module_id
baseurl: $distro_baseurl_repo
repos:
mpp-join:
- mpp-eval: image_repos
- mpp-eval: extra_repos
- - id: auto-apps
baseurl: file:///var/tmp/my_repo
packages:
mpp-join:
- mpp-eval: image_rpms
- mpp-eval: extra_rpms
- - auto-apps
excludes:
- dracut-config-rescue
- type: org.osbuild.skopeo
inputs:
images:
type: org.osbuild.containers-storage
origin: org.osbuild.source
references:
# container id retrieved with `podman info $image_name`
sha256:<your-container-image-ID>:
# container name and tag to be used within the autosd image
name: localhost/auto-apps:latest
options:
destination:
type: containers-storage
storage-path:
mpp-eval: containers_extra_store
- type: org.osbuild.mkdir
options:
paths:
- path: /etc/containers/systemd/qm.container.d
exist_ok: true
parents: true
- type: org.osbuild.copy
inputs:
inlinefile1:
type: org.osbuild.files
origin: org.osbuild.source
mpp-embed:
id: radio.container
path: ../files/radio.container
inlinefile2:
type: org.osbuild.files
origin: org.osbuild.source
mpp-embed:
id: engine.container
path: ../files/engine.container
inlinefile3:
type: org.osbuild.files
origin: org.osbuild.source
mpp-embed:
id: radio_socket
path: ../files/root_fs/radio.socket
inlinefile4:
type: org.osbuild.files
origin: org.osbuild.source
mpp-embed:
id: qm_extra_volume
path: ../files/root_fs/qm.container.d/10-extra-volume.conf
inlinefile5:
type: org.osbuild.files
origin: org.osbuild.source
mpp-embed:
id: engine_socket
path: ../files/root_fs/engine.socket
options:
paths:
- from:
mpp-format-string: input://inlinefile1/{embedded['radio.container']}
to: tree:///etc/containers/systemd/radio.container
- from:
mpp-format-string: input://inlinefile2/{embedded['engine.container']}
to: tree:///etc/containers/systemd/engine.container
- from:
mpp-format-string: input://inlinefile3/{embedded['radio_socket']}
to: tree:///etc/systemd/system/radio.socket
- from:
mpp-format-string: input://inlinefile4/{embedded['qm_extra_volume']}
to: tree:///etc/containers/systemd/qm.container.d/10-extra-volume.conf
- from:
mpp-format-string: input://inlinefile5/{embedded['engine_socket']}
to: tree:///etc/systemd/system/engine.socket
- type: org.osbuild.systemd
options:
enabled_services:
- radio.socket
- type: org.osbuild.users
options:
users:
guest:
password:
mpp-eval: guest_password
gid:
mpp-eval: guest_gid
uid:
mpp-eval: guest_uid
- mpp-import-pipelines:
path: include/image.ipp.yml