$ ansible-builder build
STEP 7: COMMIT my-awx-ee
--> 09c930f5f6a
09c930f5f6ac329b7ddb321b144a029dbbfcc83bdfc77103968b7f6cdfc7bea2
Complete! The build context can be found at: context
除了生成随时可用的容器镜像外,构建上下文也会保留,它可以通过您选择的工具在不同的时间和/或位置进行重建,如 docker build
或 podman build
。
14.2. 在作业中使用执行环境
要在作业中使用 execution environment,需要几个组件:
已使用 ansible-builder 创建了一个 execution environment。详情请查看 构建一个执行环境。当一个 execution environment 被创建后,您可以使用它来运行作业。使用 automation controller 用户界面指定作业模板中使用的 execution environment。
根据 execution environment 已被设置为全局使用,还是只与某个机构关联,您需要具有适当的管理员权限级别才能在作业中使用 execution environment。与机构相关联的 Execution environments 需要机构管理员权限才可以使用这些 execution environments 运行作业。
在运行使用已分配了一个凭证的 execution environment 的作业或作业模板前,请确定凭证包含用户名、主机和密码。
从控制器用户界面的左侧导航栏中点 Execution Environments。
选择 Add 按钮来添加 execution environment。
在以下字段中输入相关信息:
Name:为 execution environment 输入一个名称(必需)。
Image:输入镜像名称(必需)。镜像名称需要其完整位置(存储库)、registry、镜像名称和版本标签,其示例格式为 quay.io/ansible/awx-ee:latestrepo/project/image-name:tag
。
Pull:(可选)在运行作业时选择拉取类型:
Always pull container before running:为容器拉取最新的镜像文件。
仅在运行前不存在时才拉取镜像:如果没有指定,则只拉取最新的镜像。
Never pull container before running:永不拉取容器镜像的最新版本。
Description:可选。
Organization:可选地分配机构来特定地使用这个 execution environment。要使 execution environment 可用于多个机构,请将此字段留空。
Registry credential:如果镜像有一个受保护的容器 registry,提供访问它的凭证。
点 Save。
现在,您新添加的 execution environment 已准备好在作业模板中使用。 要将 execution environment 添加到作业模板中,在作业模板的 Execution Environment 字段中指定它,如下例所示。 有关设置作业模板的详情,请参考 Automation Controller User Guide 中的 作业模板。
将 execution environment 添加到作业模板后,您可以看到在 execution environment 的 Templates 标签页中列出的模板:
14.3. 执行环境挂载选项
重建 execution environment 是添加证书的一个的方法,但从主机继承证书提供了一种更加方便的解决方案。对于基于虚拟机的安装,控制器会在作业运行时自动将系统信任存储挂载到 execution environment 中。
另外,您可以在作业设置页面的 Paths 中自定义 |ee| 挂载选项和挂载路径,以公开给隔离的 jobs 字段,其中支持 podman 风格的卷挂载语法。详情请参阅 Podman documentation。
在某些情况下,如果因为自定义了一个 execution environment 而导致 /etc/ssh/*
文件添加到 execution environment 镜像,则可能会出现 SSH 错误。例如,公开 /etc/ssh/ssh_config.d:/etc/ssh/ssh_config.d:O
路径允许挂载容器,但所有权权限无法正确映射。
如果您遇到这个错误,或者已从旧版本控制器(如 3.8.x)升级,请执行以下步骤:
将挂载卷上的容器所有权改为 root
。
使用当前示例,在 Paths to expose to isolated jobs 字段中,使用当前示例公开路径,如下所示:
:O
选项只支持目录。强烈建议您尽可能具体,特别是在指定系统路径时。直接挂载 /etc
或 /usr
会使难以进行排除故障。
这代表 podman 运行类似以下示例的命令,其中挂载了配置,ssh
命令可以正常工作。
podman run -v /ssh_config:/etc/ssh/ssh_config.d/:O ...
要在 OpenShift 或 Kubernetes 容器中公开隔离路径为 HostPath,请假定以下配置:
使用 Expose host paths for Container Groups 切换来启用它。
当 playbook 运行时,生成的 Pod 规格将显示类似以下示例。请注意 volumeMounts
和 volumes
部分的详细信息。