ansible-builder
ansible-builder copied to clipboard
Add support for outputting OSTree-based Execution Environments
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.