文档

15. 库存

一个库存是可针对其启动作业的主机集合,与 Ansible 库存文件相同。 库存分为组,这些组包含实际主机。 组可以手动来源,通过在 Tower 中输入主机名,或者从 Ansible Tower 支持的云提供商之一获取。

注意

如果您有自定义动态库存脚本,或 Tower 目前不支持的云提供商,您也可以将其导入 Tower。 请参阅库存文件导入(在 _Ansible Tower 管理指南_ 中)。

此选项卡显示当前可用的库存列表。 库存列表可以按**名称**、**类型**或**组织**排序和搜索。

Inventories - home with examples

库存详细信息列表包括

  • 库存同步 (sync-button): 绿色表示库存中同步成功,红色表示同步失败。 单击此图标将显示最后五个库存源同步的同步状态和源信息(如果库存具有能够同步的源)。

_images/inventories-home-with-status.png
  • 状态点: 这显示了此库存最近作业的状态。

  • 名称: 库存名称。 单击库存名称将导航到所选库存的属性屏幕,其中显示库存的组和主机。(此视图也可以从edit button图标访问。)

  • 类型: 标识它是标准库存还是智能库存。

  • 组织: 库存所属的组织。

  • 操作: 以下操作可用于所选库存

    • 编辑 (edit button): 编辑所选库存的属性

    • 复制 (copy): 复制现有库存作为创建新库存的模板

    • 删除 (delete): 删除所选库存。_此操作不可逆!_

注意

如果删除其他工作项使用的项目,将打开一个消息,列出受删除影响的项目,并提示您确认删除。 一些屏幕将包含无效或先前已删除的项目,因此它们将无法运行。 下面是一个此类消息的示例

_images/warning-deletion-dependencies.png

15.1. 智能库存

智能库存是通过存储的搜索定义的主机集合,可以像标准库存一样查看,并易于与作业运行一起使用。 组织管理员对组织中的库存具有管理权限,可以创建智能库存。 智能库存由KIND=smart标识。 您可以使用与 Tower 搜索相同的方法定义智能库存。 InventorySource直接与库存相关联。

The Inventory 模型具有以下默认情况下为空但根据智能库存进行设置的新字段

  • kind设置为smart,用于智能库存

  • host_filter设置且kind设置为smart,用于智能库存。

The host 模型具有一个相关端点,smart_inventories,用于标识主机关联的所有智能库存集。 会员资格表在每次针对智能库存运行作业时都会更新。

注意

要更频繁地更新会员资格,您可以将基于文件的设置AWX_REBUILD_SMART_MEMBERSHIP更改为**True**(默认值为 False)。 这将在以下事件中更新会员资格

  • 添加新主机

  • 修改现有主机(更新或删除)

  • 添加新智能库存

  • 修改现有智能库存(更新或删除)

您可以查看实际库存,但不能编辑

  • 由于库存源同步而创建的主机和组的名称

  • 组记录不可编辑或移动

与普通清单不同,您无法从智能清单主机端点(/inventories/N/hosts/)创建主机。智能清单的管理员有权编辑名称、描述、变量等字段,以及删除权限,但没有修改 host_filter 的权限,因为这会影响哪些主机(在另一个清单中具有主要成员资格)包含在智能清单中。请注意,host_filter 仅适用于智能清单组织内清单中的主机。

要修改 host_filter,您需要是清单组织的组织管理员。组织管理员已经对组织内的所有清单具有隐含的“管理员”访问权限,因此,这不会授予他们之前没有的任何权限。

智能清单的管理员可以授予其他用户(不是您的组织的管理员)对智能清单的“使用”和“临时命令”等权限,这些权限将允许角色指示的操作,就像其他标准清单一样。但是,这不会赋予他们对主机(位于不同清单中)的任何特殊权限。它不会允许他们直接读取主机的权限,也不会允许他们查看 /#/hosts/ 下的其他主机,尽管他们仍然可以查看智能清单主机列表下的主机。

在某些情况下,您可以修改以下内容

  • 在包含清单源的清单上手动创建的新主机

  • 在作为清单源同步结果创建的组中

与智能清单关联的主机在查看时被显现。如果智能清单的结果包含多个具有相同主机名的主机,则仅包含匹配主机中的一个作为智能清单的一部分,按主机 ID 排序。

即使是本地系统管理员用户,主机和组上的变量也无法更改。

15.2. 清单插件

清单更新已从使用已弃用的清单脚本更改为使用动态生成的 YAML 文件,这些文件由其各自的清单插件解析。在 Ansible Tower 3.8 中,用户可以通过清单源 source_vars 向 Tower 直接提供新样式的清单插件配置,用于以下所有清单源

新创建的清单源配置将包含默认插件配置值。如果您希望在 3.8 中新创建的清单源与 3.7 源的输出匹配,则必须为该源应用一组特定的配置值。为了确保向后兼容性,Tower 使用每个源的“模板”来强制清单插件的输出为传统格式。请参阅 _Ansible Automation Platform 安装和参考指南_ 中的 支持的清单插件模板,了解每个源及其各自的模板,以帮助您迁移到新样式的清单插件输出。.. reused content end.

source_vars 包含 plugin: foo.bar.baz 作为顶级键,将在运行时根据 InventorySource 源替换为相应的完全限定的清单插件名称。例如,如果为 InventorySource 选择 ec2,则在运行时,插件将设置为 amazon.aws.aws_ec2

如果您已经设置了清单源,则 Tower 会根据源和 Ansible 版本自动切换到使用清单插件,但会继续维护之前在这些脚本中相同的内容。如果您需要控制正在使用的 Ansible 版本,则可以为清单源使用自定义虚拟环境。请参阅 使用 Ansible Tower 的 virtualenv

15.3. 添加新的清单

添加新的清单涉及多个组件。单击以下内容跳转到特定组件

要创建新的清单或智能清单

  1. 单击 add 按钮,然后选择要创建的清单类型。

清单类型由标签和创建表单顶部的标签行标识。

Inventories_create_new - create new inventory

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

  • 名称:输入适合此清单的名称。

  • 描述:输入适当的任意描述(可选)。

  • 组织:必填。从可用组织中选择。

  • 智能主机过滤器:(仅适用于智能清单)单击 search 按钮打开一个单独的动态主机窗口,以筛选此清单的主机。这些选项基于您选择的组织。

    过滤器类似于标签,标签用于筛选包含这些名称的某些主机。因此,要填充 智能主机过滤器 字段,您需要指定一个包含所需主机的标签,而不是实际选择主机本身。在 搜索 字段中输入标签并按 [Enter] 键。过滤器区分大小写。有关更多信息,请参阅 智能主机过滤器 部分。

    _images/inventories-create-new-inventory-dynamic-hosts.png
  • Insights 凭据:(仅适用于标准清单)如果清单与 Insights 一起使用,请输入相应的 Insights 凭据。

  • 实例组:单击 search 按钮打开一个单独的窗口。选择要在此清单上运行的实例组。如果列表很长,请使用搜索来缩小选项范围。

  • 变量:要应用于此清单中所有主机的变量定义和值。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。

Inventories_create_new_saved - create new inventory

  1. 完成后,单击 保存

Tower 保存新清单后,您可以继续配置权限、组、主机、源,以及查看已完成的任务(如果适用于清单类型)。有关更多说明,请参阅后续部分。

15.3.1. 添加权限

权限 选项卡允许您查看、授予、编辑和删除与用户和团队成员关联的权限。要为特定用户分配对此资源的权限

  1. 单击 权限 选项卡。

  2. 单击 add 按钮打开 添加用户/团队 窗口。

Add Permissions Form
  1. 指定将拥有访问权限的用户或团队,然后为他们分配特定角色

  1. 单击以选中用户或团队名称旁边的一个或多个复选框,以选择它们。

注意

您可以通过在 用户团队 选项卡之间导航而不保存来同时选择多个用户和团队。

完成选择后,该窗口将扩展,允许您从下拉菜单列表中为选择的每个用户或团队选择一个角色。

Roles Assignment for Selected Users

上面的示例显示了与清单关联的选项。不同的资源有不同的可用选项

  • 管理员 允许读取、运行和编辑权限(适用于所有资源)

  • 使用 允许在作业模板中使用资源(适用于除作业模板以外的所有资源)

  • 更新 允许通过 SCM 更新更新项目(适用于项目和清单)

  • 临时命令 允许使用临时命令(适用于清单)

  • 执行 允许启动作业模板(适用于作业模板)

  • 读取 允许只读访问(适用于所有资源)

提示

使用角色选择窗格中的 按钮显示每个角色的描述。有关更多信息,请参阅本指南中的 角色 部分。

  1. 选择要应用于所选用户或团队的角色。

注意

您可以通过在 用户团队 选项卡之间导航而不保存来为多个用户和团队分配角色。

Add Permissions - Examples of users and teams selected
  1. 查看为每个用户和团队分配的角色。

Add Permissions - Examples of roles applied
  1. 完成后,单击 保存添加用户/团队 窗口将关闭,以显示为每个用户和团队分配的已更新角色。

    Permissions tab with Role Assignments

要删除特定用户的权限,请单击其资源旁边的解除关联 (x) 按钮。

_images/permissions-disassociate.png

这将启动一个确认对话框,要求您确认解除关联。

_images/permissions-disassociate-confirm.png

15.3.2. 添加组

清单被划分为组,组可以包含主机和其他组,以及主机。组仅适用于标准清单,无法通过智能清单直接配置。您可以通过与标准清单一起使用的主机将现有组关联起来。标准清单有多种操作可用

  • 创建一个新组

  • 创建一个新主机

  • 在选定的清单上运行命令

  • 编辑清单属性

  • 查看组和主机的活动流

  • 获取构建清单的帮助

注意

清单源不再与组关联。早期版本中,生成的组和主机将是清单源组的子级。现在,生成的组是顶级组。这些组可能仍然有子组,并且所有这些生成的组可能都具有主机。

要为清单创建一个新组

  1. 单击 add 按钮打开 创建组 窗口。

Inventories_manage_group_add

  1. 在必填字段和可选字段中输入相应的详细信息

  • 名称:必填

  • 描述:输入适当的任意描述(可选)

  • 变量:输入要应用于此组中所有主机的定义和值。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。

  1. 完成后,单击 保存

15.3.2.1. 在组内添加组

要在组内添加组

  1. 单击 选项卡。

  2. 单击 add 按钮,然后选择是添加配置中已存在的组,还是创建一个新组。

  3. 如果创建新组,请在必填字段和可选字段中输入相应的详细信息

  • 名称:必填

  • 描述:输入适当的任意描述(可选)

  • 变量:输入要应用于此组中所有主机的定义和值。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。

  1. 完成后,单击 保存

创建组 窗口将关闭,新创建的组将显示为与为其创建的组关联的组列表中的条目。

Inventories add group subgroup

如果您选择添加现有组,则可用的组将出现在一个单独的选择窗口中。

Inventories add group existing subgroup

选择组后,它将显示为与该组关联的组列表中的条目。

5. 要在子组下配置其他组和主机,请从组列表中单击子组的名称,然后重复本节中描述的相同步骤。

Inventories add group subgroup emphasized

15.3.2.2. 查看或编辑清单组

从 Ansible Tower 3.5 开始,您可以一次查看所有库存组,也可以过滤以仅显示根组。如果一个库存组不是另一个组的子集,则该库存组被视为根组。

_images/inventories-groups-all-groups-view.png _images/inventories-groups-root-groups-view.png

您可能能够在不考虑依赖关系的情况下删除子组,但如果要删除根组,Tower 会查找依赖关系,例如任何子组或主机。如果您要删除的根组同时包含子组和主机,则会显示一个确认对话框,让您选择是删除根组及其所有子组和主机,还是将子组提升为顶级库存组,以及它们所属的主机。

_images/inventories-groups-delete-root-with-children.png

如果根组的子组没有主机,则确认对话框只会询问您是否要删除所有内容,还是提升您的组。

_images/inventories-groups-delete-root-with-child.png

15.3.3. 添加主机

您可以为库存配置主机,以及为组和组内的组配置主机。要配置主机

  1. 点击主机选项卡。

  2. 点击添加按钮,然后选择是添加一个已存在于您的配置中的主机,还是创建一个新的主机。

  3. 如果创建新的主机,请选择切换按钮按钮以指定是否在运行作业时包含此主机。

  1. 在必填字段和可选字段中输入相应的详细信息

  • 主机名称:必填

  • 描述:输入适当的任意描述(可选)

  • 变量:输入要应用于此组中所有主机的定义和值。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。

  1. 完成后,单击 保存

创建主机窗口会关闭,新创建的主机将显示为与创建该主机的组关联的主机列表中的一个条目。

Inventories add group host

注意

您还可以从这个屏幕运行临时命令。有关更多详细信息,请参阅运行临时命令

如果您选择添加现有主机,可用的主机将出现在一个单独的选择窗口中。

Inventories add existing host

选择主机后,它将显示为与组关联的主机列表中的一个条目。

6. 要为主机配置事实和附加组,请点击主机列表中的主机名称。

Inventories add group host emphasized

这将打开所选主机的详细信息选项卡。

Inventories add group host details

  1. 点击事实选项卡以输入要收集的事实。有关事实的更多信息,请参阅事实缓存部分。

  2. 点击选项卡为主机配置组。

  1. 点击添加按钮将主机与现有组关联。

可用的组将出现在一个单独的选择窗口中。

_images/inventories-add-group-hosts-add-groups.png
  1. 点击选择要与主机关联的组,然后点击保存

关联组后,它将显示为与主机关联的组列表中的一个条目。

  1. 如果使用主机运行作业,则可以在主机的已完成作业选项卡中查看有关这些作业的详细信息,并点击展开以查看有关每个作业的详细信息。

_images/inventories-add-host-view-completed-jobs.png

15.3.4. 添加源

要使用库存插件,您必须提供库存源。大多数情况下,这是一个包含主机信息的文件或一个包含插件选项的 YAML 配置文件。将源添加到库存只适用于标准库存。智能库存从与其关联的标准库存继承其源。要配置库存的源

  1. 在要添加源的库存中,点击选项卡。

  2. 点击添加按钮。

这将打开创建源窗口。

Inventories create source

  1. 在必填字段和可选字段中输入相应的详细信息

  • 名称:必填

  • 描述:输入适当的任意描述(可选)

  • :为您的库存选择一个源。有关每个源以及输入适当信息的详细信息,请参阅库存源部分。

  • Ansible 环境:此字段仅在设置了自定义虚拟环境 (venv) 时才会出现。选择要使用其运行库存导入的 venv。有关设置自定义 venv 的详细信息,请参阅使用 Ansible Tower 的 virtualenv

_images/inventories-edit-source-details-venv.png
  1. 完成所选库存源所需的 信息后,您可以继续可选地指定其他常用参数,例如详细程度、主机过滤器和变量。

注意

区域实例过滤器仅按组分组字段已在 Ansible Tower 3.8 中删除。

  1. 详细程度下拉菜单中选择任何库存源的更新作业的适当输出级别。

  2. 使用主机过滤器字段指定仅导入 Tower 的匹配主机名称。

  3. 启用变量中,指定 Tower 从给定的主机变量字典中检索启用状态。可以使用点表示法指定启用变量,如 'foo.bar',在这种情况下,查找将遍历嵌套字典,等效于:from_dict.get('foo', {}).get('bar', default)

  4. 如果您在启用变量字段中指定了主机变量字典,则可以在导入时提供一个启用值。例如,如果enabled_var='status.power_state'enabled_value='powered_on',以及以下主机变量,则主机将被标记为启用

{
"status": {
"power_state": "powered_on",
"created": "2020-08-04T18:13:04+00:00",
"healthy": true
},
"name": "foobar",
"ip_address": "192.168.2.1"
}

如果power_state的值不是powered_on,则在导入 Tower 时,主机将被禁用。如果找不到该键,则主机将被启用。

  1. 所有云库存源都有以下更新选项

  • 覆盖:如果选中,则先前存在于外部源上但现在已删除的任何主机和组将从 Tower 库存中删除。未由库存源管理的主机和组将被提升到下一个手动创建的组,或者如果没有手动创建的组可以提升到,则它们将保留在库存的“all”默认组中。

如果未选中,则外部源上找不到的本地子主机和组将不受库存更新过程的影响。

  • 覆盖变量:如果选中,则子组和主机的所有变量将被删除并替换为外部源上找到的变量。如果未选中,则将执行合并,将本地变量与外部源上找到的变量合并。

  • 启动时更新:每次使用此库存运行作业时,在执行作业任务之前从选定的源刷新库存。为了避免作业溢出(如果作业的生成速度快于库存同步速度),选择此选项可以允许您配置缓存超时,以便在一定时间内缓存先前的库存同步。

“启动时更新”设置指的是项目和库存的依赖关系系统,它不会特别排除两个作业同时运行。如果指定了缓存超时,则第二个作业的依赖关系将被创建,它将使用第一个作业生成的项目和库存更新。然后,两个作业都在继续执行之前等待该项目和/或库存更新完成。如果它们是不同的作业模板,那么如果系统有能力这样做,它们就可以同时启动并运行。如果您打算使用 Tower 的配置回调功能,并使用动态库存源,则应为库存组设置“启动时更新”。

  1. 查看您的条目和选择,并在完成后点击保存。这允许您配置其他详细信息,例如通知和计划。

注意

通知选项卡仅在保存新创建的源后才会出现。

_images/inventories-create-source-with-notifications-tab.png
  1. 要配置源的通知,请点击通知选项卡。

  1. 如果已设置通知,请使用切换开关启用或禁用要与您的特定源一起使用的通知。有关更多详细信息,请参阅启用和禁用通知

  2. 如果尚未设置通知,请参阅通知以了解更多信息。

  1. 要配置与该库存源关联的计划,请点击计划选项卡。

  1. 如果已设置计划,请查看、编辑或启用/禁用您的计划首选项。

  2. 如果尚未设置计划,请参阅计划以了解更多信息。

  1. 查看您的条目和选择,并在完成后点击保存

定义源后,它将显示为与库存关联的源列表中的一个条目。从选项卡,您可以对单个源执行同步,或者一次同步所有源。您还可以执行其他操作,例如计划同步过程,以及编辑或删除源。

Inventories view sources

15.3.4.1. 库存源

选择与可以输入主机的库存类型匹配的源

15.3.4.1.1. 来自项目的源

一个来自项目的源的库存意味着它使用与其绑定的项目中的 SCM 类型。例如,如果项目的源来自 GitHub 或 Red Hat Insights 项目,那么库存将使用相同的源。

  1. 要配置项目源库存,请从源字段中选择来自项目的源

  2. 创建源窗口将扩展,并包含其他字段。输入以下详细信息

  • 凭据:可选地指定要用于此源的凭据。

  • 项目:必填。指定此库存用作其源的项目。点击搜索按钮从项目列表中选择。如果列表很长,请使用搜索来缩小选项范围。

  • 库存文件:必填。选择与源项目关联的库存文件。如果尚未填充,则可以在下拉菜单中的文本字段中键入它来过滤无关的文件类型。除了平面文件库存之外,您还可以指向目录或库存脚本。

_images/inventories-create-source-sourced-from-project-filter.png
  1. 您可以可选地指定详细程度、主机过滤器、启用变量/值和更新选项,如添加源主要步骤中所述。

  2. 除了云库存来源提供的更新选项外,您还可以指定是否在项目更改时更新。选中 **在项目更新时更新** 选项,以便在执行作业任务之前,每次项目更新(其中 SCM 修订版本发生更改)后,从选定的来源刷新库存。有关更多详细信息,请参阅 _Ansible Tower 管理指南_ 中的 在项目更新时更新

  3. 为了传递到自定义库存脚本,您可以在 **环境变量** 字段中设置环境变量(可选)。

Inventories - create source - sourced from project example

注意

如果您从 SCM 执行自定义库存脚本,请确保在您的上游源代码控制中,在脚本上设置执行位(即 chmod +x)。如果您没有这样做,Tower 将在执行时抛出 [Errno 13] Permission denied 错误。

15.3.4.1.2. Amazon Web Services EC2
  1. 要配置 AWS EC2 来源的库存,请从来源字段中选择 **Amazon EC2**。

  2. 创建源窗口将扩展,并包含其他字段。输入以下详细信息

  • **凭据:** 可选地从现有凭据中选择(有关更多信息,请参阅 凭据)。

    如果 Tower 在具有分配的 IAM 角色的 EC2 实例上运行,则可以省略凭据,并将使用实例元数据中的安全凭据。有关使用 IAM 角色的更多信息,请参阅 Amazon 的 Amazon EC2 文档中的 IAM 角色

  1. 您可以可选地指定详细程度、主机过滤器、启用变量/值和更新选项,如添加源主要步骤中所述。

  2. 使用 **来源变量** 字段来覆盖在 aws_ec2 插件中找到的变量,并由库存更新脚本使用。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的详细说明,请查看 Ansible 文档中的 aws_ec2 库存插件

Inventories - create source - AWS EC2 example

注意

如果您只使用 include_filters,AWS 插件将始终返回所有主机。要正确使用它,or 上的第一个条件必须在 filters 上,然后在 include_filters 列表上构建其余的 OR 条件。

15.3.4.1.3. Google Compute Engine
  1. 要配置 Google 来源的库存,请从来源字段中选择 **Google Compute Engine**。

  2. 创建来源窗口将展开,显示所需的 **凭据** 字段。从现有凭据中选择。有关更多信息,请参阅 凭据

Inventories - create source - GCE example

  1. 您可以可选地指定详细程度、主机过滤器、启用变量/值和更新选项,如添加源主要步骤中所述。

15.3.4.1.4. Microsoft Azure 资源管理器
  1. 要配置 Azure 资源管理器来源的库存,请从来源字段中选择 **Microsoft Azure 资源管理器**。

  2. 创建来源窗口将展开,显示所需的 **凭据** 字段。从现有凭据中选择。有关更多信息,请参阅 凭据

  3. 您可以可选地指定详细程度、主机过滤器、启用变量/值和更新选项,如添加源主要步骤中所述。

  4. 使用 **来源变量** 字段来覆盖在 azure_rm.ini 中找到的变量,并由库存更新脚本使用。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的详细说明,请查看 Ansible Collections GitHub 仓库中的 azure_rm.ini 库存脚本

Inventories - create source - Azure RM example

15.3.4.1.5. VMware vCenter
  1. 要配置 VMWare 来源的库存,请从来源字段中选择 **VMware vCenter**。

  2. 创建来源窗口将展开,显示所需的 **凭据** 字段。从现有凭据中选择。有关更多信息,请参阅 凭据

  3. 您可以可选地指定详细程度、主机过滤器、启用变量/值和更新选项,如添加源主要步骤中所述。

  4. 使用 **来源变量** 字段来配置此库存来源。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的详细说明,请参阅 Ansible Collections 文档中的 VMware Guest 库存来源

从 Ansible 2.9 开始,VMWare 属性已从小写更改为 camelCase。Tower 为顶级键提供了别名,但嵌套属性中的小写键已被弃用。有关从 Ansible 2.9 开始的有效和支持的属性列表,请参阅 VMWare 库存导入的 主机变量主要文档

Inventories - create source - VMWare example

15.3.4.1.6. Red Hat Satellite 6
  1. 要配置 Red Hat Satellite 来源的库存,请从来源字段中选择 **Red Hat Satellite**。

  2. 创建来源窗口将展开,显示所需的 **凭据** 字段。从现有凭据中选择。有关更多信息,请参阅 凭据

  3. 您可以可选地指定详细程度、主机过滤器、启用变量/值和更新选项,如添加源主要步骤中所述。

  4. 使用 **来源变量** 字段来指定 foreman 库存来源使用的参数。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的详细说明,请参阅 Ansible 文档中的 theforeman.foreman.foreman - Foreman 库存来源

Inventories - create source - RH Satellite example

如果您遇到 Tower 库存没有 Satellite 的“相关组”的问题,您可能需要在库存来源中定义这些变量。有关详细信息,请参阅 _Ansible 自动化平台安装和参考指南_ 中的 Red Hat Satellite 6 的库存插件模板示例。

如果您看到消息 "no foreman.id" variable(s) when syncing the inventory,请参阅 Red Hat 客户门户网站上的解决方案:https://access.redhat.com/solutions/5826451。请务必使用您的客户凭据登录以访问完整文章。

15.3.4.1.7. OpenStack
  1. 要配置 OpenStack 来源的库存,请从来源字段中选择 **OpenStack**。

  2. 创建来源窗口将展开,显示所需的 **凭据** 字段。从现有凭据中选择。有关更多信息,请参阅 凭据

  3. 您可以可选地指定详细程度、主机过滤器、启用变量/值和更新选项,如添加源主要步骤中所述。

  4. 使用 **来源变量** 字段来覆盖在 openstack.yml 中找到的变量,并由库存更新脚本使用。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。有关这些变量的详细说明,请查看 Ansible 集合文档中的 OpenStack 库存来源

Inventories - create source - OpenStack example

15.3.4.1.8. Red Hat 虚拟化
  1. 要配置 Red Hat 虚拟化来源的库存,请从来源字段中选择 **Red Hat 虚拟化**。

  2. 创建来源窗口将展开,显示所需的 **凭据** 字段。从现有凭据中选择。有关更多信息,请参阅 凭据

  3. 您可以可选地指定详细程度、主机过滤器、启用变量/值和更新选项,如添加源主要步骤中所述。

Inventories - create source - RHV example

注意

Red Hat 虚拟化 (ovirt) 库存来源请求默认情况下是安全的。要更改此默认设置,请在 source_variables 中将键 ovirt_insecure 设置为 **true**,该设置仅在 /api/v2/inventory_sources/N/ 终结点处的库存来源的 API 详细信息中提供。

15.3.4.1.9. Ansible Tower
  1. 要配置 Ansible Tower 来源的库存,请从来源字段中选择 **Ansible Tower**。

  2. 创建来源窗口将展开,显示所需的 **凭据** 字段。从现有凭据中选择。有关更多信息,请参阅 凭据

  3. 您可以可选地指定详细程度、主机过滤器、启用变量/值和更新选项,如添加源主要步骤中所述。

_images/inventories-create-source-atower-example.png
15.3.4.1.10. 自定义脚本

如果您的管理员添加了自定义动态库存脚本,Tower 允许您使用它。

  1. 要配置自定义脚本来源的库存,请从来源字段中选择 **自定义脚本**。

  2. 创建源窗口将扩展,并包含其他字段。输入以下详细信息

  • **凭据:** 您可以为自定义来源提供凭据(可选)。凭据类型限制为云和网络。有关更多信息,请参阅 自定义凭据类型

  • **自定义库存脚本:** 必需。从现有库存脚本中选择(有关更多信息,请参阅 自定义库存脚本)。

  1. 您可以可选地指定详细程度、主机过滤器、启用变量/值和更新选项,如添加源主要步骤中所述。

  2. 使用 **环境变量** 字段在环境中设置变量,以便库存更新脚本使用。这些变量应特定于您编写的脚本。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。

Inventories - create source - custom script example

有关同步或使用自定义库存脚本的更多信息,请参阅 _Ansible Tower 管理指南_ 中的 自定义库存脚本

15.3.5. 查看已完成的作业

如果库存用于运行作业,您可以在库存的 **已完成的作业** 选项卡中查看有关这些作业的详细信息,然后单击 **展开** 以查看有关每个作业的详细信息。

Inventories view completed jobs

15.3.5.1. 智能主机筛选器

您可以使用搜索筛选器来填充库存的主机。此功能利用了事实搜索功能的功能。

在作业模板运行期间,由 Ansible 剧本生成的将始终存储在 Tower 的数据库中,只要每个作业模板都设置了 use_fact_cache=True。新事实将与现有事实合并,并且是针对每台主机的。这些存储的事实可用于使用 host_filterGET 查询参数通过 /api/v2/hosts 终结点筛选主机。例如:/api/v2/hosts?host_filter=ansible_facts__ansible_processor_vcpus=8

host_filter 参数允许

  • 通过 () 进行分组

  • 使用布尔运算符 and

    • __ 用于引用关系字段中的相关字段

    • __ 用于 ansible_facts 以分隔 JSON 键路径中的键

    • [] 用于表示路径规范中的 JSON 数组

    • "" 可在值中使用,当需要在值中使用空格时

  • “经典” Django 查询可以嵌入在 host_filter

示例

/api/v2/hosts/?host_filter=name=localhost
/api/v2/hosts/?host_filter=ansible_facts__ansible_date_time__weekday_number="3"
/api/v2/hosts/?host_filter=ansible_facts__ansible_processor[]="GenuineIntel"
/api/v2/hosts/?host_filter=ansible_facts__ansible_lo__ipv6[]__scope="host"
/api/v2/hosts/?host_filter=ansible_facts__ansible_processor_vcpus=8
/api/v2/hosts/?host_filter=ansible_facts__ansible_env__PYTHONUNBUFFERED="true"
/api/v2/hosts/?host_filter=(name=localhost or name=database) and (groups__name=east or groups__name="west coast") and ansible_facts__an

您可以按主机名、组名和 Ansible 事实搜索 host_filter

组搜索的格式为

groups.name:groupA

事实搜索的格式为

ansible_facts.ansible_fips:false

您还可以执行智能搜索搜索,其中包括主机名和主机描述。

host_filter=name=my_host

如果 host_filter 中的搜索词是字符串类型,要使值成为数字(例如 2.66)或 JSON 关键字(例如 nulltruefalse)有效,请在值周围添加双引号,以防止 Tower 错误地将其解析为非字符串。

host_filter=ansible_facts__packages__dnsmasq[]__version="2.66"

15.4. 运行临时命令

要运行临时命令

  1. 从主机或组列表中选择一个清单源。清单源可以是单个组或主机、多个主机的选择或多个组的选择。

ad hoc-commands-inventory-home

  1. 单击 adhoc 按钮。

将打开“执行命令”窗口。

_images/ad-hoc-run-execute-command.png
  1. 输入以下字段的详细信息

  • 模块:选择 Tower 支持针对其运行命令的模块之一。

    命令

    apt_repository

    mount

    win_service

    shell

    apt_rpm

    ping

    win_updates

    yum

    service

    selinux

    win_group

    apt

    group

    setup

    win_user

    apt_key

    user

    win_ping

  • 参数:提供要与您选择的模块一起使用的参数。

  • 限制:输入用于定位清单中主机的限制。要定位清单中的所有主机,请输入 all*,或将字段留空。这将自动填充在单击启动按钮之前在先前视图中选择的任何内容。

  • 机器凭据:选择用于访问远程主机以运行命令的凭据。选择包含 Ansible 登录远程主机所需的用户名和 SSH 密钥或密码的凭据。

  • 详细程度:选择标准输出的详细程度级别。

  • 分叉:如果需要,选择执行命令时要使用的并行或同时进程数。

  • 显示更改:选择启用在标准输出中显示 Ansible 更改。默认值为 OFF。

  • 启用特权升级:如果启用,则使用管理员权限运行剧本。这相当于将 --become 选项传递给 ansible 命令。

  • 额外变量:提供在运行此清单时要应用的额外命令行变量。使用 JSON 或 YAML 语法输入变量。使用单选按钮在两者之间切换。

ad hoc-commands-inventory-run-command

  1. 单击 launch-adhoc 按钮以运行此临时命令。

结果将显示在“详细信息”窗格和“标准输出”窗口中。

ad hoc-commands-inventory-results-example