本节包含与设置和构建 execution environments 相关的参考信息。
定义文件是为 execution environment 构建镜像所需的 .yml 文件。execution environment 定义架构示例如下:
---
version: 1
build_arg_defaults:
EE_BASE_IMAGE: 'quay.io/ansible/ansible-runner:stable-2.10-devel'
ansible_config: 'ansible.cfg'
dependencies:
galaxy: requirements.yml
python: requirements.txt
system: bindep.txt
additional_build_steps:
prepend: |
RUN whoami
RUN cat /etc/os-release
append:
- RUN echo This is a post-install command!
- RUN ls -la /etc
构建参数的默认值可以作为字典在 default_build_args 部分中的定义文件中指定。这是使用 --build-arg CLI 标志的替代选择。
ansible-builder 使用的构建参数如下:
ANSIBLE_GALAXY_CLI_COLLECTION_OPTS 允许用户传递 –pre 标记来启用预发布集合的安装。
EE_BASE_IMAGE 指定 execution environment 的父镜像。
EE_BUILDER_IMAGE 指定用于编译类型任务的镜像。
default_build_args 内部给出的值将硬编码到 Containerfile 中,因此如果手动调用 podman build,这些值将被保留。
如果在 CLI --build-arg 标志中指定同一变量,CLI 值将具有更高的优先级。
当使用 ansible.cfg 文件将私有帐户的令牌和其他设置传递给 Automation Hub 服务器时,在此列出配置文件路径(作为字符串)将启用它作为构建初始阶段的构建参数。
galaxy 条目指向 ansible-galaxy collection install -r ... 命令的有效要求文件。
条目 requirements.yml 可以是 execution environment 定义文件夹的目录的相对路径,也可以是绝对路径。
python 条目指向 pip install -r ... 命令的有效要求文件。
条目 requirements.txt 可以是 execution environment 定义文件夹的目录的相对路径,也可以是绝对路径。
system 条目指向一个 bindep 要求文件。这由 bindep 处理,然后传递到 dnf,其他平台尚不受支持。有关 bindep 的更多信息,请参阅 OpenDev documentation。
其他命令可以在 additional_build_steps 部分中指定,可在主要构建步骤之前(prepend),或之后(append)指定。语法需要是以下之一:
一个多行字符串(例如,上面的 prepend 部分显示)
一个字典(经过 append 显示)
以下选项可与 ansible-builder build 命令一起使用:
Flag |
描述 |
Syntax |
|
自定义要应用到构建的镜像的带标签的名称 |
|
|
使用一个名称不是 |
|
|
指定在当前工作目录中创建的名为 |
|
|
要使用 Podman 或 Docker 的构建时变量,请按照与 |
|
使用自定义基础镜像(替换之前停用的 |
|
|
|
使用 Docker 构建镜像而不是 Podman 默认 |
|
|
自定义详细程度 |
|
test/data/pytz 中的示例需要 execution environment 定义中的 awx.awx 集合。查找插件 awx.awx.tower_schedule_rrule 需要 PyPI pytz 和另一个库才能正常工作。如果为 ansible-builder build 命令提供了 test/data/pytz/execution-environment.yml 文件,那么它将在镜像中安装集合,读取集合中的 requirements.txt 文件,然后将 pytz 安装到镜像中。
生成的镜像可以通过将这些变量放在专用数据目录的 env/settings 文件中来使用 ansible-runner 项目。
---
container_image: image-name
process_isolation_executable: podman # or docker
process_isolation: true
awx.awx 集合是默认 AWX execution environment 中包含的内容子集。更多详情可在 awx-ee repository 中找到。
一个 execution environment 条目的 galaxy 条目中的集合将为镜像提供它们的 Python 和系统要求。
可以通过以下方式识别集合中的要求:
meta/execution-environment.yml 文件引用 Python 和/或 bindep 要求文件
名为 requirements.txt 的文件处于集合的根级别
名为 bindep.txt 的文件处于集合的根级别
如果有任何文件位于集合的 build_ignore 中,则无法正常工作。
集合维护者可以使用 introspect 命令来验证 ansible-builder 是否可以识别他们所期望的要求,例如:
ansible-builder introspect --sanitize ~/.ansible/collections/
Python 要求文件使用 requirements-parser 库合并到一个文件中,以支持复杂的语法,如引用其他文件。
提供相同软件包名称的独立集合中的条目将合并到同一条目中,限制合并在一起。
有几个软件包名称会被 ansible-builder 特别*忽略*,这意味着如果集合列表包括了它们,它们将不会包括在组合的文件中。这些软件包包括测试软件包以及提供 Ansible 本身的软件包。完整的列表可在 ansible_builder.requirements 模块的 EXCLUDE_REQUIREMENTS 中找到。
bindep 格式提供了一种指定跨平台要求的方法。最低预期是,集合指定了 [platform:rpm] 的必要要求。
多个集合中的条目将合并到一个文件中。只有无配置文件(运行时要求)的要求才会安装到镜像中。对多个集合的尝试可以合并到合并文件中。