14. 执行环境

构建和部署用于自动化的 Python 虚拟环境的功能已被 Ansible 执行环境取代。与传统的虚拟环境不同,执行环境是容器镜像,可以整合系统级依赖项和基于集合的内容。每个执行环境都允许您拥有一个自定义镜像来运行作业,并且每个镜像仅包含运行作业时所需的组件,不多不少。

14.1. 构建执行环境

执行环境入门指南 将为您提供简要的技术概述,并向您展示如何在几个简单的步骤中构建和测试您的第一个执行环境。

14.2. 在作业中使用执行环境

为了在作业中使用执行环境,需要一些组件

  • 使用 AWX 用户界面指定您构建要在作业模板中使用的执行环境。

  • 根据执行环境是供全局使用还是绑定到组织,您必须拥有相应的管理员权限才能在作业中使用执行环境。绑定到组织的执行环境要求组织管理员能够使用这些执行环境运行作业。

  • 在运行使用分配了凭据的执行环境的作业或作业模板之前,请确保凭据包含用户名、主机和密码。

  1. 单击 AWX 用户界面左侧导航栏中的**执行环境**。

  2. 通过选择**添加**按钮添加执行环境。

  3. 在以下字段中输入相应的详细信息

  • **名称**:输入执行环境的名称(必填)。

  • **镜像**:输入镜像名称(必填)。镜像名称需要其完整位置(存储库)、注册表、镜像名称和版本标签,例如 quay.io/ansible/awx-ee:latestrepo/project/image-name:tag

  • **拉取**:可选地选择运行作业时使用的拉取类型

  • **运行前始终拉取容器**:拉取容器的最新镜像文件。

  • **仅在运行前不存在时拉取镜像**:仅在未指定的情况下拉取最新镜像。

  • **运行前从不拉取容器**:从不拉取容器镜像的最新版本。

  • **描述**:可选。

  • **组织**:可选地分配组织以专门使用此执行环境。要使执行环境可供多个组织使用,请将此字段留空。

  • **注册表凭据**:如果镜像具有受保护的容器注册表,请提供访问该注册表的凭据。

Create new Execution Environment form
  1. 单击**保存**。

现在,您新添加的执行环境已准备好用于作业模板中。要将执行环境添加到作业模板,请在作业模板的**执行环境**字段中指定它,如下例所示。有关设置作业模板的更多信息,请参阅《AWX 用户指南》中的作业模板

Job template using newly created Execution Environment

将执行环境添加到作业模板后,您可以在执行环境的**模板**选项卡中查看这些模板。

Templates tab of the Execution Environment showing one job associated with it

14.3. 执行环境挂载选项

重建执行环境是添加证书的一种方法,但从主机继承证书提供了更便捷的解决方案。

此外,您可以在**公开给隔离作业的路径**字段(位于作业设置页面)中自定义执行环境挂载选项和挂载路径,该字段支持 podman 样式的卷挂载语法。有关详细信息,请参阅Podman 文档

在某些情况下,由于自定义了执行环境,/etc/ssh/* 文件已添加到执行环境镜像中,可能会发生 SSH 错误。例如,公开 /etc/ssh/ssh_config.d:/etc/ssh/ssh_config.d:O 路径允许挂载容器,但所有权权限未正确映射。

如果遇到此错误或已从旧版 AWX 升级,请执行以下步骤

  1. 将挂载卷上的容器所有权更改为 root

  2. 在作业设置页面的**公开给隔离作业的路径**字段中,使用当前示例,将路径公开如下

Jobs Settings page showing Paths to expose to isolated jobs field with defaults

注意

:O 选项仅支持目录。强烈建议您尽可能具体,尤其是在指定系统路径时。直接挂载 /etc/usr 会产生难以排查的影响。

这指示 podman 运行类似于以下示例的命令,其中配置已挂载,并且 ssh 命令按预期工作。

podman run -v /ssh_config:/etc/ssh/ssh_config.d/:O ...

要在 OpenShift 或 Kubernetes 容器中将隔离路径公开为 HostPath,请假定以下配置

Jobs Settings page showing Paths to expose to isolated jobs field with assumed configuration and Expose host paths for Container Group toggle enabled

使用**公开容器组的主机路径**切换按钮启用它。

剧本运行后,生成的 Pod 规范将显示类似于以下示例的内容。请注意 volumeMountsvolumes 部分的详细信息。

Pod spec for the playbook run showing volumeMounts and volumes details