We are going to build an EE that represents an Ansible control node containing standard packages such as ansible-core and Python in addition to an Ansible collection (community.postgresql) and its dependency (the psycopg2-binary Python connector).
To build your first EE:
Create a project folder on your filesystem.
mkdir my_first_ee && cd my_first_ee
Create a execution-environment.yml file that specifies dependencies to include in the image.
version: 3
images:
base_image:
name: registry.fedoraproject.org/fedora:42
dependencies:
python_interpreter:
package_system: python3
ansible_core:
package_pip: ansible-core
ansible_runner:
package_pip: ansible-runner
system:
- openssh-clients
- sshpass
galaxy:
collections:
- name: community.postgresql
Note
The psycopg2-binary Python package is included in the requirements.txt file for the collection. For collections that do not include requirements.txt files, you need to specify Python dependencies explicitly. See the Ansible Builder documentation for details.
Build a EE container image called postgresql_ee.
If you use docker, add the --container-runtime docker argument.
ansible-builder build --tag postgresql_ee
List container images to verify that you built it successfully.
podman image list localhost/postgresql_ee latest 2e866777269b 6 minutes ago 1.11 GB
You can verify the image you created by inspecting the Containerfile or Dockerfile in the context directory to view its configuration.
less context/Containerfile
You can also use Ansible Navigator to view detailed information about the image.
Run the ansible-navigator command, type :images in the TUI, and then choose postgresql_ee.
Proceed to Running your EE and test the EE you just built.
See also
This guide in the Ansible community forum explains how to set up a local registry for your Execution Environment images.
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/getting_started_ee/build_execution_environment.html