Ansible Builder 简介
使用 ansible-builder
,您可以配置和构建可移植、一致、自定义的 Ansible 控制节点,这些节点作为 Podman 或 Docker 的容器打包。这些容器被称为执行环境。您可以在 AWX 或 Ansible Controller 上使用它们,使用 Ansible Navigator,用于本地剧本开发和测试,在您的 CI 管道中,以及您运行自动化的任何其他地方。
您可以为您的 Ansible 内容设计和分发专门的执行环境,选择您想要的 Python 和 ansible-core 版本,并仅安装您任务所需的 Python 包、系统包和 Ansible 集合。
注意
需要帮助或想讨论 Ansible Builder 包括文档?查看 社区指南 了解如何加入对话!
容器概念和术语
Ansible Builder 依赖于更通用的容器化工具,如 Podman 或 Docker。
在您开始使用 Ansible Builder 之前,您应该了解以下与任何容器使用相关的概念和术语。
构建指令文件(在 Podman 中称为
Containerfile
,在 Docker 中称为Dockerfile
):通过安装和配置代码和依赖项来创建容器镜像的指令文件。容器:一个包含代码和依赖项的包,它可以在各种计算环境中运行服务或应用程序。
镜像:容器的完整但非活动版本 - 您可以分发镜像,并根据每个镜像创建一个或多个容器。
什么是执行环境?
有关详细信息,请参考 执行环境入门指南。
Ansible Builder 快速入门
要开始使用 Ansible Builder,您必须安装 ansible-builder
实用程序和一个容器化工具。
拥有所需的工具后,创建一个 执行环境定义 文件。默认情况下,此文件名为 execution-environment.yml
(也接受 .yaml
扩展名)。在执行环境定义文件中,您可以指定要包含在执行环境中的确切内容。您可以指定以下项目
基础容器镜像
Python 版本
ansible-core 版本
ansible-runner 版本
Ansible 集合,带有版本限制
系统包,带有版本限制
Python 包,带有版本限制
其他要下载、安装或配置的项目
选择基础镜像
您可以使用您选择的任何基础镜像。一般来说,基础镜像越小,最终镜像就越小。但是,为了使 Ansible Builder 更有效率,您应该知道您使用的基础镜像上是否安装了任何包。
例如,一些基础镜像已经安装了 Python。另一些则没有。如果您使用一个已经安装了 Python 的基础镜像,您可以在您的执行环境定义文件中省略 Python。并非所有基础镜像都安装了包管理器。
Ansible Builder 如何执行
Ansible Builder 可以执行两个独立的步骤
第一步是根据执行环境定义文件创建构建指令文件(对于 Podman 来说是
Containerfile
,对于 Docker 来说是Dockerfile
)和构建上下文。第二步是运行一个容器化工具(Podman 或 Docker)来根据构建指令文件和构建上下文构建镜像。
ansible-builder build
命令执行这两个步骤。
ansible-builder create
命令只执行第一步。有关更多详细信息,请阅读 CLI 使用文档。
Ansible Builder 如何构建镜像
Ansible Builder 在运行您的容器化工具来构建容器镜像时执行四个阶段。如果您使用 ansible-builder create
生成的构建指令文件和上下文直接使用 Podman 或 Docker 构建您的容器镜像,则会执行相同的四个阶段。这些阶段是
基础:使用 Podman 或 Docker 拉取您定义的基础镜像,然后安装 Python 版本(如果定义并不同于基础镜像上的任何 Python)、pip、ansible-runner 和 ansible-core 或 ansible。构建过程的后面三个阶段都是基于基础阶段的输出构建的。
Galaxy:从 Galaxy 下载您定义的集合,并将其作为文件保存在本地。
构建器:下载您定义的其他包(Python 包和系统包),并将其作为文件保存在本地。
最终:集成前三个阶段,将所有保存在本地的文件安装到基础阶段的输出上,并生成一个包含所有内容的新镜像。
Ansible Builder 在容器构建过程的每个阶段都注入钩子,因此您可以在每个构建阶段前后添加自定义步骤。
您可能需要在 Galaxy 和构建器阶段之前安装某些包或实用程序。例如,如果您需要从 GitHub 安装一个集合,您必须在基础阶段之后安装 git,以使其在 Galaxy 阶段可用。
要添加自定义构建步骤,请在您的执行环境定义中添加一个 additional_build_steps
部分。有关更多详细信息,请阅读 CLI 使用文档。
定义集合依赖项
当 Ansible Builder 将集合安装到执行环境中时,它也会安装每个集合的依赖项(如果指定了)。集合维护者可以从 集合级依赖项 页面了解如何为他们的集合正确声明依赖项。