5.3. Playbook 运行任务
执行 playbook 时,结果会显示在 Output 选项卡中。如果使用,Ansible CLI 会显示相同的信息。这对调试非常有用。
事件摘要显示作为此 playbook 一部分运行的以下事件:
- 此 playbook 运行的次数显示在 Plays 字段中
- 与此 playbook 关联的任务数量显示在 Tasks 字段中
- 与此 playbook 关联的主机数量显示在 Hosts 字段中
- 完成 playbook 运行所需的时间显示在 Elapsed 字段中
您可以
, ,下载 作业输出,或删除 作业。将鼠标悬停在 Output 视图中的主机状态栏的部分上,并且显示与该状态关联的主机数量。
在 Job Templates 页的 Jobs 选项卡中启动作业后,也提供了 playbook 作业的输出。单击输出中的行项目任务,以查看其主机详细信息。
5.3.1. 搜索
使用 Search 查找特定的事件、主机名及其状态。要只过滤具有特定状态的某些主机,请指定以下有效状态之一:
- ok
- 表示任务成功完成,但没有在主机上执行任何更改。
- changed
- playbook 任务已执行。由于 Ansible 任务应该具有幂等性,因此任务可以成功退出,而不必在主机上执行任何内容。在这些情况下,该任务返回 ok,但未 更改。
- 失败
- 任务失败。此主机停止了进一步的 playbook 执行。
- unreachable
- 主机无法从网络访问,或者具有与它关联的另一个不可恢复的错误。
- 跳过
- playbook 任务跳过,因为主机不需要更改即可达到目标状态。
- rescued
- 这将显示失败的任务,然后执行 rescue 部分。
- 忽略
-
这将显示失败的任务,
并且配置了 ignore_errors: yes
。
以下示例显示一个只包含无法访问主机的搜索:
有关使用搜索的更多信息,请参阅 搜索 部分。
标准输出视图显示特定作业上发生的事件。默认情况下,所有行都会被扩展,以便显示详情。使用折叠功能( )图标切换到仅包含 play 和任务的标头的视图。点击加号( )图标查看标准输出的所有行。
您可以通过单击特定 play 或任务旁的箭头图标来显示特定 play 或任务的所有详情。点侧边的箭头到下键,以展开与该 play 或任务关联的行。点箭头回到侧边位置,以折叠和隐藏行。
在展开或折叠模式中查看详情时,请注意以下几点:
- 每个没有折叠的显示行都有对应的行号和开始时间。
- 在 play 或任务完成后,展开或折叠图标位于任何 play 或任务开始时。
- 如果查询特定的 play 或任务,它会在其完成进程结束时出现折叠状态。
- 在某些情况下会出现错误消息,表示输出可能太大而无法显示。当存在超过 4000 事件时会出现这种情况。使用搜索和过滤特定事件来绕过错误。
单击 Stdout 窗格中的事件行,并在单独的窗口中显示 Host Events 窗口。此窗口显示受该特定事件影响的主机。
升级到最新版本的 Ansible Automation Platform 涉及逐渐迁移所有历史 playbook 输出和事件。这个迁移过程是逐步的,在安装完成后自动在后台进行。在迁移完成前,带有大量历史作业输出(几十或几百 GB 的输出)的安装可能会缺少作业输出。最新的数据显示在输出的顶部,后跟旧的事件。
5.3.2. Playbook 运行详情
访问 Details 选项卡,以查看作业执行的详情:
您可以查看已执行作业的以下详情:
状态 :可以是以下任意一种:
- Pending: playbook 运行已创建,但尚未排队或启动。任何作业(不仅仅是 playbook 运行)会一直处于待处理状态,直到系统准备好运行为止。playbook 运行未准备就绪的原因包括:依赖项当前正在运行(所有依赖项都必须已完成才能执行下一个步骤),或者其配置的位置没有足够的运行容量。
- 等待 :playbook 运行处于等待执行的队列中。
- Running: playbook 运行当前正在进行中。
- 成功 :最后一个 playbook 运行成功。
- 失败 :最后一个 playbook 运行失败。
- 作业模板 :从中启动此作业的作业模板的名称。
- 清单 :选择针对此任务运行此清单。
- 项目 :与启动的作业关联的项目名称。
- 项目状态 :与启动作业关联的项目的状态。
- Playbook: 用于启动此作业的 playbook。
- 执行环境 :此作业中使用的执行环境的名称。
- 容器组 :此作业中使用的容器组的名称。
- credentials :此作业中使用的凭证。
- 额外变量 :创建作业模板时传递的任何额外变量都会在此处显示。
选择其中一个项目来查看对应的作业模板、项目和其他对象。
5.3.3. Playbook 访问和信息共享
自动化控制器使用自动化执行环境和 Linux 容器可防止 playbook 读取其项目目录之外的文件。
默认情况下,公开给容器内 ansible-playbook 进程的唯一数据是当前使用的项目。
您可以在 Job Settings 中自定义此功能,并将主机中的其他目录公开给容器中。
5.3.4. 隔离功能和变量
自动化控制器使用容器技术将作业相互隔离。默认情况下,只有当前项目公开给运行作业模板的容器。
如果需要公开其他目录,您必须自定义 playbook 运行。要配置作业隔离,您可以设置变量。
默认情况下,自动化控制器使用系统的 tmp
目录(默认为/tmp
)作为其暂存区域。这可以在 Jobs 设置 页面的 Job Execution Path 字段中更改,也可以在位于 /api/v2/settings/jobs
的 REST API 中进行更改:
AWX_ISOLATION_BASE_PATH = "/opt/tmp"
如果应该从主机向运行 playbook 的容器公开任何其他目录,您可以在 Paths 中指定它们,以公开给 Jobs Settings 页面的隔离作业 字段,或者在 /api/v2/settings/jobs
处的 REST API 中公开:
AWX_ISOLATION_SHOW_PATHS = ['/list/of/', '/paths']
如果您的 playbook 需要使用 AWX_ISOLATION_SHOW_PATHS
中定义的密钥或设置,请将此文件添加到 /var/lib/awx/.ssh
中。
此处描述的字段可在 Jobs 设置 页面中找到: