3.0.0
What's Changed
A major evolution of Ansible Builder's Execution Environment definition format, with overall themes of increased flexibility and minimizing required manual alterations of generated build contexts. New features of the version 3 Execution Environment definition include:
- Use of vanilla RHEL-ish container images instead of specially-crafted base and builder images (tested against Fedora, CentOS Stream 8/9, UBI9 and others).
- Injection of custom build steps before and after every build stage.
- Copying arbitrary files from the builder host into the generated container build context (which can then be copied into intermediate/final container images as needed with custom build steps).
- Declarative bootstrapping of Python, Ansible Core, and Ansible Runner (in addition to roles/collections, of course).
- Inline definition of Python/bindep/role/collection requirements in Execution Environment YAML (external files also still supported).
- Customization of final container initialization ENTRYPOINT, USER, and CMD (with verified automatic defaults).
- Dynamic builder image from user-specified base image- specifying a builder image is no longer required (or allowed).
- Faster builds due to linear stage inheritance and removal of forced OS package upgrades.
- Numerous bugfixes and minor enhancements... see documentation for examples.
Breaking Changes
-
The
--squash
argument tobuild
now defaults tooff
for all container runtimes. This allows build caches to function by default forpodman
during development and testing, at the cost of more intermediate layers in the resultant image. Manually specifying--squash new
is suggested for CI and production builds when usingpodman
to minimize the size and number of intermediate layers. -
Forced OS package manager upgrades are no longer performed in individual build stages by default. If a full OS package upgrade is desired, add a new build directive to
prepend_base
underadditional_build_steps
(e.g.,- RUN dnf upgrade -y
) to upgrade packages on the base image. The upgraded packages will be reflected in all subsequent build stages.