Skip to content

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

© Red Hat