CLI 使用

Ansible Builder 可以执行两个独立的步骤。第一步是根据您的 定义 文件创建一个构建指令文件(Podman 的 Containerfile,Docker 的 Dockerfile)和一个构建上下文。第二步是运行容器化工具(Podman 或 Docker)根据构建指令文件和构建上下文构建一个镜像。 ansible-builder build 命令执行这两个步骤,为您提供构建指令文件、构建上下文和一个完全构建的容器镜像。 ansible-builder create 命令只执行第一步,为您提供构建指令文件和构建上下文。如果您使用 ansible-builder create,您可以使用生成的构建指令文件和构建上下文在您选择的平台上构建您的容器镜像。

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 选项。