CLI 使用
Ansible Builder 可以执行两个独立的步骤。第一步是根据您的定义文件创建构建指令文件(Podman 的 Containerfile,Docker 的 Dockerfile)和构建上下文。第二步是运行容器化工具(Podman 或 Docker)以基于构建指令文件和构建上下文构建镜像。 ansible-builder build
命令执行这两个步骤,为您提供构建指令文件、构建上下文和完全构建的容器镜像。 ansible-builder create
命令仅执行第一步,为您提供构建指令文件和构建上下文。如果您使用 ansible-builder create
,则可以使用生成的构建指令文件和构建上下文在您选择的平台上构建容器镜像。
The build
命令
ansible-builder build
命令
以执行环境定义文件作为输入,
输出构建指令文件(Podman 的 Containerfile,Docker 的 Dockerfile),
创建构建执行环境镜像所需的构建上下文,
构建镜像。
默认情况下,它会在当前目录中查找名为 execution-environment.yml
(或 execution-environment.yaml
)的文件。
要使用默认定义文件构建执行环境,请运行
$ ansible-builder build
Running command:
podman build -f context/Containerfile -t ansible-execution-env:latest context
Complete! The build context can be found at: /path/to/context
Ansible Builder 生成一个可立即使用的容器镜像并保留构建上下文,您可以使用它在不同的时间和/或位置使用您选择的工具重新构建镜像。
build
命令的标志
--tag
自定义应用于构建镜像的标记名称。要创建具有自定义名称的镜像
$ ansible-builder build --tag=my-custom-ee
较新版本的 ansible-builder
支持多个标记
$ ansible-builder build --tag=tag1 --tag=tag2
--file
指定执行环境文件。要使用除默认文件之外的文件
$ ansible-builder build --file=my-ee-def.yml
--galaxy-keyring
指定 ansible-galaxy
用于在安装期间验证集合签名的密钥环。要验证集合签名
$ ansible-builder create --galaxy-keyring=/path/to/pubring.kbx
$ ansible-builder build --galaxy-keyring=/path/to/pubring.kbx
如果您不传递此选项,则不会执行签名验证。如果您传递此选项,但 Ansible 版本过旧而无法支持此功能,则在镜像构建过程中会看到错误。
--galaxy-ignore-signature-status-code
忽略验证集合时可能发生的某些错误。此选项会原样传递给 ansible-galaxy
调用。仅当也设置了 --galaxy-keyring
时才有效。有关更多信息,请参阅 ansible-galaxy
文档。
$ ansible-builder create --galaxy-keyring=/path/to/pubring.kbx --galaxy-ignore-signature-status-code 500
$ ansible-builder build --galaxy-keyring=/path/to/pubring.kbx --galaxy-ignore-signature-status-code 500
--galaxy-required-valid-signature-count
覆盖所需有效集合签名的数量。此选项会原样传递给 ansible-galaxy
调用。仅当也设置了 --galaxy-keyring
时才有效。有关更多信息,请参阅 ansible-galaxy
文档。
$ ansible-builder create --galaxy-keyring=/path/to/pubring.kbx --galaxy-required-valid-signature-count 3
$ ansible-builder build --galaxy-keyring=/path/to/pubring.kbx --galaxy-required-valid-signature-count 3
--context
指定 Ansible Builder 创建的构建上下文目录名称。默认目录名称为当前工作目录中的 context
。要指定其他位置
$ ansible-builder build --context=/path/to/dir
--build-arg
将构建时参数传递给 Podman 或 Docker。以与使用 podman build
或 docker build
相同的方式指定这些标志或变量。
默认情况下,Ansible Builder 创建的 Containerfile/Dockerfile 包含一个构建参数 EE_BASE_IMAGE
,这对于在不修改任何文件的情况下重新构建执行环境很有用。
$ ansible-builder build --build-arg FOO=bar
要使用不同的构建参数,可以多次指定 --build-arg
$ ansible-builder build --build-arg FOO=bar --build-arg SIMPLE=sample
要使用自定义基本镜像
$ ansible-builder build --build-arg EE_BASE_IMAGE=registry.example.com/another-ee
--container-runtime
指定用于构建镜像的容器化工具。默认为 Podman。要使用 Docker
$ ansible-builder build --container-runtime=docker
--container-policy
注意
在版本 1.2 中添加
指定要使用的容器镜像验证策略。仅当 --container-runtime 为 podman
时才有效。有效值为以下之一
ignore_all
:使用忽略所有签名的生成策略运行 podman。system
:依赖 podman 使用系统策略/签名以及内联密钥环路径。无法进行任何特定于构建器的覆盖。signature_required
:使用--pull-always
和一个生成的策略运行 podman默认情况下拒绝所有内容,并为引用的容器镜像生成身份要求,使用显式提供的密钥环(使用 --container-keyring CLI 选项指定)。
--container-keyring
注意
在版本 1.2 中添加
指定用于验证容器镜像签名的 GPG 密钥环文件的路径。
--extra-build-cli-args
注意
在版本 3.1 中添加
此选项允许用户将任何其他命令行参数传递给容器引擎构建命令(docker build
或 podman build
)。使用此选项时要小心,因为不会尝试识别或解决来自此选项的冲突参数值以及 ansible-builder
通常添加的参数。
$ ansible-builder build --extra-build-cli-args='--pull --env=MY_ENV_VAR'
--verbosity
自定义详细程度
$ ansible-builder build --verbosity 2
您也可以使用 -v
作为简写版本。您可以为详细程度指定一个整数,或者提供多个选项。 -v
的各个实例将累加。例如,以下等效于将详细程度设置为 3
$ ansible-builder build -v 3
$ ansible-builder build -vvv
$ ansible-builder build -v -v -v
--prune-images
删除构建过程后创建的未使用镜像
$ ansible-builder build --prune-images
注意
此标志删除给定机器上的所有悬空镜像,无论它们是已经存在还是由 ansible-builder
构建过程创建的。
--squash
控制最终镜像层的压缩。有效值为
new
:将最终镜像的所有新层压缩到单个新层中(不会压缩预先存在的层)。all
:压缩最终镜像的所有层,包括从基本镜像继承的层,到单个新层中。off
:关闭层压缩。这是默认设置。
注意
此标志仅与podman
运行时兼容,对于任何其他运行时都将被忽略。Docker 不支持层压缩;它被认为是一个实验性功能。
create
命令
ansible-builder create
命令接受执行环境定义作为输入,并输出构建执行环境镜像所需的构建上下文。但是,create
命令 *不会* 构建执行环境镜像;这对于仅创建构建上下文和一个可以共享的 Containerfile
很有用。
示例
test/data/pytz
中的示例需要执行环境定义中的 awx.awx
集合。查找插件 awx.awx.schedule_rrule
需要 PyPI pytz
和另一个库才能工作。如果将 test/data/pytz/execution-environment.yml
文件提供给 ansible-builder build
命令,则它将在镜像内部安装该集合,读取集合内部的 requirements.txt
,然后将 pytz
安装到镜像中。
生成的镜像可以通过将这些变量放置在私有数据目录内的 env/settings
文件中,在 ansible-runner
项目内部使用。
---
container_image: image-name
process_isolation_executable: podman # or docker
process_isolation: true
awx.awx
集合是默认 AWX 执行环境中包含的内容的子集。更多详细信息可以在 awx-ee 存储库中找到。
已弃用的功能
已删除 --base-image
CLI 选项。请参阅 --build-arg
选项以获取替代方案。