Ansible Tower 版本 3.1 包括了一个 Tower Search 功能,它是一个功能强大的搜索工具,为多个功能提供了搜索和过滤功能。
通过 Key 按钮的可扩展的 "cheat-sheet" 来提供可接受的搜索标准。
使用 Clear All 清除搜索标准。
这些搜索提示假设您不是搜索主机。本节中的大部分内容仍适用于主机,但会有一些微小的差别。通常的搜索语法包括一个字段(左边)和一个值(右边)。使用冒号来分隔搜索字段和搜索值。如果搜索中没有冒号(参见示例 3),则将其视为一个简单的字符串搜索,即 ?search=foobar
。以下是搜索语法示例:
name:localhost
在这个示例中,冒号前面的字符串代表要搜索的字段。如果该字符串不匹配 Fields 或 Related Fields 的内容,则对它的处理方式与示例 3 相同(进行字符串搜索)。冒号后面的字符串是您要在 name 属性中搜索的字符串。
organization.name:Default
这个示例显示了相关的字段搜索功能。左边中的句点将模式和字段分开。取决于搜索的深度/复杂性,您可能在左首部分使用多个句点。
foobar
简单字符串 (关键字) 搜索,使用 icontains
搜索在名称和描述项中查找该关键字的所有实例。如果在搜索关键字中有空格,(如 foo bar),则返回所有包含这两个关键字的结果。如果使用引号(如 "foo bar"),Tower 将把引号中的内容做为一个整体字符串进行搜索。特定名称搜索将会针对 API 名称进行。例如,用户界面中的 Management job
用户界面对应于 API 中的 system_job
。
organization:Default
这个示例展示了相关字段搜索,但没有指定机构字段的值。API 支持这个形式,这与简单的字符串搜索类似,但只针对机构进行搜索(对名称和描述进行 icontains
搜索)。
要找到特定字段的值,可引用 API 端点来获取关于选项及其有效值的信息。例如,如果想要搜索 /api/v2/jobs
-> type
字段,您可以通过执行一个对 /api/v2/jobs
的 OPTIONS 请求,在 API 的条目中查找 "type"
。此外,您可以通过滚动到每个屏幕的底部来查看相关的搜索。例如,对于 /api/v2/jobs
,相关的搜索会显示:
"related_search_fields": [
"modified_by__search",
"project__search",
"project_update__search",
"credentials__search",
"unified_job_template__search",
"created_by__search",
"inventory__search",
"labels__search",
"schedule__search",
"webhook_credential__search",
"job_template__search",
"job_events__search",
"dependent_jobs__search",
"launch_config__search",
"unifiedjob_ptr__search",
"notifications__search",
"unified_job_node__search",
"instance_group__search",
"hosts__search",
"job_host_summaries__search"
字段的值来自于 GET 请求的键。url
、related
和 summary_fields
没有被使用。相关字段来自于 OPTIONS 请求,但由不同属性提供。相关字段通过把来自 related_search_fields
项中的值末尾的 __search
拿掉后产生。
任何不是以来自字段或相关字段的值开始的搜索,都将视为通用字符串搜索。类似 localhost
的搜索会导致 UI 发送一个 ?search=localhost
作为查询参数发送到 API 端点。这是 icontains
搜索名称和描述字段的快捷方式。
对于 Tower 中的搜索,您应该了解以下信息:
目前不支持 OR 查询的语法。所有搜索术语在查询参数中都是 AND 逻辑。
搜索参数的左首部分可以被引号包括来支持使用带有空格的搜索字符串。
目前,字段中的值是预期在 GET 请求中返回的直接属性。当您根据其中一个值搜索时,Tower 会进行 __icontains
搜索。例如,name:localhost
将返回 ?name__icontains=localhost
。目前,Tower 会为每个字段值执行这个搜索,即使是 id
,虽然这并不理想。