第 18 章 清单


Red Hat Ansible Automation Platform 使用清单文件,根据您以逻辑方式组织的基础架构中的受管节点或主机列表进行工作。您可以使用 Red Hat Ansible Automation Platform 安装程序清单文件指定您的安装场景,并描述 Ansible 的主机部署。通过使用清单文件,Ansible 可以通过一个命令管理大量主机。清单还可以通过减少您指定的命令行选项数目来更有效地使用 Ansible。清单被分成不同的组,这些组包含主机。

组可以通过将主机名输入到自动化控制器或其支持的云供应商来手动提供。

注意

如果您有自定义动态清单脚本,或者尚未在自动化控制器中受到原生支持的云供应商,您也可以将其导入到自动化控制器中。

如需更多信息,请参阅 自动化控制器管理指南中的 清单文件导入

在导航面板中,选择 Resources InventoriesInventories 窗口显示当前可用的清单列表。您可以根据 名称类型Organization 排序清单列表。

Inventories - home

清单详情页面 包括:

  • Name :清单名称。
  • Status

状态为:

  • 成功 :清单源同步成功完成
  • disabled: 没有添加到清单中的清单源
  • Error: 当清单源同步完成并出错时

    • Type: 标识它是标准清单、智能清单还是构建的清单。
    • Organization: 清单所属的机构。
    • Actions: 以下操作可用于所选清单:
  • 编辑 Edit :编辑所选清单的属性
  • 复制 Copy :制作现有清单的副本作为创建新清单的模板

单击 Inventory 名称,以显示所选清单的 Details 页面,其中显示清单的组和主机。

18.1. 智能清单

智能清单是由存储的搜索定义的主机集合,可以像标准清单一样查看,可轻松用于作业运行。机构管理员对其机构中的清单具有 admin 权限,并可创建智能清单。

智能清单由 KIND=smart 标识。

您可以使用与搜索相同的方法定义智能清单。InventorySource 与清单直接关联。

注意

智能清单已弃用,并将在以后的发行版本中删除。考虑移至构建的清单以进行功能增强和替换。

清单 模型具有以下新字段,默认为空白,但会针对智能清单进行相应设置:

  • 对于智能清单,kind 设置为 smart
  • host_filter 是针对智能清单设置的 AND kind,设置为 smart

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

注意

要更频繁地更新成员资格,您可以将 AWX_REBUILD_SMART_MEMBERSHIP 文件的设置改为 True。(默认为 False)。如果发生以下事件,这个更新成员资格:

  • 添加了新主机
  • 修改(更新或删除)现有主机
  • 添加了新智能清单
  • 修改(更新或删除)现有智能清单

您可以在不编辑的情况下查看清单:

  • 清单源同步后创建的主机和组的名称。
  • 组记录无法编辑或移动。

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

host_filter 仅适用于智能清单机构中清单内的主机。

要修改 host_filter,您必须是清单机构的机构管理员。机构管理员具有对机构内所有清单的隐式"管理员"访问权限,因此,这不会使他们尚未拥有的任何权限。

智能清单的管理员可以向智能清单授予其他用户(不是您机构的管理员)权限。它们允许角色指示的操作,与其他标准清单一样。但是,这不会为主机(位于不同的清单中)授予任何特殊权限。它不允许主机直接读取权限,或者允许它们查看 /#/hosts/ 下的其他主机,但它们仍然可以查看智能清单主机列表下的主机。

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

  • 使用清单源在清单上手动创建的新主机。
  • 清单源同步后创建的组。
  • 主机和组上的变量不可更改,即使作为本地系统管理员也是如此。

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

18.1.1. 智能主机过滤器

您可以使用搜索过滤器为清单填充主机。此功能使用事实搜索功能。

每当每个作业模板设置了 use_fact_cache=True 时,自动化控制器会在数据库中存储由 Ansible Playbook 生成的事实。新事实与现有事实合并,并按主机合并。这些存储的事实可用于使用 GET 查询参数 host_filter 使用 /api/v2/hosts 端点过滤主机。

例如:

/api/v2/hosts?host_filter=ansible_facts__ansible_processor_vcpus=8

host_filter 参数允许:

  • 使用()进行分组
  • 使用布尔值和运算符:

    • __ 用于引用关系字段中的相关字段
    • ansible_facts 中的 __ 用于分隔 JSON 密钥路径中的键
    • '[] 用于表示路径规格中的 json 数组
    • 当值中需要空格时,"" 可以在值中使用
  • "Classic" 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)有效,请在值之间添加双引号以防止控制器将其解析为非字符串:

host_filter=ansible_facts__packages__dnsmasq[]__version="2.66"

18.1.2. 使用 ansible_facts 定义主机过滤器

使用以下步骤在创建智能清单时使用 ansible_facts 定义主机过滤器。

流程

  1. 在导航面板中,选择 Resources Inventories
  2. Add 列表中选择 Add Smart Inventory
  3. Create new Smart inventory 页面中,点 Smart host filter 字段中的 Search 图标。这会打开一个窗口,用于过滤此清单的主机。

    Dfine host filter

  4. 在搜索菜单中,将搜索条件从 Name 更改为 Advanced,然后从 Key 字段中选择 ansible_facts

    Define host filter facts

    如果要添加以下 ansible 事实:

    /api/v2/hosts/?host_filter=ansible_facts__ansible_processor[]="GenuineIntel"

    在搜索字段中,输入 ansible_processor[]="GenuineIntel" (在值前面没有额外空格或 __ ),然后单击 Enter

    image

    此时会显示指定 ansible 事实的搜索条件。

    要根据 regex 变量过滤,请参阅 ansible.builtin.regex_search 过滤器 文档,以及 KCS 文章,如何在创建智能清单时使用 regex 过滤没有特定变量名称的主机

  1. Select 将其添加到 Smart host 过滤器 字段。
  2. 点击 Save
  3. 新智能清单的 Details 选项卡会打开,并在 Smart host filter 字段中显示指定的 ansible 事实。
  4. Details 视图中,您可以通过点 Edit and delete existing filters、清除所有现有过滤器或添加新过滤器来编辑 Smart host filter 字段。

    image

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.