ansible-builder icon indicating copy to clipboard operation
ansible-builder copied to clipboard

Add support for outputting OSTree-based Execution Environments

Open shanemcd opened this issue 3 years ago • 0 comments

Context

While https://github.com/ansible/ansible-builder/issues/268 exists for the purposes of operating within the confines of existing processes and systems, Ansible Builder should ideally produce artifacts that are ready to run / deploy.

While container-based Execution Environments work for the vast majority of use cases, there are scenarios where they will not be suitable. (See: RHEL for Edge)

Proposal

We should investigate the possibility of generating OSTree-based Execution Environments. OSTree is the the technology at the heart of Red Hat CoreOS (and formerly Project Atomic). Think of it as git for filesystems.

Building a custom OSTree based image is essentially what RHEL for Edge is.

The tools provided for producing these images live under the umbrella name of OSBuild. OSBuild is comprised of:

  • https://github.com/osbuild/osbuild (the core engine)
  • https://github.com/osbuild/osbuild-composer (the user-facing cli)
  • https://github.com/osbuild/cockpit-composer (a UI for cockpit)

We've had a brief conversation with the OSBuild team about both a short-term solution and potentially a deeper integration long-term.

The short-term solution would be adding support to OSBuild to build on top of a custom OSTree commit. This can be thought of as a "base image" in some ways.

The long-term solution might be the ability to upload an execution-environment.yml to OSBuild / Image Builder and have it produce an OSTree-based Execution Environment.

Potentially Helpful links
  • The official docs for Image Builder: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/composing_a_customized_rhel_system_image/index
  • https://www.osbuild.org/news/2020-06-01-how-to-ostree-anaconda.html
  • Upstream docs: https://www.osbuild.org/guides/user-guide/user-guide.html
  • The tool at the heart of Image Builder: https://coreos.github.io/rpm-ostree/
  • A good example of bare-minimum configuration needed for rpm-ostree: https://pagure.io/copperblue/tree/master (I forked and updated for latest Fedora here

I realize that some of this is very hand-wavy and forward-looking. We can further expand upon this idea as things move forward, but I wanted to go ahead and create this issue as a place for us to begin a discussion.

shanemcd avatar Aug 11 '21 23:08 shanemcd