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 builddocker 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-runtimepodman 时才有效。有效值为以下之一

  • 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 buildpodman 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 选项以获取替代方案。