2.5. 定义文件内容的分类


使用 Ansible Builder 构建自动化执行环境需要定义文件,因为它指定了自动化执行环境容器镜像中包含的内容。

以下小节细分了定义文件的不同部分。

2.5.1. 构建参数和基础镜像

定义文件的 build_arg_defaults 部分是一个字典,其键可为 Ansible Builder 的参数提供默认值。下表列出了 build_arg_defaults 中可以使用的值:

Expand
Description

ANSIBLE_GALAXY_CLI_COLLECTION_OPTS

允许用户在集合安装过程中将任意参数传递给 ansible-galaxy CLI。例如,-pre 标志启用预发布集合的安装,或者 -c 禁用服务器的 SSL 证书的验证。

ANSIBLE_GALAXY_CLI_ROLE_OPTS

允许用户将任何标志(如 -no-deps)传递给角色安装。

build_arg_defaults 中指定的值将硬编码到 Containerfile 中,因此这些值将在手动调用 podman build 时保留。

注意

如果在 CLI --build-arg 标志中指定相同的变量,CLI 值将具有更高的优先级。

您可以在定义文件的 dependencies 部分包含必须安装到最终镜像的依赖项。

为了避免自动化执行环境镜像出现问题,请确保 Galaxy、Python 和系统的条目指向有效的要求文件,或者是其相应的文件类型的有效内容。

2.5.1.1. Galaxy

galaxy 条目指向有效的要求文件,或者包括 ansible-galaxy collection install -r …​ 命令的内联内容。

条目 requirements.yml 可以是来自自动化执行环境定义的文件夹目录的相对路径,也可以是绝对路径。

内容可能类似如下:

例 2.2. Galaxy 条目

collections:
  - community.aws
  - kubernetes.core
Copy to Clipboard Toggle word wrap

2.5.1.2. Python

定义文件中的 python 条目指向有效的要求文件,或者指向 pip install -r …​ 命令格式的 PEP508 格式的 Python 要求列表。

条目 requirements.txt 是一个文件,它会在集合已列出的 Python 依赖项之上安装额外的 Python 要求。它可以是对于自动化执行环境定义的文件夹目录的相对路径,也可以是绝对路径。requirements.txt 文件的内容应该类似以下示例,类似于 pip freeze 命令的标准输出:

例 2.3. Python 条目

boto>=2.49.0
botocore>=1.12.249
pytz
python-dateutil>=2.7.0
awxkit
packaging
requests>=2.4.2
xmltodict
azure-cli-core==2.11.1
openshift>=0.6.2
requests-oauthlib
openstacksdk>=0.13
ovirt-engine-sdk-python>=4.4.10
Copy to Clipboard Toggle word wrap

2.5.1.3. System

定义中的 system 条目指向 bindep 要求文件,或指向 bindep 条目的内联列表,该条目安装集合已包含为依赖项的系统级依赖项。它可以是来自自动化执行环境定义的文件夹目录的相对路径,也可以列为绝对路径。至少,集合必须为 [platform:rpm] 指定必要的要求。

要演示这一点,以下是 bindep.txt 文件示例,该文件将 libxml2subversion 软件包添加到容器中:

例 2.4. 系统条目

libxml2-devel [platform:rpm]
subversion [platform:rpm]
Copy to Clipboard Toggle word wrap

来自多个集合的条目合并到一个文件中。这通过 bindep 进行处理,然后传递到 dnf。镜像中仅会安装没有配置集或无运行时要求的要求。

2.5.2. 镜像

定义文件的 images 部分标识基础镜像。podman 容器运行时支持验证签名的容器镜像。

下表列出了您可以在 镜像 中使用的值:

Expand
valueDescription

base_image

指定自动化执行环境的父镜像,它允许基于现有镜像构建新镜像。这通常是一个受支持的执行环境基础镜像,如 ee-minimalee-supported,但它也可以是您创建的执行环境镜像,并希望进一步自定义。

容器镜像需要使用 name 键。如果镜像在存储库中镜像,则指定 签名 _original_name 密钥,但使用镜像的原始签名密钥签名。镜像名称必须包含标签,如 :latest

默认镜像为 registry.redhat.io/ansible-automation-platform-24/ee-minimal-rhel8:latest

注意

如果在 CLI --build-arg 标志中指定相同的变量,CLI 值将具有更高的优先级。

2.5.3. 其他构建文件

您可以将任何外部文件添加到构建上下文目录中,方法是将它们引用或复制到定义文件的 additional_build_files 部分。格式是字典值的列表,每个值都有一个 srcdest 键和值。

每个列表项都必须是包含以下所需键的字典:

src
指定要复制到构建上下文目录中的源文件。这可以是绝对路径(例如 /home/user/.ansible.cfg),也可以是相对于执行环境文件的路径。相对路径可以是 glob 表达式与一个或多个文件匹配(例如,fileAttr. cfg)。
注意

绝对路径不能包含正则表达式。如果 src 是目录,则该目录的整个内容都会复制到 dest

dest
指定构建上下文目录的 _build 子目录下的子目录路径,其中包含源文件(如 files/configs)。这不能是绝对路径,也可以是在 路径中包含 ..。如果不存在,Ansible Builder 会为您创建此目录。

2.5.4. 额外的自定义构建步骤

您可以在定义文件的 additional_build_steps 部分中为任何构建阶段指定自定义构建命令。这允许对构建阶段进行精细控制。

使用 prepend_append_ 命令将指令添加到在执行主构建步骤之前或之后运行的 Containerfile。命令必须符合运行时系统所需的任何规则。

下表列出了 additional_build_steps 中使用的值:

Expand
Description

prepend_base

允许您在构建基础镜像前插入命令。

append_base

允许您在构建基础镜像后插入命令。

prepend_galaxy

允许您在构建 galaxy 镜像前插入。

append_galaxy

允许您在构建 galaxy 镜像后插入。

prepend_builder

允许您在构建 Python 构建器镜像前插入命令。

append_builder

允许您在构建 Python 构建器镜像后插入命令。

prepend_final

允许您在构建最终镜像前插入。

append_final

允许您在构建最终镜像后插入。

additional_build_steps 的语法支持多行字符串和列表。请参见以下示例:

例 2.5. 一个多行的字符串条目

prepend_final: |
   RUN whoami
   RUN cat /etc/os-release
Copy to Clipboard Toggle word wrap

例 2.6. 一个列表条目

append_final:
- RUN echo This is a post-install command!
- RUN ls -la /etc
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat